This commit is contained in:
Peter Maquiran
2022-12-19 17:04:21 +01:00
parent 7543f319b8
commit 2b85796a5f
15 changed files with 325 additions and 416 deletions
+90 -90
View File
@@ -2,116 +2,116 @@
/* eslint-disable no-undef */
/* eslint-disable no-restricted-globals */
const regex = /{{\s*([^}]+)\s*}}/g;
var _pushVaribales = "";
// const regex = /{{\s*([^}]+)\s*}}/g;
// var _pushVaribales = "";
function interpolate(messageData) {
return function interpolate(o) {
return messageData.replace(regex, function (a, b) {
var r = o[b];
return typeof r === 'string' || typeof r === 'number' ? r : a;
});
}
}
// function interpolate(messageData) {
// return function interpolate(o) {
// return messageData.replace(regex, function (a, b) {
// var r = o[b];
// return typeof r === 'string' || typeof r === 'number' ? r : a;
// });
// }
// }
function createTemplateMessage(messageData) {
if (Object.keys(_pushVaribales).length > 0 ) {
var message = interpolate(messageData)(_pushVaribales);
return message;
} else {
return messageData;
}
}
// function createTemplateMessage(messageData) {
// if (Object.keys(_pushVaribales).length > 0 ) {
// var message = interpolate(messageData)(_pushVaribales);
// return message;
// } else {
// return messageData;
// }
// }
function displayNotification(event) {
var messageJson = event.data.text();
messageJson = JSON.parse(messageJson);
var title = messageJson.title ? messageJson.title : "New message";
var imageUrl = messageJson.iconUrl ? messageJson.iconUrl : "images/icon.png";
// var tagJson = messageJson.payload;
// var tag = tagJson.tag ? tagJson.tag : "";
var bodyAlert = messageJson.alert ? messageJson.alert : "Example message"
var payloadData = messageJson.payload ? messageJson.payload : "Example message"
let messageTemp;
if ((messageTemp = regex.exec(bodyAlert)) !== null) {
bodyAlert = createTemplateMessage(bodyAlert);
}
self.registration.showNotification(title, {
body: bodyAlert,
icon: imageUrl,
data: payloadData,
// tag: tag
});
return Promise.resolve();
}
// function displayNotification(event) {
// var messageJson = event.data.text();
// messageJson = JSON.parse(messageJson);
// var title = messageJson.title ? messageJson.title : "New message";
// var imageUrl = messageJson.iconUrl ? messageJson.iconUrl : "images/icon.png";
// // var tagJson = messageJson.payload;
// // var tag = tagJson.tag ? tagJson.tag : "";
// var bodyAlert = messageJson.alert ? messageJson.alert : "Example message"
// var payloadData = messageJson.payload ? messageJson.payload : "Example message"
// let messageTemp;
// if ((messageTemp = regex.exec(bodyAlert)) !== null) {
// bodyAlert = createTemplateMessage(bodyAlert);
// }
// self.registration.showNotification(title, {
// body: bodyAlert,
// icon: imageUrl,
// data: payloadData,
// // tag: tag
// });
// return Promise.resolve();
// }
function triggerSeenEvent(strMsg) {
send_message_to_all_clients("msgEventSeen:" + strMsg);
}
// function triggerSeenEvent(strMsg) {
// send_message_to_all_clients("msgEventSeen:" + strMsg);
// }
function triggerOpenEvent(strMsg) {
send_message_to_all_clients("msgEventOpen:" + strMsg);
}
// function triggerOpenEvent(strMsg) {
// send_message_to_all_clients("msgEventOpen:" + strMsg);
// }
function onPushNotificationReceived(event) {
// function onPushNotificationReceived(event) {
if (event.data) {
// if (event.data) {
}
event.waitUntil(displayNotification(event).then(() => triggerSeenEvent(event.data.text())));
};
// }
// event.waitUntil(displayNotification(event).then(() => triggerSeenEvent(event.data.text())));
// };
self.addEventListener('push', onPushNotificationReceived);
// self.addEventListener('push', onPushNotificationReceived);
function send_message_to_client(client, msg) {
return new Promise(function (resolve, reject) {
var msg_chan = new MessageChannel();
// function send_message_to_client(client, msg) {
// return new Promise(function (resolve, reject) {
// var msg_chan = new MessageChannel();
msg_chan.port1.onmessage = function (event) {
if (event.data.error) {
reject(event.data.error);
} else {
resolve(event.data);
}
};
// msg_chan.port1.onmessage = function (event) {
// if (event.data.error) {
// reject(event.data.error);
// } else {
// resolve(event.data);
// }
// };
client.postMessage(msg, [msg_chan.port2]);
});
}
// client.postMessage(msg, [msg_chan.port2]);
// });
// }
function send_message_to_all_clients(msg) {
clients.matchAll().then(clients => {
clients.forEach(client => {
send_message_to_client(client, msg);
})
});
}
// function send_message_to_all_clients(msg) {
// clients.matchAll().then(clients => {
// clients.forEach(client => {
// send_message_to_client(client, msg);
// })
// });
// }
self.addEventListener('install', function (event) {
self.skipWaiting();
// self.addEventListener('install', function (event) {
// self.skipWaiting();
//event.postMessage("SW Says 'Hello back!'");
});
// //event.postMessage("SW Says 'Hello back!'");
// });
self.addEventListener('message', function (event) {
replyPort = event.ports[0];
_pushVaribales = event.data;
});
// self.addEventListener('message', function (event) {
// replyPort = event.ports[0];
// _pushVaribales = event.data;
// });
self.addEventListener('activate', function (event) {
// self.addEventListener('activate', function (event) {
event.waitUntil(self.clients.claim());
});
// event.waitUntil(self.clients.claim());
// });
self.addEventListener('notificationclick', function (event) {
// self.addEventListener('notificationclick', function (event) {
let nidjson = event.notification.data;
event.notification.close();
event.waitUntil(triggerOpenEvent(nidjson));
});
// let nidjson = event.notification.data;
// event.notification.close();
// event.waitUntil(triggerOpenEvent(nidjson));
// });
self.addEventListener('pushsubscriptionchange', function () {
// self.addEventListener('pushsubscriptionchange', function () {
send_message_to_all_clients("updateRegistration:");
});
// send_message_to_all_clients("updateRegistration:");
// });