From 90895ba2b5d3a5263ac05b184bbe24136a540998 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Wed, 21 Aug 2024 21:33:00 +0300 Subject: [PATCH 1/4] add loading state --- src/libs/actions/Travel.ts | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/libs/actions/Travel.ts b/src/libs/actions/Travel.ts index 57201df771be1..95d9d77d3dad1 100644 --- a/src/libs/actions/Travel.ts +++ b/src/libs/actions/Travel.ts @@ -15,15 +15,27 @@ function acceptSpotnanaTerms() { key: ONYXKEYS.NVP_TRAVEL_SETTINGS, value: { hasAcceptedTerms: true, + isLoading: true, }, }, ]; + + const finallyData: OnyxUpdate[] = [ + { + onyxMethod: 'set', + key: ONYXKEYS.NVP_TRAVEL_SETTINGS, + value: { + isLoading: false, + }, + }, + ]; + const error = new Error('Failed to generate spotnana token.'); - return new Promise((_, reject) => { + return new Promise((resolve, reject) => { asyncOpenURL( // eslint-disable-next-line rulesdir/no-api-side-effects-method - API.makeRequestWithSideEffects(SIDE_EFFECT_REQUEST_COMMANDS.ACCEPT_SPOTNANA_TERMS, null, {optimisticData}) + API.makeRequestWithSideEffects(SIDE_EFFECT_REQUEST_COMMANDS.ACCEPT_SPOTNANA_TERMS, null, {optimisticData, finallyData}) .then((response) => { if (!response?.spotnanaToken) { reject(error); @@ -35,7 +47,10 @@ function acceptSpotnanaTerms() { reject(error); throw error; }), - (travelDotURL) => travelDotURL ?? '', + (travelDotURL) => { + resolve(travelDotURL); + return travelDotURL ?? ''; + }, ); }); } From 7edc7cd47756dd2c74302c4c4ef3006ce9fb8753 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Wed, 21 Aug 2024 21:33:35 +0300 Subject: [PATCH 2/4] add loading state for accepting terms --- src/pages/Travel/TravelTerms.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/pages/Travel/TravelTerms.tsx b/src/pages/Travel/TravelTerms.tsx index 5c2919a9bb30b..f33ab9965d4ad 100644 --- a/src/pages/Travel/TravelTerms.tsx +++ b/src/pages/Travel/TravelTerms.tsx @@ -1,6 +1,7 @@ import React, {useCallback, useEffect, useState} from 'react'; import {View} from 'react-native'; import {ScrollView} from 'react-native-gesture-handler'; +import {useOnyx} from 'react-native-onyx'; import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView'; import CheckboxWithLabel from '@components/CheckboxWithLabel'; import FormAlertWithSubmitButton from '@components/FormAlertWithSubmitButton'; @@ -15,6 +16,7 @@ import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; import * as Travel from '@userActions/Travel'; import CONST from '@src/CONST'; +import ONYXKEYS from '@src/ONYXKEYS'; function TravelTerms() { const styles = useThemeStyles(); @@ -22,6 +24,8 @@ function TravelTerms() { const {canUseSpotnanaTravel} = usePermissions(); const [hasAcceptedTravelTerms, setHasAcceptedTravelTerms] = useState(false); const [errorMessage, setErrorMessage] = useState(''); + const [travelSettings] = useOnyx(ONYXKEYS.NVP_TRAVEL_SETTINGS); + const isLoading = travelSettings?.isLoading; const toggleTravelTerms = () => { setHasAcceptedTravelTerms(!hasAcceptedTravelTerms); @@ -98,6 +102,7 @@ function TravelTerms() { message={errorMessage} isAlertVisible={!!errorMessage} containerStyles={[styles.mh0, styles.mt5]} + isLoading={isLoading} /> )} From e9f23f941a34a4d11f1ddf6d073f47b34e856781 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Wed, 21 Aug 2024 21:33:54 +0300 Subject: [PATCH 3/4] add loading type --- src/types/onyx/TravelSettings.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/types/onyx/TravelSettings.ts b/src/types/onyx/TravelSettings.ts index 3413173c64acb..a1c0a4446ec75 100644 --- a/src/types/onyx/TravelSettings.ts +++ b/src/types/onyx/TravelSettings.ts @@ -8,6 +8,9 @@ type TravelSettings = { /** Whether the user is setup for staging travelDot */ testAccount?: boolean; + + /** Whether the user is waiting for the API response after accepting terms */ + isLoading?: boolean; }; /** Model of workspace travel information to connect with Spotnana */ From 751f9d9738484fdd977a83cdb24b62db96d832f9 Mon Sep 17 00:00:00 2001 From: Rushat Gabhane Date: Mon, 26 Aug 2024 16:57:28 +0300 Subject: [PATCH 4/4] use onyx merge --- src/libs/actions/Travel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/Travel.ts b/src/libs/actions/Travel.ts index 95d9d77d3dad1..f63d73fc27ebc 100644 --- a/src/libs/actions/Travel.ts +++ b/src/libs/actions/Travel.ts @@ -22,7 +22,7 @@ function acceptSpotnanaTerms() { const finallyData: OnyxUpdate[] = [ { - onyxMethod: 'set', + onyxMethod: 'merge', key: ONYXKEYS.NVP_TRAVEL_SETTINGS, value: { isLoading: false,