let swMessaging, swToken, lastContentId, firebaseConfig; let sw = '/firebase-messaging-sw.js?site='; let subscribeUrl = 'https://externalservices.iol.pt/notification-service/v1/subscribe?'; let unsubscribeUrl = 'https://externalservices.iol.pt/notification-service/v1/unsubscribe?'; let receptionUrl = 'https://externalservices.iol.pt/notification-producer/v1/reception?target=WEB&id='; let version = "&v1=2022012402"; // let subscribeUrl = 'http://localhost:8004/notification-service/v1/subscribe?'; // let unSubURL = 'http://localhost:8004/notification-service/v1/unsubscribe?id='; const initFirebase = async (site) => { return new Promise(async (resolve, reject) => { try { if (!sw.includes(site)) { sw += site; sw += version; } if (site.toLowerCase() === 'cnn') { firebaseConfig = { apiKey: "AIzaSyD9e2KAhRVi1XvFzXSMKzL67zbrP03EX2o", authDomain: "cnn-portugal-web-e-apps.firebaseapp.com", projectId: "cnn-portugal-web-e-apps", storageBucket: "cnn-portugal-web-e-apps.appspot.com", messagingSenderId: "434957535894", appId: "1:434957535894:web:49202a5cde02ac176a10b7", measurementId: "G-DDNN4DERKM" }; } else if (site.toLowerCase() === 'maisfutebol') { firebaseConfig = { apiKey: "AIzaSyBpXhMRLzZMUrI-4hWe4PhyDV0ypKJoOfI", authDomain: "maisfutebol-web-e-app.firebaseapp.com", databaseURL: "https://maisfutebol-web-e-app.firebaseio.com", projectId: "maisfutebol-web-e-app", storageBucket: "maisfutebol-web-e-app.appspot.com", messagingSenderId: "677672555470", appId: "1:677672555470:web:39cf2193ae864b03c0519f", measurementId: "G-DP1STDS1WB" }; } else if (site.toLowerCase() === 'tvi24') { firebaseConfig = { apiKey: "AIzaSyCNVT7-Ock0K7eSZvN9XkDVoxEoKjEXuOA", authDomain: "tvi-24-web-e-apps.firebaseapp.com", databaseURL: "https://tvi-24-web-e-apps.firebaseio.com", projectId: "tvi-24-web-e-apps", storageBucket: "tvi-24-web-e-apps.appspot.com", messagingSenderId: "87360395482", appId: "1:87360395482:web:87365a2e2521b5ffbf6de3", measurementId: "G-88QW5YV6G1" }; } else if (site.toLowerCase() === 'away') { firebaseConfig = { apiKey: "AIzaSyAWKhsm1I6BJtBapy5MKMsniYvLmq9NJNU", authDomain: "away-6cc6e.firebaseapp.com", projectId: "away-6cc6e", storageBucket: "away-6cc6e.appspot.com", messagingSenderId: "132903327115", appId: "1:132903327115:web:4426e13ee0d018a7188b8e", measurementId: "G-W2DQ8DG3W8" }; } else if(site.toLowerCase() === 'bigbrother') { firebaseConfig = { apiKey: "AIzaSyASMxHVRtZK3fg5HkEjtHMhVCHKJa2JJL4", authDomain: "big-brother-e74e7.firebaseapp.com", databaseURL: "https://big-brother-e74e7.firebaseio.com", projectId: "big-brother-e74e7", storageBucket: "big-brother-e74e7.appspot.com", messagingSenderId: "1080686009193", appId: "1:1080686009193:web:510ad337cc2e0cda74fbf8", measurementId: "G-YHE5K43RQR" }; } else if(site.toLowerCase() === 'iol') { firebaseConfig = { apiKey: "AIzaSyAD4U1HfNwxdvnDf5Vdhmd6qNkCTT7CaHM", authDomain: "portal-iol.firebaseapp.com", projectId: "portal-iol", storageBucket: "portal-iol.appspot.com", messagingSenderId: "160865623587", appId: "1:160865623587:web:e02771bbdd619ea482db96", measurementId: "G-TBSQB515C1" }; } else if(site.toLowerCase() === 'tvi') { firebaseConfig = { apiKey: "AIzaSyBLhV87IuxQJHcBrOvy5Y7-fGoH58s-RpQ", authDomain: "tvi-web-e-app.firebaseapp.com", databaseURL: "https://tvi-web-e-app.firebaseio.com", projectId: "tvi-web-e-app", storageBucket: "tvi-web-e-app.appspot.com", messagingSenderId: "1080082584195", appId: "1:1080082584195:web:ef01d943bcbd640d6381b6" }; } else if(site.toLowerCase() === 'versa') { firebaseConfig = { apiKey: "AIzaSyDqvtSJ0lLu9f8QuxTLkR9CGJBeDXsS2IY", authDomain: "versa-2bb2d.firebaseapp.com", projectId: "versa-2bb2d", storageBucket: "versa-2bb2d.appspot.com", messagingSenderId: "186587587629", appId: "1:186587587629:web:f4b54d27c3b946d40e04a4", measurementId: "G-3PJZWWZ21D" }; } else if(site.toLowerCase() === 'selfie') { firebaseConfig = { apiKey: "AIzaSyDKzX-JSADlFaXj5GFvVJS6k8n6H5AEUVc", authDomain: "selfie-525fe.firebaseapp.com", projectId: "selfie-525fe", storageBucket: "selfie-525fe.appspot.com", messagingSenderId: "160520720540", appId: "1:160520720540:web:d1809117a5d8ab745c1d59", measurementId: "G-F6BWF16FQC" }; } else { firebaseConfig = { apiKey: "AIzaSyAaXGxfdbLNT9D6_rz7blyWKhEzNHU2JQ8", authDomain: "tviplayer-web-e-app.firebaseapp.com", databaseURL: "https://tviplayer-web-e-app.firebaseio.com", projectId: "tviplayer-web-e-app", storageBucket: "tviplayer-web-e-app.appspot.com", messagingSenderId: "566186928211", appId: "1:566186928211:web:2b0595dfdd11550307fea6", measurementId: "G-E71K5PWG1M" }; } console.log('Inicializar firebase para o projecto ' + firebaseConfig.projectId); await firebase.initializeApp(firebaseConfig); swMessaging = firebase.messaging(); await registerSw(swMessaging, site); resolve(false); } catch (error) { console.log("Erro ao inicializar Firebase."); resolve(true); } }); } async function registerSw(messaging, site) { if ('serviceWorker' in navigator && firebase.messaging.isSupported()) { navigator.serviceWorker.register(sw, { cache: 'no-cache' }).then(function(registration) { messaging.useServiceWorker(registration); registration.update(); // Received message logic messaging.onMessage(function(payload) { console.log("messaging.onMessage, " + payload.data.title); let notiOptions = { body: payload.data.body, tag: payload.data.notiId, icon: payload.data.icon, badge: payload.data.badge, image: payload.data.img, data: { target: payload.data.target, notiId: payload.data.notiId, }, /* * actions: [ { action: 'explore', title: 'Ver o artigo', }, { action: 'close', title: 'Outra O', }, ] */ } if (payload.data.notiId || true) { lastContentId = payload.data.notiId; // registerReception(payload.data.notiId); registration.showNotification(payload.data.title, notiOptions); } }); }, function(err) { // registration failed :( console.log('ServiceWorker registration failed: ', err); }).catch(function(err) { console.log('Setup ServiceWorker Failed! Error: ' + err) }); } else { console.log("ServiceWorker/Firebase não é suportado") } } function subscribeToHost(host) { if (firebase.messaging.isSupported()) { if (Notification.permission === "denied") { console.log("Notificações bloqueadas pelo browser"); $('#deniedNoti').fadeIn(750); } else { swMessaging.requestPermission().then(async function() { swToken = await swMessaging.getToken(); fetch(subscribeUrl + 'token=' + swToken + '&host=' + host, { method: 'POST' }).then(function(response) { if (!response.ok) { throw Error(response.statusText); } return response; }).then(function(response) { console.log('ServiceWorker subscribed'); // Cookies.set('swReg', 'true', { expires: 30 }) localStorage.swReg = new Date().getTime(); }).catch(function(error) { console.log('Failed to subscribe SW'); }); }).catch(function(err) { console.log('Something went wrong to subscribed SW, err: ' + err) }) } } else { console.log("Firebase não é suportado") } } function unsubscribeToHost(host) { if (firebase.messaging.isSupported()) { swMessaging.requestPermission().then(async function() { swToken = await swMessaging.getToken(); fetch(unsubscribeUrl + 'token=' + swToken + '&host=' + host, { method: 'POST' }).then(function(response) { if (!response.ok) { throw Error(response.statusText); } return response; }).then(function(response) { console.log('ServiceWorker unsubscribed'); }).catch(function(error) { console.log('Failed to unsubscribed SW'); }); }).catch(function(err) { console.log('Something went wrong to unsubscribed SW, err: ' + err) }) } else { console.log("Firebase não é suportado") } } async function registerReception(notificationId) { // para evitar DDOS, invocar reception apos um intervalo entre 1 e 15 segundos let time = Math.floor(Math.random() * (15000 - 1000 + 1) + 1000); setTimeout(function() { fetch(receptionUrl + notificationId).then(function(response) { if (!response.ok) { throw Error(response.statusText); } }).catch(function(error) { // caso falhe retry a cada 10 segundos setTimeout(function() { registerReception(notificationId); }, 10000); }); }, time); } function prepareIOLSW(site, retry){ return new Promise(async (resolve, reject) => { if(!retry){ let scripts = [ 'https://cdn.iol.pt/js/NotificacoesIOL/external/firebase-app.js', 'https://cdn.iol.pt/js/NotificacoesIOL/external/firebase-auth.js', 'https://cdn.iol.pt/js/NotificacoesIOL/external/firebase-messaging.js', ]; // 'https://cdn.iol.pt/js/NotificacoesIOL/external/js.cookie.min.js', let urlCSS = 'https://cdn.iol.pt/js/NotificacoesIOL/notificacoesIOL.css?quechatoruben23'; let styles = "@import url(" + urlCSS + ");"; let newSS = document.createElement('link'); newSS.rel = 'stylesheet'; newSS.href = 'data:text/css,' + escape(styles); document.getElementsByTagName("head")[0].appendChild(newSS); for(let scpt of scripts){ let tag = document.createElement("script"); tag.src = scpt; document.getElementsByTagName("head")[0].appendChild(tag); } } var siteName = site.toUpperCase() === 'TVI24' ? 'TVI Notícias' : site.toUpperCase(); let html = '