user.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import ElectronAPIs from "@ente/shared/electron";
  2. import { Events, eventBus } from "@ente/shared/events";
  3. import { logError } from "@ente/shared/sentry";
  4. import InMemoryStore from "@ente/shared/storage/InMemoryStore";
  5. import { deleteAllCache } from "@ente/shared/storage/cacheStorage/helpers";
  6. import { clearFiles } from "@ente/shared/storage/localForage/helpers";
  7. import { clearData } from "@ente/shared/storage/localStorage";
  8. import { clearKeys } from "@ente/shared/storage/sessionStorage";
  9. import isElectron from "is-electron";
  10. import router from "next/router";
  11. import { _logout } from "../api/user";
  12. import { PAGES } from "../constants/pages";
  13. export const logoutUser = async () => {
  14. try {
  15. try {
  16. await _logout();
  17. } catch (e) {
  18. // ignore
  19. }
  20. try {
  21. InMemoryStore.clear();
  22. } catch (e) {
  23. // ignore
  24. logError(e, "clear InMemoryStore failed");
  25. }
  26. try {
  27. clearKeys();
  28. } catch (e) {
  29. logError(e, "clearKeys failed");
  30. }
  31. try {
  32. clearData();
  33. } catch (e) {
  34. logError(e, "clearData failed");
  35. }
  36. try {
  37. await deleteAllCache();
  38. } catch (e) {
  39. logError(e, "deleteAllCache failed");
  40. }
  41. try {
  42. await clearFiles();
  43. } catch (e) {
  44. logError(e, "clearFiles failed");
  45. }
  46. if (isElectron()) {
  47. try {
  48. ElectronAPIs.clearElectronStore();
  49. } catch (e) {
  50. logError(e, "clearElectronStore failed");
  51. }
  52. }
  53. try {
  54. eventBus.emit(Events.LOGOUT);
  55. } catch (e) {
  56. logError(e, "Error in logout handlers");
  57. }
  58. router.push(PAGES.ROOT);
  59. } catch (e) {
  60. logError(e, "logoutUser failed");
  61. }
  62. };