summaryrefslogtreecommitdiff
path: root/packages/frontend/src/signout.ts
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2025-03-13 22:12:23 +0900
committersyuilo <4439005+syuilo@users.noreply.github.com>2025-03-13 22:12:23 +0900
commit8c9ec5827fa2040c8d705d2a01329da593d19fa3 (patch)
tree59f90cc0aeb39f7366c24aea20441d17508997dd /packages/frontend/src/signout.ts
parentenhance(frontend): improve preferences (diff)
downloadmisskey-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.ts54
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('/');
+}