From a16e984ecd1acfad18514c58a385119de9f1b268 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Wed, 19 Feb 2025 16:30:50 +0100 Subject: [PATCH] fonction disconnect --- src/components/header/header.ts | 37 +++++++++++++++++++++++++++++++++ src/utils/subscription.utils.ts | 5 ++++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/components/header/header.ts b/src/components/header/header.ts index e055f68..d3635e4 100755 --- a/src/components/header/header.ts +++ b/src/components/header/header.ts @@ -181,3 +181,40 @@ async function createBackUp() { } (window as any).createBackUp = createBackUp; + +async function disconnect() { + console.log('Disconnecting...'); + try { + localStorage.clear(); + + await new Promise((resolve, reject) => { + const request = indexedDB.deleteDatabase('4nk'); + request.onsuccess = () => { + console.log('IndexedDB deleted successfully'); + resolve(); + }; + request.onerror = () => reject(request.error); + request.onblocked = () => { + console.log('Database deletion was blocked'); + resolve(); + }; + }); + + const registrations = await navigator.serviceWorker.getRegistrations(); + await Promise.all(registrations.map(registration => registration.unregister())); + console.log('Service worker unregistered'); + + navigate('home'); + + setTimeout(() => { + window.location.href = window.location.origin; + }, 100); + + } catch (error) { + console.error('Error during disconnect:', error); + // force reload + window.location.href = window.location.origin; + } +} + +(window as any).disconnect = disconnect; \ No newline at end of file diff --git a/src/utils/subscription.utils.ts b/src/utils/subscription.utils.ts index 907a1f2..707ba20 100755 --- a/src/utils/subscription.utils.ts +++ b/src/utils/subscription.utils.ts @@ -5,12 +5,15 @@ export function cleanSubscriptions(): void { for (const sub of subscriptions) { const el = sub.element; const eventHandler = sub.eventHandler; - el.removeEventListener(sub.event, eventHandler); + if (el) { + el.removeEventListener(sub.event, eventHandler); + } } subscriptions = []; } export function addSubscription(element: Element | Document, event: any, eventHandler: EventListenerOrEventListenerObject): void { + if (!element) return; subscriptions.push({ element, event, eventHandler }); element.addEventListener(event, eventHandler); }