From ef7e2a981e24e2594eacf9a04a83aff579ea22be Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Thu, 4 Apr 2024 12:57:30 -0500 Subject: [PATCH] Remove global state manipulation in favor of refreshing the agent --- src/view/com/modals/ChangeEmail.tsx | 35 ++++++++++++---------------- src/view/com/modals/ChangeHandle.tsx | 8 +++---- src/view/com/modals/VerifyEmail.tsx | 31 ++++++++++++------------ 3 files changed, 34 insertions(+), 40 deletions(-) diff --git a/src/view/com/modals/ChangeEmail.tsx b/src/view/com/modals/ChangeEmail.tsx index c5672bc814..3cdc0ec7b8 100644 --- a/src/view/com/modals/ChangeEmail.tsx +++ b/src/view/com/modals/ChangeEmail.tsx @@ -1,19 +1,20 @@ import React, {useState} from 'react' import {ActivityIndicator, SafeAreaView, StyleSheet, View} from 'react-native' -import {ScrollView, TextInput} from './util' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import {ErrorMessage} from '../util/error/ErrorMessage' -import * as Toast from '../util/Toast' -import {s, colors} from 'lib/styles' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' + +import {useModalControls} from '#/state/modals' +import {getAgent, useSession, useSessionApi} from '#/state/session' import {usePalette} from 'lib/hooks/usePalette' -import {isWeb} from 'platform/detection' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {cleanError} from 'lib/strings/errors' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {useModalControls} from '#/state/modals' -import {useSession, useSessionApi, getAgent} from '#/state/session' +import {colors, s} from 'lib/styles' +import {isWeb} from 'platform/detection' +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Button} from '../util/forms/Button' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {ScrollView, TextInput} from './util' enum Stages { InputEmail, @@ -26,7 +27,7 @@ export const snapPoints = ['90%'] export function Component() { const pal = usePalette('default') const {currentAccount} = useSession() - const {updateCurrentAccount} = useSessionApi() + const {refreshSession} = useSessionApi() const {_} = useLingui() const [stage, setStage] = useState(Stages.InputEmail) const [email, setEmail] = useState(currentAccount?.email || '') @@ -49,10 +50,7 @@ export function Component() { setStage(Stages.ConfirmCode) } else { await getAgent().com.atproto.server.updateEmail({email: email.trim()}) - updateCurrentAccount({ - email: email.trim(), - emailConfirmed: false, - }) + refreshSession() Toast.show(_(msg`Email updated`)) setStage(Stages.Done) } @@ -81,10 +79,7 @@ export function Component() { email: email.trim(), token: confirmationCode.trim(), }) - updateCurrentAccount({ - email: email.trim(), - emailConfirmed: false, - }) + refreshSession() Toast.show(_(msg`Email updated`)) setStage(Stages.Done) } catch (e) { diff --git a/src/view/com/modals/ChangeHandle.tsx b/src/view/com/modals/ChangeHandle.tsx index 125da44be7..f416f09988 100644 --- a/src/view/com/modals/ChangeHandle.tsx +++ b/src/view/com/modals/ChangeHandle.tsx @@ -72,7 +72,7 @@ export function Inner({ const {_} = useLingui() const pal = usePalette('default') const {track} = useAnalytics() - const {updateCurrentAccount} = useSessionApi() + const {refreshSession} = useSessionApi() const {closeModal} = useModalControls() const {mutateAsync: updateHandle, isPending: isUpdateHandlePending} = useUpdateHandleMutation() @@ -115,9 +115,7 @@ export function Inner({ await updateHandle({ handle: newHandle, }) - updateCurrentAccount({ - handle: newHandle, - }) + refreshSession() closeModal() onChanged() } catch (err: any) { @@ -133,7 +131,7 @@ export function Inner({ onChanged, track, closeModal, - updateCurrentAccount, + refreshSession, updateHandle, serviceInfo, ]) diff --git a/src/view/com/modals/VerifyEmail.tsx b/src/view/com/modals/VerifyEmail.tsx index d3086d3831..5a24db7149 100644 --- a/src/view/com/modals/VerifyEmail.tsx +++ b/src/view/com/modals/VerifyEmail.tsx @@ -6,23 +6,24 @@ import { StyleSheet, View, } from 'react-native' -import {Svg, Circle, Path} from 'react-native-svg' -import {ScrollView, TextInput} from './util' +import {Circle, Path, Svg} from 'react-native-svg' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import {ErrorMessage} from '../util/error/ErrorMessage' -import * as Toast from '../util/Toast' -import {s, colors} from 'lib/styles' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' + +import {logger} from '#/logger' +import {useModalControls} from '#/state/modals' +import {getAgent, useSession, useSessionApi} from '#/state/session' import {usePalette} from 'lib/hooks/usePalette' -import {isWeb} from 'platform/detection' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {cleanError} from 'lib/strings/errors' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {useModalControls} from '#/state/modals' -import {useSession, useSessionApi, getAgent} from '#/state/session' -import {logger} from '#/logger' +import {colors, s} from 'lib/styles' +import {isWeb} from 'platform/detection' +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Button} from '../util/forms/Button' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {ScrollView, TextInput} from './util' export const snapPoints = ['90%'] @@ -35,7 +36,7 @@ enum Stages { export function Component({showReminder}: {showReminder?: boolean}) { const pal = usePalette('default') const {currentAccount} = useSession() - const {updateCurrentAccount} = useSessionApi() + const {refreshSession} = useSessionApi() const {_} = useLingui() const [stage, setStage] = useState( showReminder ? Stages.Reminder : Stages.Email, @@ -74,7 +75,7 @@ export function Component({showReminder}: {showReminder?: boolean}) { email: (currentAccount?.email || '').trim(), token: confirmationCode.trim(), }) - updateCurrentAccount({emailConfirmed: true}) + refreshSession() Toast.show(_(msg`Email verified`)) closeModal() } catch (e) {