2024-03-01 12:21:07 +05:30

64 lines
1.8 KiB
TypeScript

import ElectronAPIs from "@ente/shared/electron";
import { Events, eventBus } from "@ente/shared/events";
import { logError } from "@ente/shared/sentry";
import InMemoryStore from "@ente/shared/storage/InMemoryStore";
import { deleteAllCache } from "@ente/shared/storage/cacheStorage/helpers";
import { clearFiles } from "@ente/shared/storage/localForage/helpers";
import { clearData } from "@ente/shared/storage/localStorage";
import { clearKeys } from "@ente/shared/storage/sessionStorage";
import isElectron from "is-electron";
import router from "next/router";
import { _logout } from "../api/user";
import { PAGES } from "../constants/pages";
export const logoutUser = async () => {
try {
try {
await _logout();
} catch (e) {
// ignore
}
try {
InMemoryStore.clear();
} catch (e) {
// ignore
logError(e, "clear InMemoryStore failed");
}
try {
clearKeys();
} catch (e) {
logError(e, "clearKeys failed");
}
try {
clearData();
} catch (e) {
logError(e, "clearData failed");
}
try {
await deleteAllCache();
} catch (e) {
logError(e, "deleteAllCache failed");
}
try {
await clearFiles();
} catch (e) {
logError(e, "clearFiles failed");
}
if (isElectron()) {
try {
ElectronAPIs.clearElectronStore();
} catch (e) {
logError(e, "clearElectronStore failed");
}
}
try {
eventBus.emit(Events.LOGOUT);
} catch (e) {
logError(e, "Error in logout handlers");
}
router.push(PAGES.ROOT);
} catch (e) {
logError(e, "logoutUser failed");
}
};