From c97b8186c5fdf339d97ade2dc34803b3911ef0ae Mon Sep 17 00:00:00 2001 From: layacat Date: Tue, 3 Dec 2024 10:44:35 +0700 Subject: [PATCH 1/3] Enhance delegate functionality by adding optimistic reset action code and updating validation state in DelegateMagicCodeModal. This change ensures that the validateCodeSent state is correctly referenced, improving the user experience during delegate actions. --- src/libs/actions/Delegate.ts | 9 +++++++++ .../Security/AddDelegate/DelegateMagicCodeModal.tsx | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/libs/actions/Delegate.ts b/src/libs/actions/Delegate.ts index e294a57e6c5f..fa826af07387 100644 --- a/src/libs/actions/Delegate.ts +++ b/src/libs/actions/Delegate.ts @@ -89,6 +89,15 @@ function connect(email: string) { }, ]; + const optimisticResetActionCode = { + onyxMethod: Onyx.METHOD.MERGE, + key: ONYXKEYS.VALIDATE_ACTION_CODE, + value: { + validateCodeSent: null, + }, + }; + successData.push(optimisticResetActionCode); + failureData.push(optimisticResetActionCode); // We need to access the authToken directly from the response to update the session // eslint-disable-next-line rulesdir/no-api-side-effects-method API.makeRequestWithSideEffects(SIDE_EFFECT_REQUEST_COMMANDS.CONNECT_AS_DELEGATE, {to: email}, {optimisticData, successData, failureData}) diff --git a/src/pages/settings/Security/AddDelegate/DelegateMagicCodeModal.tsx b/src/pages/settings/Security/AddDelegate/DelegateMagicCodeModal.tsx index e466b862ae9a..3e5567ebec53 100644 --- a/src/pages/settings/Security/AddDelegate/DelegateMagicCodeModal.tsx +++ b/src/pages/settings/Security/AddDelegate/DelegateMagicCodeModal.tsx @@ -21,7 +21,7 @@ type DelegateMagicCodeModalProps = { function DelegateMagicCodeModal({login, role, onClose, isValidateCodeActionModalVisible}: DelegateMagicCodeModalProps) { const {translate} = useLocalize(); const [account] = useOnyx(ONYXKEYS.ACCOUNT); - + const [validateCodeAction] = useOnyx(ONYXKEYS.VALIDATE_ACTION_CODE); const currentDelegate = account?.delegatedAccess?.delegates?.find((d) => d.email === login); const addDelegateErrors = account?.delegatedAccess?.errorFields?.addDelegate?.[login]; const validateLoginError = ErrorUtils.getLatestError(addDelegateErrors); @@ -54,7 +54,7 @@ function DelegateMagicCodeModal({login, role, onClose, isValidateCodeActionModal isVisible={isValidateCodeActionModalVisible} title={translate('delegate.makeSureItIsYou')} sendValidateCode={() => User.requestValidateCodeAction()} - hasMagicCodeBeenSent={!!currentDelegate?.validateCodeSent} + hasMagicCodeBeenSent={validateCodeAction?.validateCodeSent} handleSubmitForm={(validateCode) => Delegate.addDelegate(login, role, validateCode)} description={translate('delegate.enterMagicCode', {contactMethod: account?.primaryLogin ?? ''})} /> From 756978b8238032163b783c4a90cb064bf8119d7b Mon Sep 17 00:00:00 2001 From: layacat Date: Tue, 3 Dec 2024 16:37:08 +0700 Subject: [PATCH 2/3] Refactor delegate action handling by moving optimistic reset action code from connect function to addDelegate function. This change improves the management of validation state during delegate actions, ensuring a consistent user experience. --- src/libs/actions/Delegate.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/libs/actions/Delegate.ts b/src/libs/actions/Delegate.ts index 1204064f2565..f7ba61a1e842 100644 --- a/src/libs/actions/Delegate.ts +++ b/src/libs/actions/Delegate.ts @@ -91,15 +91,6 @@ function connect(email: string) { }, ]; - const optimisticResetActionCode = { - onyxMethod: Onyx.METHOD.MERGE, - key: ONYXKEYS.VALIDATE_ACTION_CODE, - value: { - validateCodeSent: null, - }, - }; - successData.push(optimisticResetActionCode); - failureData.push(optimisticResetActionCode); // We need to access the authToken directly from the response to update the session // eslint-disable-next-line rulesdir/no-api-side-effects-method API.makeRequestWithSideEffects(SIDE_EFFECT_REQUEST_COMMANDS.CONNECT_AS_DELEGATE, {to: email}, {optimisticData, successData, failureData}) @@ -339,6 +330,16 @@ function addDelegate(email: string, role: DelegateRole, validateCode: string) { }, ]; + const optimisticResetActionCode = { + onyxMethod: Onyx.METHOD.MERGE, + key: ONYXKEYS.VALIDATE_ACTION_CODE, + value: { + validateCodeSent: null, + }, + }; + successData.push(optimisticResetActionCode); + failureData.push(optimisticResetActionCode); + const parameters: AddDelegateParams = {delegate: email, validateCode, role}; API.write(WRITE_COMMANDS.ADD_DELEGATE, parameters, {optimisticData, successData, failureData}); From 063957f52a5d6e5b9eeb4200915de907fda6f41e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=8E=E4=BA=AE=E7=9A=84?= Date: Fri, 6 Dec 2024 09:51:40 +0700 Subject: [PATCH 3/3] Update src/libs/actions/Delegate.ts Co-authored-by: Fedi Rajhi --- src/libs/actions/Delegate.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libs/actions/Delegate.ts b/src/libs/actions/Delegate.ts index f7ba61a1e842..40413df92772 100644 --- a/src/libs/actions/Delegate.ts +++ b/src/libs/actions/Delegate.ts @@ -337,8 +337,7 @@ function addDelegate(email: string, role: DelegateRole, validateCode: string) { validateCodeSent: null, }, }; - successData.push(optimisticResetActionCode); - failureData.push(optimisticResetActionCode); + optimisticData.push(optimisticResetActionCode); const parameters: AddDelegateParams = {delegate: email, validateCode, role};