62 lines
1.8 KiB
TypeScript
62 lines
1.8 KiB
TypeScript
import { clearCaches } from "@/next/blob-cache";
|
|
import log from "@/next/log";
|
|
import { Events, eventBus } from "@ente/shared/events";
|
|
import InMemoryStore from "@ente/shared/storage/InMemoryStore";
|
|
import { clearFiles } from "@ente/shared/storage/localForage/helpers";
|
|
import { clearData } from "@ente/shared/storage/localStorage";
|
|
import { clearKeys } from "@ente/shared/storage/sessionStorage";
|
|
import router from "next/router";
|
|
import { _logout } from "../api/user";
|
|
import { PAGES } from "../constants/pages";
|
|
|
|
export const logoutUser = async () => {
|
|
try {
|
|
await _logout();
|
|
} catch (e) {
|
|
log.error("Ignoring error during POST /users/logout", e);
|
|
}
|
|
try {
|
|
InMemoryStore.clear();
|
|
} catch (e) {
|
|
log.error("Ignoring error when clearing in-memory store", e);
|
|
}
|
|
try {
|
|
clearKeys();
|
|
} catch (e) {
|
|
log.error("Ignoring error when clearing keys", e);
|
|
}
|
|
try {
|
|
clearData();
|
|
} catch (e) {
|
|
log.error("Ignoring error when clearing data", e);
|
|
}
|
|
try {
|
|
await clearCaches();
|
|
} catch (e) {
|
|
log.error("Ignoring error when clearing caches", e);
|
|
}
|
|
try {
|
|
await clearFiles();
|
|
} catch (e) {
|
|
log.error("Ignoring error when clearing files", e);
|
|
}
|
|
const electron = globalThis.electron;
|
|
if (electron) {
|
|
try {
|
|
await electron.watch.reset();
|
|
} catch (e) {
|
|
log.error("Ignoring error when resetting native folder watches", e);
|
|
}
|
|
try {
|
|
await electron.clearStores();
|
|
} catch (e) {
|
|
log.error("Ignoring error when clearing native stores", e);
|
|
}
|
|
}
|
|
try {
|
|
eventBus.emit(Events.LOGOUT);
|
|
} catch (e) {
|
|
log.error("Ignoring error in event-bus logout handlers", e);
|
|
}
|
|
router.push(PAGES.ROOT);
|
|
};
|