summaryrefslogtreecommitdiffstats
path: root/examples/webenginewidgets/push-notifications/content/ping.js
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2022-12-09 10:46:23 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-12-16 14:44:49 +0000
commitccbe330d6bbf3c6049a57af809b648c2c4a2155e (patch)
treebf725d3657e31a968e2b4792e833a93d88dcd3c0 /examples/webenginewidgets/push-notifications/content/ping.js
parent67d028e3dcbdab5ccae00b912ddb9dda7892c81e (diff)
Fix qdoc warningsv6.5.0-beta1
As JavaScript parsing issue got fixed , the limit was not changed, meaning there where 4 "unused" warnings possibilities. In the meantime another change e6a13d97898f3f4b19f61006d0716ca9e1b9f037 was merged which had 3 qdoc issues, which got therefore unnoticed. Fix those issues. Do not use underscore in example name and rename push_notification to push-notifications (like qtbase network-chat). Change-Id: I2635424e24d3b9a0a02c2e6fe8ac383eec95c112 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit cbc622f158a94fea9c6af8d675a8743e98267109) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'examples/webenginewidgets/push-notifications/content/ping.js')
-rw-r--r--examples/webenginewidgets/push-notifications/content/ping.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/examples/webenginewidgets/push-notifications/content/ping.js b/examples/webenginewidgets/push-notifications/content/ping.js
new file mode 100644
index 000000000..285a57019
--- /dev/null
+++ b/examples/webenginewidgets/push-notifications/content/ping.js
@@ -0,0 +1,84 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+const publicVapidKey =
+ "BNO4fIv439RpvbReeABNlDNiiBD2Maykn7EVnwsPseH7-P5hjnzZLEfnejXVP7Zt6MFoKqKeHm4nV9BHvbgoRPg";
+
+async function setup(delay)
+{
+ console.log('>> register service worker...');
+ const register = await navigator.serviceWorker.register('/worker.js', { scope : '/' });
+ console.log('>> service worker registered...');
+
+ console.log('>> subscribe push subscription to FCM');
+ var subscription = await register.pushManager.subscribe(
+ { userVisibleOnly : true, applicationServerKey : publicVapidKey });
+ console.log('>> subscription created...');
+
+ console.log('>> subscribe to push service...');
+ await fetch('/subscribe', {
+ method : 'POST',
+ body : JSON.stringify(subscription),
+ headers : { 'content-type' : 'application/json', 'ping-time' : delay }
+ });
+ console.log('>> push subscription created...')
+}
+
+async function clear()
+{
+ const register = await navigator.serviceWorker.getRegistration();
+ var subscription = await register.pushManager.getSubscription();
+ console.log('>> unsubscribe to push service...');
+ await fetch('/unsubscribe', {
+ method : 'POST',
+ body : JSON.stringify(subscription),
+ headers : { 'content-type' : 'application/json' }
+ });
+ console.log('>> push unsubscription removed...')
+
+ console.log('>> unsubscribe push subscription to FCM');
+ await subscription.unsubscribe();
+ console.log('>> subscription removed...');
+}
+
+function displaySetup(delay = null)
+{
+ const pingSetup = document.getElementById('ping-setup');
+ const pingClear = document.getElementById('ping-clear');
+ const pingText = document.getElementById('ping-text');
+ if (delay) {
+ pingClear.style.display = 'block';
+ pingSetup.style.display = 'none';
+ pingText.innerHTML = 'Ping Me Every ' + delay + ' seconds';
+ } else {
+ pingClear.style.display = 'none';
+ pingSetup.style.display = 'block';
+ pingText.innerHTML = "";
+ }
+}
+
+function handleSetupPing(event)
+{
+ event.preventDefault();
+
+ const seconds = document.forms[0].seconds.value;
+ document.forms[0].reset();
+
+ // check for service worker support
+ if ('serviceWorker' in navigator) {
+ setup(seconds).catch(err => console.error(err));
+ }
+
+ displaySetup(seconds);
+};
+
+function handleClearPing(event)
+{
+ event.preventDefault();
+ clear();
+ displaySetup();
+};
+
+document.forms[0].addEventListener('submit', handleSetupPing);
+const clearButton = document.getElementById('ping-clear-button');
+clearButton.addEventListener('click', handleClearPing);