Skip to content

Commit b98d15a

Browse files
limichangelimichange
authored andcommitted
fix: V2
1 parent ac04066 commit b98d15a

File tree

5 files changed

+60
-21
lines changed

5 files changed

+60
-21
lines changed

packages/kit/src/views/Prime/components/PrimeLoginEmailDialogV2/PrimeLoginEmailDialogV2.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export function PrimeLoginEmailDialogV2(props: {
1313
const intl = useIntl();
1414

1515
const form = useForm<{ email: string }>({
16-
defaultValues: { email: 'limichange@hotmail.com' },
16+
defaultValues: { email: 'yao.hou@onekey.so' },
1717
});
1818

1919
const submit = useCallback(

packages/kit/src/views/Prime/hooks/usePrimeAuthV2.tsx

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect } from 'react';
1+
import { useEffect, useRef } from 'react';
22

33
import type { IDialogInstance } from '@onekeyhq/components';
44
import { Dialog, Toast } from '@onekeyhq/components';
@@ -11,8 +11,11 @@ import { usePrivyUniversalV2 } from './usePrivyUniversalV2';
1111

1212
export function usePrimeAuthV2() {
1313
const [primePersistAtom] = usePrimePersistAtom();
14+
const emailDialogRef = useRef<IDialogInstance | undefined>(undefined);
15+
const emailCodeDialogRef = useRef<IDialogInstance | undefined>(undefined);
1416

15-
const { useLoginWithEmail, logout } = usePrivyUniversalV2();
17+
const { useLoginWithEmail, logout, getAccessToken, isReady, authenticated } =
18+
usePrivyUniversalV2();
1619
const { sendCode, loginWithCode, state } = useLoginWithEmail({
1720
onComplete: () => {
1821
console.log('🔑 ✅ User successfully logged in with email');
@@ -22,10 +25,35 @@ export function usePrimeAuthV2() {
2225
},
2326
});
2427

28+
async function closeDialogs() {
29+
await emailDialogRef.current?.close();
30+
await emailCodeDialogRef.current?.close();
31+
}
32+
2533
useEffect(() => {
26-
Toast.success({
27-
title: JSON.stringify(state),
28-
});
34+
if (state.status === 'sending-code') {
35+
Toast.success({
36+
title: '🔑 ✅ send code',
37+
});
38+
} else if (state.status === 'awaiting-code-input') {
39+
Toast.success({
40+
title: '🔑 ✅ awaiting code input',
41+
});
42+
} else if (state.status === 'submitting-code') {
43+
Toast.success({
44+
title: '🔑 ✅ submitting code',
45+
});
46+
} else if (state.status === 'done') {
47+
Toast.success({
48+
title: '🔑 ✅ User successfully logged in with email',
49+
});
50+
51+
closeDialogs();
52+
} else if (state.status === 'error') {
53+
Toast.error({
54+
title: '🔑 ❌ User failed to log in with email',
55+
});
56+
}
2957
}, [state]);
3058

3159
const loginWithEmail = async () => {
@@ -36,7 +64,7 @@ export function usePrimeAuthV2() {
3664
// 2. on email submitted
3765
onEmailSubmitted={async (email) => {
3866
// 3. open code dialog
39-
Dialog.show({
67+
emailCodeDialogRef.current = Dialog.show({
4068
renderContent: (
4169
// 4. input code
4270
<PrimeLoginEmailCodeDialogV2
@@ -51,8 +79,15 @@ export function usePrimeAuthV2() {
5179
),
5280
});
5381

54-
console.log('dialog', dialog);
82+
emailDialogRef.current = dialog;
5583
};
5684

57-
return { loginWithEmail, user: primePersistAtom, logout };
85+
return {
86+
loginWithEmail,
87+
user: primePersistAtom,
88+
logout,
89+
getAccessToken,
90+
isReady,
91+
authenticated,
92+
};
5893
}

packages/kit/src/views/Prime/hooks/usePrivyUniversalV2/usePrivyUniversalV2.native.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { useLoginWithEmail, usePrivy } from '@privy-io/expo';
22

3-
import type { IUsePrivyUniversalV2 } from './usePrivyUniversalV2Types';
43
import { Toast } from '@onekeyhq/components';
54

5+
import type { IUsePrivyUniversalV2 } from './usePrivyUniversalV2Types';
6+
67
export function usePrivyUniversalV2(): IUsePrivyUniversalV2 {
78
const { logout, isReady, getAccessToken, user } = usePrivy();
89
const authenticated = !!user;

packages/kit/src/views/Prime/pages/PrimeDashboard/PrimeDashboard.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import openUrlUtils from '@onekeyhq/shared/src/utils/openUrlUtils';
2828
import timerUtils from '@onekeyhq/shared/src/utils/timerUtils';
2929

3030
import { useFetchPrimeUserInfo } from '../../hooks/useFetchPrimeUserInfo';
31-
import { usePrimeAuth } from '../../hooks/usePrimeAuth';
3231
import { usePrimeAuthV2 } from '../../hooks/usePrimeAuthV2';
3332
import { usePrimePayment } from '../../hooks/usePrimePayment';
3433

@@ -67,9 +66,15 @@ function PrimeBanner() {
6766

6867
export default function PrimeDashboard() {
6968
const intl = useIntl();
70-
const { loginWithEmail } = usePrimeAuthV2();
69+
const {
70+
getAccessToken,
71+
user,
72+
loginWithEmail,
73+
logout,
74+
isReady,
75+
authenticated,
76+
} = usePrimeAuthV2();
7177
const { top } = useSafeAreaInsets();
72-
const { logout, privy, getAccessToken, user } = usePrimeAuth();
7378
const navigation = useAppNavigation();
7479
const { fetchPrimeUserInfo } = useFetchPrimeUserInfo();
7580
useEffect(() => {
@@ -261,10 +266,8 @@ export default function PrimeDashboard() {
261266
<Button
262267
onPress={() => {
263268
showDebugMessageByDialog({
264-
ready: privy.isReady,
265-
authenticated: privy.authenticated,
266-
nativeUser: privy?.native?.user,
267-
webUser: privy?.web?.user,
269+
ready: isReady,
270+
authenticated,
268271
});
269272
}}
270273
>

packages/kit/src/views/Prime/pages/PrimeDashboard/PrimeUserInfo.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { StyleSheet } from 'react-native';
22

33
import { Badge, Icon, SizableText, XStack } from '@onekeyhq/components';
44

5-
import { usePrimeAuth } from '../../hooks/usePrimeAuth';
5+
import { usePrimeAuthV2 } from '../../hooks/usePrimeAuthV2';
66

77
import { PrimeUserInfoMoreButton } from './PrimeUserInfoMoreButton';
88

@@ -11,7 +11,7 @@ export function PrimeUserInfo({
1111
}: {
1212
doPurchase?: () => Promise<void>;
1313
}) {
14-
const { user, privy } = usePrimeAuth();
14+
const { user } = usePrimeAuthV2();
1515
const isPrime = user?.primeSubscription?.isActive;
1616

1717
return (
@@ -31,8 +31,8 @@ export function PrimeUserInfo({
3131
<Icon name="PeopleOutline" color="$iconSubdued" size="$5" />
3232
<SizableText
3333
onPress={() => {
34-
console.log(privy?.web?.user);
35-
console.log(privy?.native?.user);
34+
// console.log(privy?.web?.user);
35+
// console.log(privy?.native?.user);
3636
}}
3737
flex={1}
3838
size="$bodyMdMedium"

0 commit comments

Comments
 (0)