This is my code in service worker for notification click event. All are working fine. But this console error Uncaught (in promise) TypeError: Something went wrong while trying to open the window. is appeared when I click the action button.
Why is this console error shown?
self.addEventListener('notificationclick', e => {
const nf = e.notification;
nf.close();
if (!e.action) {
if(nf.data && nf.data.url)
{
const url = nf.data.url;
urltoopen(url,e);
}
return;
}
if(e.action === 'close'){
return;
}
if(nf.data && nf.data.listurl)
{
const listurl = nf.data.listurl;
Object.keys(listurl).forEach((k) => {
if(k===e.action)
{
const actionurl=listurl[k];
urltoopen(actionurl,e);
}
});
}
});
function urltoopen(url,e) {
const urlToOpen = new URL(url, self.location.origin).href;
const promiseChain = clients.matchAll({
type: 'window',
includeUncontrolled: true
})
.then((windowClients) => {
let matchingClient = null;
for (let i = 0; i < windowClients.length; i++) {
const windowClient = windowClients[i];
if (windowClient.url === urlToOpen) {
matchingClient = windowClient;
break;
}
}
if (matchingClient) {
return matchingClient.focus();
} else {
return clients.openWindow(urlToOpen);
}
});
e.waitUntil(promiseChain);
}