diff --git a/apps/photos/src/components/Sidebar/UtilitySection.tsx b/apps/photos/src/components/Sidebar/UtilitySection.tsx index 5965e87a6d20b3009c5fb248d091d09991cae034..e21fc9bf3fb195865531b68f26d274ee6f432cb8 100644 --- a/apps/photos/src/components/Sidebar/UtilitySection.tsx +++ b/apps/photos/src/components/Sidebar/UtilitySection.tsx @@ -13,6 +13,7 @@ import { AppContext } from 'pages/_app'; // import mlIDbStorage from 'utils/storage/mlIDbStorage'; import { APPS, CLIENT_PACKAGE_NAMES } from '@ente/shared/apps/constants'; import ThemeSwitcher from '@ente/shared/components/ThemeSwitcher'; +import { getAccountsURL } from '@ente/shared/network/api'; import { LS_KEYS, getData } from '@ente/shared/storage/localStorage'; import { THEME_COLOR } from '@ente/shared/themes/constants'; import { EnteMenuItem } from 'components/Menu/EnteMenuItem'; @@ -74,7 +75,7 @@ export default function UtilitySection({ closeSidebar }) { const serialized = JSON.stringify(userData); const serializedB64 = window.btoa(serialized); - window.location.href = `${process.env.NEXT_PUBLIC_ACCOUNTS_ENDPOINT}${ACCOUNTS_PAGES.ACCOUNT_HANDOFF + window.location.href = `${getAccountsURL()}${ACCOUNTS_PAGES.ACCOUNT_HANDOFF }?package=${CLIENT_PACKAGE_NAMES.get(APPS.PHOTOS)}#${serializedB64}`; }; diff --git a/packages/accounts/pages/credentials.tsx b/packages/accounts/pages/credentials.tsx index 52a7071daaea608c47e338ad521817a1dff3d8bc..cc14e0ef5db57abcbecec3860fe068c25d843cbf 100644 --- a/packages/accounts/pages/credentials.tsx +++ b/packages/accounts/pages/credentials.tsx @@ -2,57 +2,57 @@ import { useEffect, useState } from 'react'; import { t } from 'i18next'; +import { + decryptAndStoreToken, + generateAndSaveIntermediateKeyAttributes, + generateLoginSubKey, + saveKeyInSessionStore, +} from '@ente/shared/crypto/helpers'; import { clearData, getData, LS_KEYS, setData, } from '@ente/shared/storage/localStorage'; -import { PAGES } from '../constants/pages'; import { - SESSION_KEYS, getKey, removeKey, + SESSION_KEYS, setKey, } from '@ente/shared/storage/sessionStorage'; -import { - decryptAndStoreToken, - generateAndSaveIntermediateKeyAttributes, - generateLoginSubKey, - saveKeyInSessionStore, -} from '@ente/shared/crypto/helpers'; +import { PAGES } from '../constants/pages'; import { generateSRPSetupAttributes } from '../services/srp'; import { logoutUser } from '../services/user'; -import { configureSRP, loginViaSRP } from '../services/srp'; -import { getSRPAttributes } from '../api/srp'; -import { SRPAttributes } from '../types/srp'; - -import { - isFirstLogin, - setIsFirstLogin, -} from '@ente/shared/storage/localStorage/helpers'; -import { KeyAttributes, User } from '@ente/shared/user/types'; +import { VerticallyCentered } from '@ente/shared/components/Container'; +import EnteSpinner from '@ente/shared/components/EnteSpinner'; import FormPaper from '@ente/shared/components/Form/FormPaper'; -import FormPaperTitle from '@ente/shared/components/Form/FormPaper/Title'; import FormPaperFooter from '@ente/shared/components/Form/FormPaper/Footer'; +import FormPaperTitle from '@ente/shared/components/Form/FormPaper/Title'; import LinkButton from '@ente/shared/components/LinkButton'; -import isElectron from 'is-electron'; -import { VerticallyCentered } from '@ente/shared/components/Container'; -import EnteSpinner from '@ente/shared/components/EnteSpinner'; import VerifyMasterPasswordForm, { VerifyMasterPasswordFormProps, } from '@ente/shared/components/VerifyMasterPasswordForm'; +import { getAccountsURL } from '@ente/shared/network/api'; +import { + isFirstLogin, + setIsFirstLogin, +} from '@ente/shared/storage/localStorage/helpers'; +import { KeyAttributes, User } from '@ente/shared/user/types'; +import isElectron from 'is-electron'; +import { getSRPAttributes } from '../api/srp'; +import { configureSRP, loginViaSRP } from '../services/srp'; +import { SRPAttributes } from '../types/srp'; // import { APPS, getAppName } from '@ente/shared/apps'; -import { addLocalLog } from '@ente/shared/logging'; +import { APP_HOMES } from '@ente/shared/apps/constants'; +import { PageProps } from '@ente/shared/apps/types'; import ComlinkCryptoWorker from '@ente/shared/crypto'; import { B64EncryptionResult } from '@ente/shared/crypto/types'; +import ElectronAPIs from '@ente/shared/electron'; import { CustomError } from '@ente/shared/error'; -import InMemoryStore, { MS_KEYS } from '@ente/shared/storage/InMemoryStore'; -import { PageProps } from '@ente/shared/apps/types'; -import { APP_HOMES } from '@ente/shared/apps/constants'; +import { addLocalLog } from '@ente/shared/logging'; import { logError } from '@ente/shared/sentry'; -import ElectronAPIs from '@ente/shared/electron'; +import InMemoryStore, { MS_KEYS } from '@ente/shared/storage/InMemoryStore'; export default function Credentials({ appContext, @@ -166,7 +166,8 @@ export default function Credentials({ isTwoFactorPasskeysEnabled: true, }); InMemoryStore.set(MS_KEYS.REDIRECT_URL, PAGES.ROOT); - window.location.href = `${process.env.NEXT_PUBLIC_ACCOUNTS_ENDPOINT}/passkeys/flow?passkeySessionID=${passkeySessionID}&redirect=${window.location.origin}/passkeys/finish`; + window.location.href = `${getAccountsURL()}/passkeys/flow?passkeySessionID=${passkeySessionID}&redirect=${window.location.origin + }/passkeys/finish`; return; } else if (twoFactorSessionID) { const sessionKeyAttributes = diff --git a/packages/accounts/pages/verify.tsx b/packages/accounts/pages/verify.tsx index d661159637139049558458136bdfd3dbd7bd5b32..07bc178c9acd18729b6c4c9e97a7ffba9b8fc2da 100644 --- a/packages/accounts/pages/verify.tsx +++ b/packages/accounts/pages/verify.tsx @@ -14,6 +14,7 @@ import SingleInputForm, { SingleInputFormProps, } from '@ente/shared/components/SingleInputForm'; import { ApiError } from '@ente/shared/error'; +import { getAccountsURL } from '@ente/shared/network/api'; import InMemoryStore, { MS_KEYS } from '@ente/shared/storage/InMemoryStore'; import { clearFiles } from '@ente/shared/storage/localForage/helpers'; import { LS_KEYS, getData, setData } from '@ente/shared/storage/localStorage'; @@ -80,7 +81,8 @@ export default function VerifyPage({ appContext, router, appName }: PageProps) { isTwoFactorPasskeysEnabled: true, }); setIsFirstLogin(true); - window.location.href = `${process.env.NEXT_PUBLIC_ACCOUNTS_ENDPOINT}/passkeys/flow?passkeySessionID=${passkeySessionID}&redirect=${window.location.origin}/passkeys/finish`; + window.location.href = `${getAccountsURL()}/passkeys/flow?passkeySessionID=${passkeySessionID}&redirect=${window.location.origin + }/passkeys/finish`; router.push(PAGES.CREDENTIALS); } else if (twoFactorSessionID) { setData(LS_KEYS.USER, { diff --git a/packages/shared/network/api.ts b/packages/shared/network/api.ts index 16aae2806ebb70dc0bf9f603593185ab932b6677..46eddaad81586964d934db2d74d2bd61f1724840 100644 --- a/packages/shared/network/api.ts +++ b/packages/shared/network/api.ts @@ -88,6 +88,14 @@ export const getAuthURL = () => { return `https://auth.ente.io`; }; +export const getAccountsURL = () => { + const accountsURL = process.env.NEXT_PUBLIC_ENTE_ACCOUNTS_ENDPOINT; + if (isDevDeployment() && accountsURL) { + return accountsURL; + } + return `https://accounts.ente.io`; +}; + export const getSentryTunnelURL = () => { return `https://sentry-reporter.ente.io`; }; @@ -103,9 +111,9 @@ export const isDevDeployment = () => { if (globalThis?.location) { return ( process.env.NEXT_PUBLIC_ENTE_WEB_ENDPOINT === - globalThis.location.origin || + globalThis.location.origin || process.env.NEXT_PUBLIC_ENTE_ALBUM_ENDPOINT === - globalThis.location.origin || + globalThis.location.origin || process.env.NEXT_PUBLIC_IS_TEST_APP === 'true' || process.env.NODE_ENV === 'development' );