1let version = '2.0.2'; 2let domain = document.domain; 3let swFile = 'firebase-messaging-sw.js'; 4let swScope = 'firebase-cloud-messaging-push-scope'; 5 6function FireBase() { 7 this._config = {}; 8 this._vapidKey = ''; 9 if (typeof fbregUrlServer !== 'undefined') { 10 this._urlServer = fbregUrlServer; 11 } else { 12 this._urlServer = 'https://fbreg.sputniknews.com/'; 13 } 14} 15 16FireBase.prototype.setConfig = function (config) { 17 this._config = config; 18} 19 20FireBase.prototype.setVapidKey = function (vapidKey) { 21 this._vapidKey = vapidKey; 22} 23 24FireBase.prototype.main = function (libFireBase) { 25 this.checkPushSupport() 26 .then(() => { 27 if (this.getPermission() == "granted" || this.getPermission() == "default") { 28 let cookieVersion = 3; 29 if (GLOBAL.design == "tr" || GLOBAL.design == "eg" || GLOBAL.design == "br") { 30 cookieVersion = 4; 31 } 32 if (GLOBAL.design == "vn") { 33 cookieVersion = 5; 34 } 35 if (GLOBAL.design == "es") { 36 cookieVersion = 7; 37 } 38 if (this.getPermission() == "granted" && this.checkExistCookie('fb_delsw' + cookieVersion) === false) { 39 this.unSubscribeFromOldPush(); 40 this.setCookie('fb_delsw' + cookieVersion, 1, 3600 * 1000 * 24 * 30, '/'); 41 } 42 if (this.checkExistCookie('fb_check' + cookieVersion) === false) { 43 this.setSubscribe(libFireBase); 44 this.setCookie('fb_check' + cookieVersion, 1, 3600 * 1000 * 24 * 30, '/'); 45 } 46 } 47 }) 48 .catch(() => { 49 50 }) 51} 52 53FireBase.prototype.setSubscribe = function (libFireBase) { 54 libFireBase.initializeApp(this._config); 55 const messaging = firebase.messaging(); 56 messaging.usePublicVapidKey(this._vapidKey); 57 58 messaging.getToken().then((currentToken) => { 59 if (currentToken) { 60 console.log("new Token:", currentToken); 61 this._sendTokenToServer(currentToken); 62 } else { 63 console.log('No Instance ID token available. Request permission to generate one.'); 64 } 65 }).catch((err) => { 66 console.log('An error occurred while retrieving token. ', err); 67 }); 68 69 messaging.onTokenRefresh(() => { 70 messaging.getToken().then((refreshedToken) => { 71 console.log('Token refreshed.'); 72 this._sendTokenToServer(refreshedToken); 73 }).catch((err) => { 74 console.log('Unable to retrieve refreshed token ', err); 75 }); 76 }); 77} 78 79FireBase.prototype.checkPushSupport = function () { 80 return new Promise((resolve, reject) => { 81 if (!('serviceWorker' in navigator)) { 82 console.log('sw_not_found'); 83 reject(); 84 } 85 if (!('PushManager' in window)) { 86 console.log('fb_not_found'); 87 reject(); 88 } 89 console.log('fb_supported'); 90 resolve(); 91 }); 92} 93 94FireBase.prototype.checkExistCookie = function (name, postfix) { 95 postfix = postfix ? '_' + postfix : ''; 96 let result = false;
97 let value = this.getCookie(name); 98 99 if (value) { 100 result = true; 101 console.log('fb_cookie_' + name + '_exist' + postfix, value); 102 } else { 103 console.log('fb_cookie_' + name + '_noexist' + postfix, value); 104 } 105 106 return result; 107} 108 109FireBase.prototype.getPermission = function (data, postfix) { 110 postfix = postfix ? '_' + postfix : ''; 111 let permision = Notification.permission; 112 console.log('fb_permission_' + permision + postfix); 113 114 return permision; 115} 116 117FireBase.prototype._sendTokenToServer = function (currentToken) { 118 let body = { 119 'token' : currentToken, 120 'domain' : domain 121 }; 122 let post = { 123 method : 'POST', headers : { 124 'Content-Type' : 'application/json;charset=utf-8' 125 }, body : JSON.stringify(body) 126 }; 127 fetch(this._urlServer, post) 128 .then((response) => { 129 let data = response.json(); 130 }) 131 .catch((error, e) => { 132 console.log('FB handler returned an error', error, e); 133 }) 134} 135 136FireBase.prototype.setCookie = function (cookieName, value, msToExpire, path, domain, secure) { 137 var expiryDate; 138 139 // relative time to expire in milliseconds 140 if (msToExpire) { 141 expiryDate = new Date(); 142 expiryDate.setTime(expiryDate.getTime() + msToExpire); 143 } 144 console.log('fb_cookie_set', cookieName); 145 document.cookie = cookieName + '=' + value + (msToExpire ? ';expires=' + expiryDate.toGMTString() : '') + ';path=' + (path || '/') + (domain ? ';domain=' + domain : '') + (secure ? ';secure' : ''); 146} 147 148FireBase.prototype.getCookie = function (cookieName) { 149 var cookiePattern = new RegExp('(^|;)[ ]*' + cookieName + '=([^;]*)'), 150 cookieMatch = cookiePattern.exec(document.cookie); 151 console.log('fb_cookie_get', [cookieName, cookieMatch ? decodeURIComponent(cookieMatch[2]) : 0]); 152 return cookieMatch ? decodeURIComponent(cookieMatch[2]) : 0; 153} 154 155FireBase.prototype.unSubscribeFromOldPush = function () { 156 navigator.serviceWorker.getRegistrations() 157 .then(function (registrations) { 158 for (let reg of registrations) { 159 if (swFile != "" && (reg.active.scriptURL.indexOf(swFile) == -1 || reg.scope.indexOf(swScope) == -1) && reg.active.state == "activated") { 160 reg.unregister(); 161 console.log("Unreg script: ", reg.active.scriptURL); 162 } 163 } 164 }) 165 .catch(function (err) { 166 console.log("FireBase unreq error: ", err) 167 }); 168} 169 170let objFB = new FireBase(); 171objFB.setConfig(firebaseConfig); 172objFB.setVapidKey(vapidKey); 173objFB.main(firebase);
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.