PageSourceSearch

https://vz.ru/static/js/push.js?v3

js vz.ru collected 2026-10-01 07:43:20 UTC 5,969 bytes, 142 lines download raw bytes

1function sendSubscriptionToServer(subscription, type)
2{
3    var xhttp = new XMLHttpRequest();
4    xhttp.open('POST', '/subscribe-device/?type=' + type, true);
5    xhttp.send(JSON.stringify(subscription));
6    console.log(JSON.stringify(subscription));
7}
8
9var pushId = "web.ru.vz";
10
11var pushNotification = function () {
12    "use strict";
13
14    if ('safari' in window && 'pushNotification' in window.safari) {
15        var permissionData = window.safari.pushNotification.permission(pushId);
16        checkRemotePermission(permissionData);
17    } else {
18        console.log("Push notifications not supported.");
19    }
20};
21
22var checkRemotePermission = function (permissionData) {
23    "use strict";
24
25    if (permissionData.permission === 'default') {
26        console.log("The user is making a decision");
27        window.safari.pushNotification.requestPermission(
28            'https://vz.ru/safaripush',
29            pushId,
30            {},
31            checkRemotePermission
32        );
33    }
34    else if (permissionData.permission === 'denied') {
35        console.dir(arguments);
36    }
37    else if (permissionData.permission === 'granted') {
38        console.log("The user said yes, with token: "+ permissionData.deviceToken);
39    }
40};
41
42function urlBase64ToUint8Array(base64String) {
43    var padding = '='.repeat((4 - base64String.length % 4) % 4);
44    var base64 = (base64String + padding)
45        .replace(/\-/g, '+')
46        .replace(/_/g, '/');
47
48    var rawData = window.atob(base64);
49    var outputArray = new Uint8Array(rawData.length);
50
51    for (var i = 0; i < rawData.length; ++i) {
52        outputArray[i] = rawData.charCodeAt(i);
53    }
54    return outputArray;
55}
56
57if ('serviceWorker' in navigator)
58{
59	  
60	  if ('Notification' in window) {
61		    var messaging = firebase.messaging();
62		    messaging.usePublicVapidKey('BNSchQGH0uFsY0zDhx2wgdu78UqcC4WLpEKDkKj7snVnLDRkJQLIUMZ4Z_
62nMpuT6zjDoi5uNDiCnYWxDvjBozeQ');
63
64		    // пользователь уже разрешил получение уведомлений
65		    // подписываем на уведомления если ещё не подписали
66	        messaging.requestPermission()
67		        .then(function () {
68		            // получаем ID устройства
69		            messaging.getToken()
70		                .then(function (currentToken) {
71		                    console.log(currentToken);
72
73		                    if (currentToken) {
74		                    	if (window.localStorage.getItem('sentFirebaseMessagingToken') == currentToken) {
75			                        console.warn('Токен уже загеристрирован.');
76		                    	} else {
77		                    		window.localStorage.setItem('sentFirebaseMessagingToken', currentToken);
78		                    		sendSubscriptionToServer('https://fcm.googleapis.com/fcm/send/' + currentToken, 'subscribe');
79		                    	}
80		                        //sendTokenToServer(currentToken);
81		                    } else {
82		                        console.warn('Не удалось получить токен.');
83		                        //setTokenSentToServer(false);
84		                    }
85		                })
86		                .catch(function (err) {
87		                    console.warn('При получении токена произошла ошибка.', err);
88		                    //setTokenSentToServer(false);
89		                });
90		    })
91		    .catch(function (err) {
92		        console.warn('Не удалось получить разрешение на показ уведомлений.', err);
93		        navigator.serviceWorker.register('/firebase-messaging-sw.js?v2').then(function (r)
94		        {
95		            navigator.serviceWorker.ready.then(function (registration)
96		            {
97		                console.log('ServiceWorker registration successful with scope: ', registration.scope);
98		                
99		                navigator.serviceWorker.ready.then(function(reg) {  
100		                    // Do we already have a push message subscription?  
101		                    reg.pushManager.getSubscription()  
102		                      .then(function(subscription) {  
103		                      
104		                    	  if (!subscription) {  
105		                              registration.pushManager.subscribe({userVisibleOnly : true, applicationServerKey: urlBase64ToUint8Array('BNSchQGH0uFsY0zDhx2wgdu78UqcC4WLpEKDkKj7snVnLDRkJQLIUMZ4Z_
105nMpuT6zjDoi5uNDiCnYWxDvjBozeQ')}).then(function (subscription) {
106		                                  var subscriptionId = subscription.subscriptionId;
107		                                  if (!subscriptionId) { subscriptionId = subscription.endpoint; }
108
109		                                  return sendSubscriptionToServer(subscriptionId, 'subscribe');
110		                              });
111		                    	  } else {
112		                              var subscriptionId = subscription.subscriptionId;
113		                              if (!subscriptionId) { subscriptionId = subscription.endpoint; }
114		                    		  
115		                        	  console.log("subscription: " + subscriptionId);
116		                    	  }
117		                      }).catch(function(err) {  
118		                        console.log('Error during getSubscription()', err);  
119		                      });
120		                });
121		                
122		            });
123		        }).catch(function (err) {
124		            console.log('ServiceWorker registration failed: ', err);
125		        });
126		    });
127	  }
128} else {
129    pushNotification();
130}
131
132var deferredPrompt;
133
134window.addEventListener('beforeinstallprompt', (e) => {
135  // Prevent Chrome 67 and earlier from automatically showing the prompt
136  //e.preventDefault();
137  // Stash the event so it can be triggered later.
138  deferredPrompt = e;
139  //btnAdd.style.display = 'block';
140});
141  
142    

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.