Revert "[APP-1882] fix email not updating in session state after email change (#9953)"
This reverts commit 9c29b2867a.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import {useMutation} from '@tanstack/react-query'
|
import {useMutation} from '@tanstack/react-query'
|
||||||
|
|
||||||
import {useAgent, useSession, useSessionApi} from '#/state/session'
|
import {useAgent, useSession} from '#/state/session'
|
||||||
|
|
||||||
export function useConfirmEmail({
|
export function useConfirmEmail({
|
||||||
onSuccess,
|
onSuccess,
|
||||||
@@ -8,7 +8,6 @@ export function useConfirmEmail({
|
|||||||
}: {onSuccess?: () => void; onError?: () => void} = {}) {
|
}: {onSuccess?: () => void; onError?: () => void} = {}) {
|
||||||
const agent = useAgent()
|
const agent = useAgent()
|
||||||
const {currentAccount} = useSession()
|
const {currentAccount} = useSession()
|
||||||
const {partialRefreshSession} = useSessionApi()
|
|
||||||
|
|
||||||
return useMutation({
|
return useMutation({
|
||||||
mutationFn: async ({token}: {token: string}) => {
|
mutationFn: async ({token}: {token: string}) => {
|
||||||
@@ -20,7 +19,8 @@ export function useConfirmEmail({
|
|||||||
email: currentAccount.email.trim(),
|
email: currentAccount.email.trim(),
|
||||||
token: token.trim(),
|
token: token.trim(),
|
||||||
})
|
})
|
||||||
await partialRefreshSession()
|
// will update session state at root of app
|
||||||
|
await agent.resumeSession(agent.session!)
|
||||||
},
|
},
|
||||||
onSuccess,
|
onSuccess,
|
||||||
onError,
|
onError,
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
import {useMutation} from '@tanstack/react-query'
|
import {useMutation} from '@tanstack/react-query'
|
||||||
|
|
||||||
import {useAgent, useSession, useSessionApi} from '#/state/session'
|
import {useAgent, useSession} from '#/state/session'
|
||||||
|
|
||||||
export function useManageEmail2FA() {
|
export function useManageEmail2FA() {
|
||||||
const agent = useAgent()
|
const agent = useAgent()
|
||||||
const {currentAccount} = useSession()
|
const {currentAccount} = useSession()
|
||||||
const {partialRefreshSession} = useSessionApi()
|
|
||||||
|
|
||||||
return useMutation({
|
return useMutation({
|
||||||
mutationFn: async ({
|
mutationFn: async ({
|
||||||
@@ -23,7 +22,8 @@ export function useManageEmail2FA() {
|
|||||||
emailAuthFactor: enabled,
|
emailAuthFactor: enabled,
|
||||||
token,
|
token,
|
||||||
})
|
})
|
||||||
await partialRefreshSession()
|
// will update session state at root of app
|
||||||
|
await agent.resumeSession(agent.session!)
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,19 @@
|
|||||||
import {useMutation} from '@tanstack/react-query'
|
import {useMutation} from '@tanstack/react-query'
|
||||||
|
|
||||||
import {useAgent, useSessionApi} from '#/state/session'
|
import {useAgent} from '#/state/session'
|
||||||
import {useRequestEmailUpdate} from '#/components/dialogs/EmailDialog/data/useRequestEmailUpdate'
|
import {useRequestEmailUpdate} from '#/components/dialogs/EmailDialog/data/useRequestEmailUpdate'
|
||||||
|
|
||||||
async function updateEmailAndRefreshSession(
|
async function updateEmailAndRefreshSession(
|
||||||
agent: ReturnType<typeof useAgent>,
|
agent: ReturnType<typeof useAgent>,
|
||||||
partialRefreshSession: () => Promise<void>,
|
|
||||||
email: string,
|
email: string,
|
||||||
token?: string,
|
token?: string,
|
||||||
) {
|
) {
|
||||||
await agent.com.atproto.server.updateEmail({email: email.trim(), token})
|
await agent.com.atproto.server.updateEmail({email: email.trim(), token})
|
||||||
await partialRefreshSession()
|
await agent.resumeSession(agent.session!)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useUpdateEmail() {
|
export function useUpdateEmail() {
|
||||||
const agent = useAgent()
|
const agent = useAgent()
|
||||||
const {partialRefreshSession} = useSessionApi()
|
|
||||||
const {mutateAsync: requestEmailUpdate} = useRequestEmailUpdate()
|
const {mutateAsync: requestEmailUpdate} = useRequestEmailUpdate()
|
||||||
|
|
||||||
return useMutation<
|
return useMutation<
|
||||||
@@ -25,12 +23,7 @@ export function useUpdateEmail() {
|
|||||||
>({
|
>({
|
||||||
mutationFn: async ({email, token}: {email: string; token?: string}) => {
|
mutationFn: async ({email, token}: {email: string; token?: string}) => {
|
||||||
if (token) {
|
if (token) {
|
||||||
await updateEmailAndRefreshSession(
|
await updateEmailAndRefreshSession(agent, email, token)
|
||||||
agent,
|
|
||||||
partialRefreshSession,
|
|
||||||
email,
|
|
||||||
token,
|
|
||||||
)
|
|
||||||
return {
|
return {
|
||||||
status: 'success',
|
status: 'success',
|
||||||
}
|
}
|
||||||
@@ -41,12 +34,7 @@ export function useUpdateEmail() {
|
|||||||
status: 'tokenRequired',
|
status: 'tokenRequired',
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
await updateEmailAndRefreshSession(
|
await updateEmailAndRefreshSession(agent, email, token)
|
||||||
agent,
|
|
||||||
partialRefreshSession,
|
|
||||||
email,
|
|
||||||
token,
|
|
||||||
)
|
|
||||||
return {
|
return {
|
||||||
status: 'success',
|
status: 'success',
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -284,7 +284,6 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
|
|||||||
type: 'partial-refresh-session',
|
type: 'partial-refresh-session',
|
||||||
accountDid: agent.session!.did,
|
accountDid: agent.session!.did,
|
||||||
patch: {
|
patch: {
|
||||||
email: data.email,
|
|
||||||
emailConfirmed: data.emailConfirmed,
|
emailConfirmed: data.emailConfirmed,
|
||||||
emailAuthFactor: data.emailAuthFactor,
|
emailAuthFactor: data.emailAuthFactor,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -58,10 +58,7 @@ export type Action =
|
|||||||
| {
|
| {
|
||||||
type: 'partial-refresh-session'
|
type: 'partial-refresh-session'
|
||||||
accountDid: string
|
accountDid: string
|
||||||
patch: Pick<
|
patch: Pick<SessionAccount, 'emailConfirmed' | 'emailAuthFactor'>
|
||||||
SessionAccount,
|
|
||||||
'email' | 'emailConfirmed' | 'emailAuthFactor'
|
|
||||||
>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function createPublicAgentState(): AgentState {
|
function createPublicAgentState(): AgentState {
|
||||||
@@ -242,7 +239,6 @@ let reducer = (state: State, action: Action): State => {
|
|||||||
* Only mutating values that are safe. Be very careful with this.
|
* Only mutating values that are safe. Be very careful with this.
|
||||||
*/
|
*/
|
||||||
if (agent.session) {
|
if (agent.session) {
|
||||||
agent.session.email = patch.email ?? agent.session.email
|
|
||||||
agent.session.emailConfirmed =
|
agent.session.emailConfirmed =
|
||||||
patch.emailConfirmed ?? agent.session.emailConfirmed
|
patch.emailConfirmed ?? agent.session.emailConfirmed
|
||||||
agent.session.emailAuthFactor =
|
agent.session.emailAuthFactor =
|
||||||
@@ -259,7 +255,6 @@ let reducer = (state: State, action: Action): State => {
|
|||||||
if (a.did === accountDid) {
|
if (a.did === accountDid) {
|
||||||
return {
|
return {
|
||||||
...a,
|
...a,
|
||||||
email: patch.email ?? a.email,
|
|
||||||
emailConfirmed: patch.emailConfirmed ?? a.emailConfirmed,
|
emailConfirmed: patch.emailConfirmed ?? a.emailConfirmed,
|
||||||
emailAuthFactor: patch.emailAuthFactor ?? a.emailAuthFactor,
|
emailAuthFactor: patch.emailAuthFactor ?? a.emailAuthFactor,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user