From 1b0cdf1b90b58aee1bb41dbaaeb729b60276fec6 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Wed, 29 May 2024 18:13:51 -0500 Subject: [PATCH] Disambiguation of the deactivation --- src/screens/{Deactivated.tsx => SignupQueued.tsx} | 6 +++--- src/state/persisted/schema.ts | 2 +- src/state/session/agent.ts | 8 ++++---- src/state/session/index.tsx | 2 +- src/state/session/util.ts | 5 +++-- src/view/shell/createNativeStackNavigatorWithAuth.tsx | 6 +++--- 6 files changed, 15 insertions(+), 14 deletions(-) rename src/screens/{Deactivated.tsx => SignupQueued.tsx} (97%) diff --git a/src/screens/Deactivated.tsx b/src/screens/SignupQueued.tsx similarity index 97% rename from src/screens/Deactivated.tsx rename to src/screens/SignupQueued.tsx index c9e9f95254..3abe376a3b 100644 --- a/src/screens/Deactivated.tsx +++ b/src/screens/SignupQueued.tsx @@ -6,7 +6,7 @@ import {useLingui} from '@lingui/react' import {logger} from '#/logger' import {isWeb} from '#/platform/detection' -import {isSessionDeactivated, useAgent, useSessionApi} from '#/state/session' +import {isSignupQueued, useAgent, useSessionApi} from '#/state/session' import {useOnboardingDispatch} from '#/state/shell' import {ScrollView} from '#/view/com/util/Views' import {Logo} from '#/view/icons/Logo' @@ -17,7 +17,7 @@ import {P, Text} from '#/components/Typography' const COL_WIDTH = 400 -export function Deactivated() { +export function SignupQueued() { const {_} = useLingui() const t = useTheme() const insets = useSafeAreaInsets() @@ -41,7 +41,7 @@ export function Deactivated() { if (res.data.activated) { // ready to go, exchange the access token for a usable one and kick off onboarding await agent.refreshSession() - if (!isSessionDeactivated(agent.session?.accessJwt)) { + if (!isSignupQueued(agent.session?.accessJwt)) { onboardingDispatch({type: 'start'}) } } else { diff --git a/src/state/persisted/schema.ts b/src/state/persisted/schema.ts index 77a79b78e4..95f3acdbbd 100644 --- a/src/state/persisted/schema.ts +++ b/src/state/persisted/schema.ts @@ -17,7 +17,7 @@ const accountSchema = z.object({ emailAuthFactor: z.boolean().optional(), refreshJwt: z.string().optional(), // optional because it can expire accessJwt: z.string().optional(), // optional because it can expire - deactivated: z.boolean().optional(), + signupQueued: z.boolean().optional(), pdsUrl: z.string().optional(), }) export type PersistedAccount = z.infer diff --git a/src/state/session/agent.ts b/src/state/session/agent.ts index 45013debc2..704ef1c9a9 100644 --- a/src/state/session/agent.ts +++ b/src/state/session/agent.ts @@ -16,7 +16,7 @@ import { configureModerationForGuest, } from './moderation' import {SessionAccount} from './types' -import {isSessionDeactivated, isSessionExpired} from './util' +import {isSessionExpired, isSignupQueued} from './util' export function createPublicAgent() { configureModerationForGuest() // Side effect but only relevant for tests @@ -51,7 +51,7 @@ export async function createAgentAndResume( await networkRetry(1, () => agent.resumeSession(prevSession)) } else { agent.session = prevSession - if (!storedAccount.deactivated) { + if (!storedAccount.signupQueued) { // Intentionally not awaited to unblock the UI: networkRetry(3, () => agent.resumeSession(prevSession)).catch( (e: any) => { @@ -135,7 +135,7 @@ export async function createAgentAndCreateAccount( const account = agentToSessionAccountOrThrow(agent) const gates = tryFetchGates(account.did, 'prefer-fresh-gates') const moderation = configureModerationForAccount(agent, account) - if (!account.deactivated) { + if (!account.signupQueued) { /*dont await*/ agent.upsertProfile(_existing => { return { displayName: '', @@ -234,7 +234,7 @@ export function agentToSessionAccount( emailAuthFactor: agent.session.emailAuthFactor || false, refreshJwt: agent.session.refreshJwt, accessJwt: agent.session.accessJwt, - deactivated: isSessionDeactivated(agent.session.accessJwt), + signupQueued: isSignupQueued(agent.session.accessJwt), pdsUrl: agent.pdsUrl?.toString(), } } diff --git a/src/state/session/index.tsx b/src/state/session/index.tsx index e38dd2bb55..371bd459ad 100644 --- a/src/state/session/index.tsx +++ b/src/state/session/index.tsx @@ -17,7 +17,7 @@ import { } from './agent' import {getInitialState, reducer} from './reducer' -export {isSessionDeactivated} from './util' +export {isSignupQueued} from './util' export type {SessionAccount} from '#/state/session/types' import {SessionApiContext, SessionStateContext} from '#/state/session/types' diff --git a/src/state/session/util.ts b/src/state/session/util.ts index 8948ecd6b9..3a5909e825 100644 --- a/src/state/session/util.ts +++ b/src/state/session/util.ts @@ -10,11 +10,12 @@ export function readLastActiveAccount() { return accounts.find(a => a.did === currentAccount?.did) } -export function isSessionDeactivated(accessJwt: string | undefined) { +export function isSignupQueued(accessJwt: string | undefined) { if (accessJwt) { const sessData = jwtDecode(accessJwt) return ( - hasProp(sessData, 'scope') && sessData.scope === 'com.atproto.deactivated' + hasProp(sessData, 'scope') && + sessData.scope === 'com.atproto.signupQueued' ) } return false diff --git a/src/view/shell/createNativeStackNavigatorWithAuth.tsx b/src/view/shell/createNativeStackNavigatorWithAuth.tsx index 882fdbe6e2..b51ad1de53 100644 --- a/src/view/shell/createNativeStackNavigatorWithAuth.tsx +++ b/src/view/shell/createNativeStackNavigatorWithAuth.tsx @@ -30,8 +30,8 @@ import { useLoggedOutViewControls, } from '#/state/shell/logged-out' import {isWeb} from 'platform/detection' -import {Deactivated} from '#/screens/Deactivated' import {Onboarding} from '#/screens/Onboarding' +import {SignupQueued} from '#/screens/SignupQueued' import {LoggedOut} from '../com/auth/LoggedOut' import {BottomBarWeb} from './bottom-bar/BottomBarWeb' import {DesktopLeftNav} from './desktop/LeftNav' @@ -102,8 +102,8 @@ function NativeStackNavigator({ if ((!PWI_ENABLED || activeRouteRequiresAuth) && !hasSession) { return } - if (hasSession && currentAccount?.deactivated) { - return + if (hasSession && currentAccount?.signupQueued) { + return } if (showLoggedOut) { return setShowLoggedOut(false)} />