fix: connect loader
This commit is contained in:
parent
52fc3bc24b
commit
cccb49134f
6 changed files with 65 additions and 15 deletions
|
|
@ -20,6 +20,7 @@ export default function AccountManagement({
|
||||||
profileData,
|
profileData,
|
||||||
openAccountModal,
|
openAccountModal,
|
||||||
waitingSmsType,
|
waitingSmsType,
|
||||||
|
clearAuthWaitParams,
|
||||||
}) {
|
}) {
|
||||||
const { colors, custom } = useTheme();
|
const { colors, custom } = useTheme();
|
||||||
const isConnected = isConnectedProfile(profileData);
|
const isConnected = isConnectedProfile(profileData);
|
||||||
|
|
@ -136,6 +137,7 @@ export default function AccountManagement({
|
||||||
modalState={modalState}
|
modalState={modalState}
|
||||||
profileData={profileData}
|
profileData={profileData}
|
||||||
waitingSmsType={waitingSmsType}
|
waitingSmsType={waitingSmsType}
|
||||||
|
clearAuthWaitParams={clearAuthWaitParams}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ export default function AccountManagementModal({
|
||||||
modalState,
|
modalState,
|
||||||
profileData,
|
profileData,
|
||||||
waitingSmsType,
|
waitingSmsType,
|
||||||
|
clearAuthWaitParams,
|
||||||
}) {
|
}) {
|
||||||
const styles = useStyles();
|
const styles = useStyles();
|
||||||
const [modal, setModal] = modalState;
|
const [modal, setModal] = modalState;
|
||||||
|
|
@ -38,6 +39,7 @@ export default function AccountManagementModal({
|
||||||
authMethod={authMethod}
|
authMethod={authMethod}
|
||||||
setAuthMethod={setAuthMethod}
|
setAuthMethod={setAuthMethod}
|
||||||
waitingSmsType={waitingSmsType}
|
waitingSmsType={waitingSmsType}
|
||||||
|
clearAuthWaitParams={clearAuthWaitParams}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{visible && component === "destroy" && (
|
{visible && component === "destroy" && (
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ export default function AccountManagementModalConnect({
|
||||||
authMethod,
|
authMethod,
|
||||||
setAuthMethod,
|
setAuthMethod,
|
||||||
waitingSmsType,
|
waitingSmsType,
|
||||||
|
clearAuthWaitParams,
|
||||||
}) {
|
}) {
|
||||||
const styles = useStyles();
|
const styles = useStyles();
|
||||||
const { colors, custom } = useTheme();
|
const { colors, custom } = useTheme();
|
||||||
|
|
@ -92,20 +93,39 @@ export default function AccountManagementModalConnect({
|
||||||
const [loginConfirmRequest] = useMutation(LOGIN_CONFIRM_MUTATION);
|
const [loginConfirmRequest] = useMutation(LOGIN_CONFIRM_MUTATION);
|
||||||
|
|
||||||
const confirmLoginRequest = useCallback(async () => {
|
const confirmLoginRequest = useCallback(async () => {
|
||||||
const deviceUuid = await getDeviceUuid();
|
try {
|
||||||
const {
|
const deviceUuid = await getDeviceUuid();
|
||||||
data: {
|
const {
|
||||||
doAuthLoginConfimLoginRequest: { authTokenJwt },
|
data: {
|
||||||
},
|
doAuthLoginConfimLoginRequest: { authTokenJwt },
|
||||||
} = await loginConfirmRequest({
|
},
|
||||||
variables: { loginRequestId: loginRequest.id, deviceUuid },
|
} = await loginConfirmRequest({
|
||||||
});
|
variables: { loginRequestId: loginRequest.id, deviceUuid },
|
||||||
await authActions.confirmLoginRequest({ authTokenJwt, isConnected });
|
});
|
||||||
}, [loginConfirmRequest, loginRequest?.id, isConnected]);
|
await authActions.confirmLoginRequest({ authTokenJwt, isConnected });
|
||||||
|
setIsLoading(false);
|
||||||
|
clearAuthWaitParams?.();
|
||||||
|
closeModal();
|
||||||
|
} catch (e) {
|
||||||
|
setIsLoading(false);
|
||||||
|
}
|
||||||
|
}, [
|
||||||
|
loginConfirmRequest,
|
||||||
|
loginRequest?.id,
|
||||||
|
isConnected,
|
||||||
|
clearAuthWaitParams,
|
||||||
|
closeModal,
|
||||||
|
]);
|
||||||
|
|
||||||
const rejectLoginRequest = useCallback(async () => {
|
const rejectLoginRequest = useCallback(async () => {
|
||||||
await deleteLoginRequest({ variables: { id: loginRequest.id } });
|
try {
|
||||||
}, [deleteLoginRequest, loginRequest]);
|
await deleteLoginRequest({ variables: { id: loginRequest.id } });
|
||||||
|
} finally {
|
||||||
|
setIsLoading(false);
|
||||||
|
clearAuthWaitParams?.();
|
||||||
|
closeModal();
|
||||||
|
}
|
||||||
|
}, [deleteLoginRequest, loginRequest?.id, clearAuthWaitParams, closeModal]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View
|
<View
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ export default function Form({
|
||||||
profileData,
|
profileData,
|
||||||
openAccountModal,
|
openAccountModal,
|
||||||
waitingSmsType,
|
waitingSmsType,
|
||||||
|
clearAuthWaitParams,
|
||||||
}) {
|
}) {
|
||||||
const { userId } = useSessionState(["userId"]);
|
const { userId } = useSessionState(["userId"]);
|
||||||
|
|
||||||
|
|
@ -153,7 +154,11 @@ export default function Form({
|
||||||
borderBottomWidth: 1,
|
borderBottomWidth: 1,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<PhoneNumbers data={profileData} waitingSmsType={waitingSmsType} />
|
<PhoneNumbers
|
||||||
|
data={profileData}
|
||||||
|
waitingSmsType={waitingSmsType}
|
||||||
|
clearAuthWaitParams={clearAuthWaitParams}
|
||||||
|
/>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
|
@ -190,6 +195,7 @@ export default function Form({
|
||||||
profileData={profileData}
|
profileData={profileData}
|
||||||
openAccountModal={openAccountModal}
|
openAccountModal={openAccountModal}
|
||||||
waitingSmsType={waitingSmsType}
|
waitingSmsType={waitingSmsType}
|
||||||
|
clearAuthWaitParams={clearAuthWaitParams}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,11 @@ import {
|
||||||
|
|
||||||
import useSendAuthSMS from "~/hooks/useSendAuthSMS";
|
import useSendAuthSMS from "~/hooks/useSendAuthSMS";
|
||||||
|
|
||||||
export default function PhoneNumbersView({ data, waitingSmsType }) {
|
export default function PhoneNumbersView({
|
||||||
|
data,
|
||||||
|
waitingSmsType,
|
||||||
|
clearAuthWaitParams,
|
||||||
|
}) {
|
||||||
const [isLoading, setIsLoading] = useState(waitingSmsType === "R" || false);
|
const [isLoading, setIsLoading] = useState(waitingSmsType === "R" || false);
|
||||||
const phoneNumberList = data.selectOneUser.manyPhoneNumber;
|
const phoneNumberList = data.selectOneUser.manyPhoneNumber;
|
||||||
|
|
||||||
|
|
@ -69,8 +73,16 @@ export default function PhoneNumbersView({ data, waitingSmsType }) {
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (data.selectOneUser.oneUserLoginRequest) {
|
if (data.selectOneUser.oneUserLoginRequest) {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
|
clearAuthWaitParams?.();
|
||||||
}
|
}
|
||||||
}, [data.selectOneUser.oneUserLoginRequest]);
|
}, [data.selectOneUser.oneUserLoginRequest, clearAuthWaitParams]);
|
||||||
|
|
||||||
|
// Defensive cleanup on unmount to ensure no lingering loader
|
||||||
|
useEffect(() => {
|
||||||
|
return () => {
|
||||||
|
setIsLoading(false);
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
const deletePhoneNumberModalStatePair = useState({ visible: false });
|
const deletePhoneNumberModalStatePair = useState({ visible: false });
|
||||||
const [deletePhoneNumberModalState, setDeletePhoneNumberModalState] =
|
const [deletePhoneNumberModalState, setDeletePhoneNumberModalState] =
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,13 @@ export default withConnectivity(function Profile({ navigation, route }) {
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, [userId]);
|
}, [userId]);
|
||||||
|
|
||||||
|
const clearAuthWaitParams = React.useCallback(() => {
|
||||||
|
navigation.setParams({
|
||||||
|
waitingSmsType: undefined,
|
||||||
|
openAccountModal: undefined,
|
||||||
|
});
|
||||||
|
}, [navigation]);
|
||||||
|
|
||||||
if (loading || !data?.selectOneUser) {
|
if (loading || !data?.selectOneUser) {
|
||||||
return <Loader />;
|
return <Loader />;
|
||||||
}
|
}
|
||||||
|
|
@ -53,6 +60,7 @@ export default withConnectivity(function Profile({ navigation, route }) {
|
||||||
profileData={data}
|
profileData={data}
|
||||||
openAccountModal={route.params?.openAccountModal}
|
openAccountModal={route.params?.openAccountModal}
|
||||||
waitingSmsType={route.params?.waitingSmsType}
|
waitingSmsType={route.params?.waitingSmsType}
|
||||||
|
clearAuthWaitParams={clearAuthWaitParams}
|
||||||
/>
|
/>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue