diff --git a/web/apps/auth/src/pages/_app.tsx b/web/apps/auth/src/pages/_app.tsx index ec70ea527b..b405e4cacc 100644 --- a/web/apps/auth/src/pages/_app.tsx +++ b/web/apps/auth/src/pages/_app.tsx @@ -1,6 +1,7 @@ import "@fontsource-variable/inter"; import { CssBaseline } from "@mui/material"; import { ThemeProvider } from "@mui/material/styles"; +import { getData } from "ente-accounts/services/accounts-db"; import { accountLogout } from "ente-accounts/services/logout"; import type { User } from "ente-accounts/services/user"; import { staticAppTitle } from "ente-base/app"; @@ -19,7 +20,6 @@ import { import { authTheme } from "ente-base/components/utils/theme"; import { BaseContext, deriveBaseContext } from "ente-base/context"; import { logStartupBanner } from "ente-base/log-web"; -import { getData } from "ente-shared/storage/localStorage"; import { t } from "i18next"; import type { AppProps } from "next/app"; import React, { useCallback, useEffect, useMemo } from "react"; diff --git a/web/apps/photos/src/components/AuthenticateUser.tsx b/web/apps/photos/src/components/AuthenticateUser.tsx index 83f45f42b7..7962c7d966 100644 --- a/web/apps/photos/src/components/AuthenticateUser.tsx +++ b/web/apps/photos/src/components/AuthenticateUser.tsx @@ -1,4 +1,5 @@ import { VerifyMasterPasswordForm } from "ente-accounts/components/VerifyMasterPasswordForm"; +import { getData } from "ente-accounts/services/accounts-db"; import { checkSessionValidity } from "ente-accounts/services/session"; import type { KeyAttributes, User } from "ente-accounts/services/user"; import { @@ -8,7 +9,6 @@ import { import type { ModalVisibilityProps } from "ente-base/components/utils/modal"; import { useBaseContext } from "ente-base/context"; import log from "ente-base/log"; -import { getData } from "ente-shared/storage/localStorage"; import { t } from "i18next"; import { useCallback, useEffect, useState } from "react"; diff --git a/web/apps/photos/src/pages/_app.tsx b/web/apps/photos/src/pages/_app.tsx index 67ce61f0c3..39dc37b57c 100644 --- a/web/apps/photos/src/pages/_app.tsx +++ b/web/apps/photos/src/pages/_app.tsx @@ -3,6 +3,10 @@ import ArrowForwardIcon from "@mui/icons-material/ArrowForward"; import { CssBaseline, Typography } from "@mui/material"; import { styled, ThemeProvider } from "@mui/material/styles"; import { useNotification } from "components/utils/hooks-app"; +import { + getData, + isLocalStorageAndIndexedDBMismatch, +} from "ente-accounts/services/accounts-db"; import type { User } from "ente-accounts/services/user"; import { isDesktop, staticAppTitle } from "ente-base/app"; import { CenteredRow } from "ente-base/components/containers"; @@ -39,10 +43,6 @@ import { runMigrations } from "ente-new/photos/services/migration"; import { initML, isMLSupported } from "ente-new/photos/services/ml"; import { getFamilyPortalRedirectURL } from "ente-new/photos/services/user-details"; import { PhotosAppContext } from "ente-new/photos/types/context"; -import { - getData, - isLocalStorageAndIndexedDBMismatch, -} from "ente-shared/storage/localStorage"; import { t } from "i18next"; import type { AppProps } from "next/app"; import { useRouter } from "next/router"; diff --git a/web/apps/photos/src/pages/gallery.tsx b/web/apps/photos/src/pages/gallery.tsx index ef7db03a6e..9b87ece27c 100644 --- a/web/apps/photos/src/pages/gallery.tsx +++ b/web/apps/photos/src/pages/gallery.tsx @@ -14,6 +14,13 @@ import { FixCreationTime } from "components/FixCreationTime"; import { Sidebar } from "components/Sidebar"; import { Upload } from "components/Upload"; import { sessionExpiredDialogAttributes } from "ente-accounts/components/utils/dialog"; +import { + getData, + isFirstLogin, + justSignedUp, + setIsFirstLogin, + setJustSignedUp, +} from "ente-accounts/services/accounts-db"; import { stashRedirect } from "ente-accounts/services/redirect"; import { isSessionInvalid } from "ente-accounts/services/session"; import type { MiniDialogAttributes } from "ente-base/components/MiniDialog"; @@ -109,13 +116,6 @@ import { verifyStripeSubscription, } from "ente-new/photos/services/user-details"; import { usePhotosAppContext } from "ente-new/photos/types/context"; -import { getData } from "ente-shared/storage/localStorage"; -import { - isFirstLogin, - justSignedUp, - setIsFirstLogin, - setJustSignedUp, -} from "ente-shared/storage/localStorage/helpers"; import { PromiseQueue } from "ente-utils/promise"; import { t } from "i18next"; import { useRouter, type NextRouter } from "next/router"; diff --git a/web/apps/photos/src/pages/index.tsx b/web/apps/photos/src/pages/index.tsx index 7c127db06a..291314daa5 100644 --- a/web/apps/photos/src/pages/index.tsx +++ b/web/apps/photos/src/pages/index.tsx @@ -1,6 +1,7 @@ import { Box, Stack, Typography, styled } from "@mui/material"; import { LoginContents } from "ente-accounts/components/LoginContents"; import { SignUpContents } from "ente-accounts/components/SignUpContents"; +import { getData } from "ente-accounts/services/accounts-db"; import { CenteredFill, CenteredRow } from "ente-base/components/containers"; import { EnteLogo } from "ente-base/components/EnteLogo"; import { ActivityIndicator } from "ente-base/components/mui/ActivityIndicator"; @@ -13,7 +14,6 @@ import { } from "ente-base/session"; import { canAccessIndexedDB } from "ente-gallery/services/files-db"; import { DevSettings } from "ente-new/photos/components/DevSettings"; -import { getData } from "ente-shared/storage/localStorage"; import { t } from "i18next"; import { useRouter } from "next/router"; import React, { useCallback, useEffect, useRef, useState } from "react"; diff --git a/web/apps/photos/src/utils/file/index.ts b/web/apps/photos/src/utils/file/index.ts index cdb83c1b1e..07930d19a1 100644 --- a/web/apps/photos/src/utils/file/index.ts +++ b/web/apps/photos/src/utils/file/index.ts @@ -1,3 +1,4 @@ +import { getData } from "ente-accounts/services/accounts-db"; import type { LocalUser, User } from "ente-accounts/services/user"; import { joinPath } from "ente-base/file-name"; import log from "ente-base/log"; @@ -23,7 +24,6 @@ import { } from "ente-new/photos/services/collection"; import { updateFilesVisibility } from "ente-new/photos/services/file"; import { safeFileName } from "ente-new/photos/utils/native-fs"; -import { getData } from "ente-shared/storage/localStorage"; import { wait } from "ente-utils/promise"; import { t } from "i18next"; import { diff --git a/web/packages/accounts/components/SignUpContents.tsx b/web/packages/accounts/components/SignUpContents.tsx index 6b3d09d94e..df6c935bf8 100644 --- a/web/packages/accounts/components/SignUpContents.tsx +++ b/web/packages/accounts/components/SignUpContents.tsx @@ -13,6 +13,11 @@ import { Tooltip, Typography, } from "@mui/material"; +import { + setData, + setJustSignedUp, + setLocalReferralSource, +} from "ente-accounts/services/accounts-db"; import { generateSRPSetupAttributes, stashSRPSetupAttributes, @@ -32,11 +37,6 @@ import { deriveKeyInsufficientMemoryErrorMessage } from "ente-base/crypto/types" import { isMuseumHTTPError } from "ente-base/http"; import log from "ente-base/log"; import { saveMasterKeyInSessionAndSafeStore } from "ente-base/session"; -import { setData } from "ente-shared/storage/localStorage"; -import { - setJustSignedUp, - setLocalReferralSource, -} from "ente-shared/storage/localStorage/helpers"; import { useFormik } from "formik"; import { t } from "i18next"; import type { NextRouter } from "next/router"; diff --git a/web/packages/accounts/pages/change-password.tsx b/web/packages/accounts/pages/change-password.tsx index eb159040b4..c622a8c5d7 100644 --- a/web/packages/accounts/pages/change-password.tsx +++ b/web/packages/accounts/pages/change-password.tsx @@ -4,6 +4,7 @@ import { AccountsPageFooter, AccountsPageTitle, } from "ente-accounts/components/layouts/centered-paper"; +import { getData, setData } from "ente-accounts/services/accounts-db"; import { appHomeRoute, stashRedirect } from "ente-accounts/services/redirect"; import { changePassword, @@ -14,7 +15,6 @@ import { LinkButton } from "ente-base/components/LinkButton"; import { LoadingIndicator } from "ente-base/components/loaders"; import { deriveKeyInsufficientMemoryErrorMessage } from "ente-base/crypto/types"; import log from "ente-base/log"; -import { getData, setData } from "ente-shared/storage/localStorage"; import { t } from "i18next"; import { useRouter } from "next/router"; import React, { useCallback, useEffect, useState } from "react"; diff --git a/web/packages/accounts/pages/credentials.tsx b/web/packages/accounts/pages/credentials.tsx index 975437b049..bcd91f6bf8 100644 --- a/web/packages/accounts/pages/credentials.tsx +++ b/web/packages/accounts/pages/credentials.tsx @@ -14,6 +14,14 @@ import { VerifyMasterPasswordForm, type VerifyMasterPasswordFormProps, } from "ente-accounts/components/VerifyMasterPasswordForm"; +import { + getData, + getToken, + isFirstLogin, + setData, + setIsFirstLogin, + setLSUser, +} from "ente-accounts/services/accounts-db"; import { openPasskeyVerificationURL, passkeyVerificationRedirectURL, @@ -50,12 +58,6 @@ import { unstashKeyEncryptionKeyFromSession, updateSessionFromElectronSafeStorageIfNeeded, } from "ente-base/session"; -import { getData, setData, setLSUser } from "ente-shared/storage/localStorage"; -import { - getToken, - isFirstLogin, - setIsFirstLogin, -} from "ente-shared/storage/localStorage/helpers"; import { t } from "i18next"; import { useRouter } from "next/router"; import { useCallback, useEffect, useState } from "react"; diff --git a/web/packages/accounts/pages/generate.tsx b/web/packages/accounts/pages/generate.tsx index e176bad56f..af3b4da6ea 100644 --- a/web/packages/accounts/pages/generate.tsx +++ b/web/packages/accounts/pages/generate.tsx @@ -5,6 +5,11 @@ import { AccountsPageTitle, } from "ente-accounts/components/layouts/centered-paper"; import { RecoveryKey } from "ente-accounts/components/RecoveryKey"; +import { + getData, + justSignedUp, + setJustSignedUp, +} from "ente-accounts/services/accounts-db"; import { appHomeRoute } from "ente-accounts/services/redirect"; import { generateSRPSetupAttributes, @@ -25,11 +30,6 @@ import { haveCredentialsInSession, saveMasterKeyInSessionAndSafeStore, } from "ente-base/session"; -import { getData } from "ente-shared/storage/localStorage"; -import { - justSignedUp, - setJustSignedUp, -} from "ente-shared/storage/localStorage/helpers"; import { t } from "i18next"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; diff --git a/web/packages/accounts/pages/login.tsx b/web/packages/accounts/pages/login.tsx index bfae8b929b..0d1618b71f 100644 --- a/web/packages/accounts/pages/login.tsx +++ b/web/packages/accounts/pages/login.tsx @@ -1,8 +1,8 @@ import { AccountsPageContents } from "ente-accounts/components/layouts/centered-paper"; import { LoginContents } from "ente-accounts/components/LoginContents"; +import { getData } from "ente-accounts/services/accounts-db"; import { LoadingIndicator } from "ente-base/components/loaders"; import { customAPIHost } from "ente-base/origins"; -import { getData } from "ente-shared/storage/localStorage"; import { useRouter } from "next/router"; import React, { useEffect, useState } from "react"; diff --git a/web/packages/accounts/pages/passkeys/finish.tsx b/web/packages/accounts/pages/passkeys/finish.tsx index c55a7b6117..b9dadaf7ce 100644 --- a/web/packages/accounts/pages/passkeys/finish.tsx +++ b/web/packages/accounts/pages/passkeys/finish.tsx @@ -1,8 +1,12 @@ +import { + getData, + setData, + setLSUser, +} from "ente-accounts/services/accounts-db"; import { unstashRedirect } from "ente-accounts/services/redirect"; import { LoadingIndicator } from "ente-base/components/loaders"; import { fromB64URLSafeNoPadding } from "ente-base/crypto"; import log from "ente-base/log"; -import { getData, setData, setLSUser } from "ente-shared/storage/localStorage"; import { nullToUndefined } from "ente-utils/transform"; import { useRouter } from "next/router"; import React, { useEffect } from "react"; diff --git a/web/packages/accounts/pages/recover.tsx b/web/packages/accounts/pages/recover.tsx index 2d36583b7f..ff3f45be41 100644 --- a/web/packages/accounts/pages/recover.tsx +++ b/web/packages/accounts/pages/recover.tsx @@ -3,6 +3,7 @@ import { AccountsPageFooter, AccountsPageTitle, } from "ente-accounts/components/layouts/centered-paper"; +import { getData, setData } from "ente-accounts/services/accounts-db"; import { recoveryKeyFromMnemonic } from "ente-accounts/services/recovery-key"; import { appHomeRoute, stashRedirect } from "ente-accounts/services/redirect"; import type { KeyAttributes, User } from "ente-accounts/services/user"; @@ -20,7 +21,6 @@ import { haveCredentialsInSession, saveMasterKeyInSessionAndSafeStore, } from "ente-base/session"; -import { getData, setData } from "ente-shared/storage/localStorage"; import { t } from "i18next"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; diff --git a/web/packages/accounts/pages/two-factor/recover.tsx b/web/packages/accounts/pages/two-factor/recover.tsx index 3cbfbd776f..e8fa006da2 100644 --- a/web/packages/accounts/pages/two-factor/recover.tsx +++ b/web/packages/accounts/pages/two-factor/recover.tsx @@ -4,6 +4,7 @@ import { AccountsPageFooter, AccountsPageTitle, } from "ente-accounts/components/layouts/centered-paper"; +import { getData } from "ente-accounts/services/accounts-db"; import { recoverTwoFactor, recoverTwoFactorFinish, @@ -20,7 +21,6 @@ import { import { useBaseContext } from "ente-base/context"; import { isHTTP4xxError, isHTTPErrorWithStatus } from "ente-base/http"; import log from "ente-base/log"; -import { getData } from "ente-shared/storage/localStorage"; import { t } from "i18next"; import { useRouter } from "next/router"; import { useCallback, useEffect, useMemo, useState } from "react"; diff --git a/web/packages/accounts/pages/two-factor/verify.tsx b/web/packages/accounts/pages/two-factor/verify.tsx index b961959790..a5badf4043 100644 --- a/web/packages/accounts/pages/two-factor/verify.tsx +++ b/web/packages/accounts/pages/two-factor/verify.tsx @@ -1,10 +1,14 @@ import { Verify2FACodeForm } from "ente-accounts/components/Verify2FACodeForm"; +import { + getData, + setData, + setLSUser, +} from "ente-accounts/services/accounts-db"; import type { User } from "ente-accounts/services/user"; import { verifyTwoFactor } from "ente-accounts/services/user"; import { LinkButton } from "ente-base/components/LinkButton"; import { useBaseContext } from "ente-base/context"; import { isHTTPErrorWithStatus } from "ente-base/http"; -import { getData, setData, setLSUser } from "ente-shared/storage/localStorage"; import { t } from "i18next"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; diff --git a/web/packages/accounts/pages/verify.tsx b/web/packages/accounts/pages/verify.tsx index ab6cc12ae6..b59ff22c50 100644 --- a/web/packages/accounts/pages/verify.tsx +++ b/web/packages/accounts/pages/verify.tsx @@ -7,6 +7,13 @@ import { import { VerifyingPasskey } from "ente-accounts/components/LoginComponents"; import { SecondFactorChoice } from "ente-accounts/components/SecondFactorChoice"; import { useSecondFactorChoiceIfNeeded } from "ente-accounts/components/utils/second-factor-choice"; +import { + getData, + getLocalReferralSource, + setData, + setIsFirstLogin, + setLSUser, +} from "ente-accounts/services/accounts-db"; import { openPasskeyVerificationURL, passkeyVerificationRedirectURL, @@ -37,11 +44,6 @@ import { useBaseContext } from "ente-base/context"; import { isHTTPErrorWithStatus } from "ente-base/http"; import log from "ente-base/log"; import { clearSessionStorage } from "ente-base/session"; -import { getData, setData, setLSUser } from "ente-shared/storage/localStorage"; -import { - getLocalReferralSource, - setIsFirstLogin, -} from "ente-shared/storage/localStorage/helpers"; import { t } from "i18next"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; diff --git a/web/packages/shared/storage/localStorage/index.ts b/web/packages/accounts/services/accounts-db.ts similarity index 74% rename from web/packages/shared/storage/localStorage/index.ts rename to web/packages/accounts/services/accounts-db.ts index 1cc338f9cb..f9731952bf 100644 --- a/web/packages/shared/storage/localStorage/index.ts +++ b/web/packages/accounts/services/accounts-db.ts @@ -9,7 +9,6 @@ export type LocalStorageKey = | "isFirstLogin" | "justSignedUp" | "showBackButton" - | "export" // Moved to ente-accounts // "srpSetupAttributes" | "srpAttributes" @@ -21,6 +20,23 @@ export const setData = (key: LocalStorageKey, value: object) => export const removeData = (key: LocalStorageKey) => localStorage.removeItem(key); +/** + * [Note: Accounts DB] + * + * The accounts package stores various state both during the login / signup + * flow, and post login to identify the logged in user. + * + * This state is stored in local storage. + * + * Most of this state is meant to be transitory - various bits and bobs that we + * accumulate and want to persist as the user goes through the login or signup + * flow. One the user is successfully logged in and the first pull has + * completed, then only a few of these are expected to remain: + * + * - "user" + * - "keyAttributes" + * - "srpAttributes" + */ export const getData = (key: LocalStorageKey) => { try { if ( @@ -109,3 +125,28 @@ export const isLocalStorageAndIndexedDBMismatch = async () => { !(await getKVS("token")) ); }; + +export const getToken = (): string => { + const token = getData("user")?.token; + return token; +}; + +export const isFirstLogin = () => getData("isFirstLogin")?.status ?? false; + +export function setIsFirstLogin(status: boolean) { + setData("isFirstLogin", { status }); +} + +export const justSignedUp = () => getData("justSignedUp")?.status ?? false; + +export function setJustSignedUp(status: boolean) { + setData("justSignedUp", { status }); +} + +export function getLocalReferralSource() { + return getData("referralSource")?.source; +} + +export function setLocalReferralSource(source: string) { + setData("referralSource", { source }); +} diff --git a/web/packages/accounts/services/passkey.ts b/web/packages/accounts/services/passkey.ts index 1f9100bd9c..9b7bbd0515 100644 --- a/web/packages/accounts/services/passkey.ts +++ b/web/packages/accounts/services/passkey.ts @@ -1,3 +1,8 @@ +import { + getData, + setData, + setLSUser, +} from "ente-accounts/services/accounts-db"; import { TwoFactorAuthorizationResponse } from "ente-accounts/services/user"; import { clientPackageName, isDesktop } from "ente-base/app"; import { encryptBox, generateKey } from "ente-base/crypto"; @@ -8,7 +13,6 @@ import { publicRequestHeaders, } from "ente-base/http"; import { apiURL } from "ente-base/origins"; -import { getData, setData, setLSUser } from "ente-shared/storage/localStorage"; import { z } from "zod/v4"; import { getUserRecoveryKey } from "./recovery-key"; import { unstashRedirect } from "./redirect"; diff --git a/web/packages/accounts/services/recovery-key.ts b/web/packages/accounts/services/recovery-key.ts index 1d8b29009c..daf11e1507 100644 --- a/web/packages/accounts/services/recovery-key.ts +++ b/web/packages/accounts/services/recovery-key.ts @@ -1,4 +1,5 @@ import * as bip39 from "bip39"; +import { getData } from "ente-accounts/services/accounts-db"; import type { KeyAttributes } from "ente-accounts/services/user"; import { decryptBox, @@ -7,7 +8,6 @@ import { toHex, } from "ente-base/crypto"; import { ensureMasterKeyFromSession } from "ente-base/session"; -import { getData } from "ente-shared/storage/localStorage"; import { putUserRecoveryKeyAttributes, saveKeyAttributes } from "./user"; // Mobile client library only supports English. diff --git a/web/packages/accounts/services/session.ts b/web/packages/accounts/services/session.ts index b10967f02d..e9d30177b1 100644 --- a/web/packages/accounts/services/session.ts +++ b/web/packages/accounts/services/session.ts @@ -1,9 +1,9 @@ +import { getData } from "ente-accounts/services/accounts-db"; import type { KeyAttributes } from "ente-accounts/services/user"; import { authenticatedRequestHeaders, HTTPError } from "ente-base/http"; import log from "ente-base/log"; import { apiURL } from "ente-base/origins"; import { getAuthToken } from "ente-base/token"; -import { getData } from "ente-shared/storage/localStorage"; import { nullToUndefined } from "ente-utils/transform"; import { z } from "zod/v4"; import { getSRPAttributes, type SRPAttributes } from "./srp"; diff --git a/web/packages/accounts/services/user.ts b/web/packages/accounts/services/user.ts index 398eec1372..e8da5559ee 100644 --- a/web/packages/accounts/services/user.ts +++ b/web/packages/accounts/services/user.ts @@ -1,3 +1,4 @@ +import { getData, setLSUser } from "ente-accounts/services/accounts-db"; import { generateSRPSetupAttributes, getSRPAttributes, @@ -25,7 +26,6 @@ import { saveMasterKeyInSessionAndSafeStore, } from "ente-base/session"; import { getAuthToken } from "ente-base/token"; -import { getData, setLSUser } from "ente-shared/storage/localStorage"; import { ensure } from "ente-utils/ensure"; import { nullToUndefined } from "ente-utils/transform"; import { z } from "zod/v4"; diff --git a/web/packages/accounts/utils/helpers.ts b/web/packages/accounts/utils/helpers.ts index f165453d70..9a980587f4 100644 --- a/web/packages/accounts/utils/helpers.ts +++ b/web/packages/accounts/utils/helpers.ts @@ -1,8 +1,8 @@ // TODO: Audit this file, this can be better. e.g. do we need the Object.assign? +import { getData, setLSUser } from "ente-accounts/services/accounts-db"; import { type KeyAttributes } from "ente-accounts/services/user"; import { boxSealOpenBytes, decryptBox, toB64URLSafe } from "ente-base/crypto"; -import { getData, setLSUser } from "ente-shared/storage/localStorage"; export async function decryptAndStoreToken( keyAttributes: KeyAttributes, diff --git a/web/packages/base/session.ts b/web/packages/base/session.ts index bf0aa9913c..1569c1e9f0 100644 --- a/web/packages/base/session.ts +++ b/web/packages/base/session.ts @@ -1,4 +1,4 @@ -import { getToken } from "ente-shared/storage/localStorage/helpers"; +import { getToken } from "ente-accounts/services/accounts-db"; import { z } from "zod/v4"; import { decryptBox, encryptBox, generateKey } from "./crypto"; import { isDevBuild } from "./env"; diff --git a/web/packages/new/photos/components/sidebar/TwoFactorSettings.tsx b/web/packages/new/photos/components/sidebar/TwoFactorSettings.tsx index 3e88743ece..badbe850b6 100644 --- a/web/packages/new/photos/components/sidebar/TwoFactorSettings.tsx +++ b/web/packages/new/photos/components/sidebar/TwoFactorSettings.tsx @@ -1,5 +1,6 @@ import LockIcon from "@mui/icons-material/Lock"; import { Stack, Typography } from "@mui/material"; +import { getData, setLSUser } from "ente-accounts/services/accounts-db"; import { RowButton, RowButtonGroup, @@ -13,7 +14,6 @@ import { } from "ente-base/components/mui/SidebarDrawer"; import { useBaseContext } from "ente-base/context"; import { disable2FA, get2FAStatus } from "ente-new/photos/services/user"; -import { getData, setLSUser } from "ente-shared/storage/localStorage"; import { t } from "i18next"; import router, { useRouter } from "next/router"; import { useEffect, useState } from "react"; diff --git a/web/packages/new/photos/services/user-details.ts b/web/packages/new/photos/services/user-details.ts index 4bdd7743e3..4d48d7449e 100644 --- a/web/packages/new/photos/services/user-details.ts +++ b/web/packages/new/photos/services/user-details.ts @@ -1,10 +1,10 @@ +import { getData, setLSUser } from "ente-accounts/services/accounts-db"; import { ensureLocalUser } from "ente-accounts/services/user"; import { isDesktop } from "ente-base/app"; import { authenticatedRequestHeaders, ensureOk } from "ente-base/http"; import { getKV, setKV } from "ente-base/kv"; import log from "ente-base/log"; import { apiURL } from "ente-base/origins"; -import { getData, setLSUser } from "ente-shared/storage/localStorage"; import { nullishToEmpty, nullishToZero, diff --git a/web/packages/shared/storage/localStorage/helpers.ts b/web/packages/shared/storage/localStorage/helpers.ts index 85154c4c96..e69de29bb2 100644 --- a/web/packages/shared/storage/localStorage/helpers.ts +++ b/web/packages/shared/storage/localStorage/helpers.ts @@ -1,26 +0,0 @@ -import { getData, setData } from "."; - -export const getToken = (): string => { - const token = getData("user")?.token; - return token; -}; - -export const isFirstLogin = () => getData("isFirstLogin")?.status ?? false; - -export function setIsFirstLogin(status: boolean) { - setData("isFirstLogin", { status }); -} - -export const justSignedUp = () => getData("justSignedUp")?.status ?? false; - -export function setJustSignedUp(status: boolean) { - setData("justSignedUp", { status }); -} - -export function getLocalReferralSource() { - return getData("referralSource")?.source; -} - -export function setLocalReferralSource(source: string) { - setData("referralSource", { source }); -}