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.