diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-03-13 22:12:23 +0900 |
|---|---|---|
| committer | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-03-13 22:12:23 +0900 |
| commit | 8c9ec5827fa2040c8d705d2a01329da593d19fa3 (patch) | |
| tree | 59f90cc0aeb39f7366c24aea20441d17508997dd /packages/frontend/src/signout.ts | |
| parent | enhance(frontend): improve preferences (diff) | |
| download | misskey-8c9ec5827fa2040c8d705d2a01329da593d19fa3.tar.gz misskey-8c9ec5827fa2040c8d705d2a01329da593d19fa3.tar.bz2 misskey-8c9ec5827fa2040c8d705d2a01329da593d19fa3.zip | |
enhance(frontend): improve accounts management
Diffstat (limited to 'packages/frontend/src/signout.ts')
| -rw-r--r-- | packages/frontend/src/signout.ts | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/packages/frontend/src/signout.ts b/packages/frontend/src/signout.ts new file mode 100644 index 0000000000..8e90552546 --- /dev/null +++ b/packages/frontend/src/signout.ts @@ -0,0 +1,54 @@ +/* + * SPDX-FileCopyrightText: syuilo and misskey-project + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import { defineAsyncComponent, ref } from 'vue'; +import { apiUrl, host } from '@@/js/config.js'; +import { defaultMemoryStorage } from '@/memory-storage'; +import { i18n } from '@/i18n.js'; +import { miLocalStorage } from '@/local-storage.js'; +import { waiting, popup, popupMenu, success, alert } from '@/os.js'; +import { unisonReload, reloadChannel } from '@/utility/unison-reload.js'; +import { prefer } from '@/preferences.js'; +import { store } from '@/store.js'; +import { $i } from '@/i.js'; + +export async function signout() { + if (!$i) return; + + defaultMemoryStorage.clear(); + + waiting(); + miLocalStorage.removeItem('account'); + + // TODO: preferencesも削除 + + //#region Remove service worker registration + try { + if (navigator.serviceWorker.controller) { + const registration = await navigator.serviceWorker.ready; + const push = await registration.pushManager.getSubscription(); + if (push) { + await window.fetch(`${apiUrl}/sw/unregister`, { + method: 'POST', + body: JSON.stringify({ + i: $i.token, + endpoint: push.endpoint, + }), + headers: { + 'Content-Type': 'application/json', + }, + }); + } + } + + await navigator.serviceWorker.getRegistrations() + .then(registrations => { + return Promise.all(registrations.map(registration => registration.unregister())); + }); + } catch (err) {} + //#endregion + + unisonReload('/'); +} |