From dba161452c8686d0f9987b2ce39894645c5d6ea9 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 1 May 2024 13:18:34 -0700 Subject: [PATCH 01/11] chore: add TODO comments --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index 77b8c7b97f56..c22c633dc902 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -35,6 +35,7 @@ type Item = { disabled?: boolean; action: (isEnabled: boolean) => void; pendingAction: PendingAction | undefined; + //TODO: add errros field as an optional field }; type SectionObject = { @@ -75,6 +76,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro ]; const organizeItems: Item[] = [ + //TODO: Get errors from the relevant policy fields { icon: Illustrations.FolderOpen, titleTranslationKey: 'workspace.moreFeatures.categories.title', From a29d1a360d3689d0aad47a8bd5c69c1c5e0b5608 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 1 May 2024 13:55:49 -0700 Subject: [PATCH 02/11] feat: show error --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index c22c633dc902..2e3a74caa566 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -17,7 +17,7 @@ import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; import type {TranslationPaths} from '@src/languages/types'; import type SCREENS from '@src/SCREENS'; -import type {PendingAction} from '@src/types/onyx/OnyxCommon'; +import type {Errors, PendingAction} from '@src/types/onyx/OnyxCommon'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; import type IconAsset from '@src/types/utils/IconAsset'; import AccessOrNotFoundWrapper from './AccessOrNotFoundWrapper'; @@ -35,7 +35,7 @@ type Item = { disabled?: boolean; action: (isEnabled: boolean) => void; pendingAction: PendingAction | undefined; - //TODO: add errros field as an optional field + errors?: Errors; }; type SectionObject = { @@ -87,6 +87,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro action: (isEnabled: boolean) => { Policy.enablePolicyCategories(policy?.id ?? '', isEnabled); }, + errors: policy?.errorFields?.areConnectionsEnabled ?? undefined, }, { icon: Illustrations.Tag, @@ -160,6 +161,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro pendingAction={item.pendingAction} onToggle={item.action} disabled={item.disabled} + errors={item.errors} /> ), From c27a17bb4530e4ec9d533c6494c39cb57b50fbb1 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 1 May 2024 13:55:56 -0700 Subject: [PATCH 03/11] doc: remove comment --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index 2e3a74caa566..c6f71e513715 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -76,7 +76,6 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro ]; const organizeItems: Item[] = [ - //TODO: Get errors from the relevant policy fields { icon: Illustrations.FolderOpen, titleTranslationKey: 'workspace.moreFeatures.categories.title', From 1eb7c4148173587c3ae928e29be9665afd726c0f Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 1 May 2024 13:57:05 -0700 Subject: [PATCH 04/11] fix: error field --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index c6f71e513715..890119243e1b 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -86,7 +86,6 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro action: (isEnabled: boolean) => { Policy.enablePolicyCategories(policy?.id ?? '', isEnabled); }, - errors: policy?.errorFields?.areConnectionsEnabled ?? undefined, }, { icon: Illustrations.Tag, @@ -122,6 +121,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro action: (isEnabled: boolean) => { Policy.enablePolicyConnections(policy?.id ?? '', isEnabled); }, + errors: policy?.errorFields?.areConnectionsEnabled ?? undefined, }, ]; From b5bb19bb17df10fd79b0090de806cc7c4b7cc6f8 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 1 May 2024 15:34:39 -0700 Subject: [PATCH 05/11] fix: clear errors when the clear button is clicked --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index 890119243e1b..4271b3574eda 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -161,6 +161,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro onToggle={item.action} disabled={item.disabled} errors={item.errors} + onCloseError={() => Policy.clearPolicyErrorField(policy?.id ?? '', 'areConnectionsEnabled')} /> ), From b69962d548bea69387a3feb0eb56af9736217d36 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 1 May 2024 15:35:02 -0700 Subject: [PATCH 06/11] fix: add missing dependency for the callback --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index 4271b3574eda..b9b30b6a9fc1 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -165,7 +165,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro /> ), - [styles, translate], + [policy?.id, styles.mt7, translate], ); const renderSection = useCallback( From a1c572676da578b34ca1274ee557147f2ed44071 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 1 May 2024 15:41:16 -0700 Subject: [PATCH 07/11] fix: get only the last error --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index b9b30b6a9fc1..8bcfb47380df 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -12,6 +12,7 @@ import useNetwork from '@hooks/useNetwork'; import usePermissions from '@hooks/usePermissions'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; +import * as ErrorUtils from '@libs/ErrorUtils'; import type {WorkspacesCentralPaneNavigatorParamList} from '@libs/Navigation/types'; import * as Policy from '@userActions/Policy'; import CONST from '@src/CONST'; @@ -121,7 +122,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro action: (isEnabled: boolean) => { Policy.enablePolicyConnections(policy?.id ?? '', isEnabled); }, - errors: policy?.errorFields?.areConnectionsEnabled ?? undefined, + errors: ErrorUtils.getLatestErrorField(policy ?? {}, CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED), }, ]; From d806f728957d9d61d60adb44b516e8b32a787c09 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 1 May 2024 19:37:15 -0700 Subject: [PATCH 08/11] Use the value from const Co-authored-by: Abdelhafidh Belalia <16493223+s77rt@users.noreply.github.com> --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index 8bcfb47380df..4a69f3ba2592 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -162,7 +162,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro onToggle={item.action} disabled={item.disabled} errors={item.errors} - onCloseError={() => Policy.clearPolicyErrorField(policy?.id ?? '', 'areConnectionsEnabled')} + onCloseError={() => Policy.clearPolicyErrorField(policy?.id ?? '', CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED)} /> ), From d5bd1f46fe8018e34e329cf9fed4bc889c0778c3 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 1 May 2024 19:40:20 -0700 Subject: [PATCH 09/11] fix: add the onCloseError callback to the item object --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index 4a69f3ba2592..c1ae893b209c 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -37,6 +37,7 @@ type Item = { action: (isEnabled: boolean) => void; pendingAction: PendingAction | undefined; errors?: Errors; + onCloseError?: () => void; }; type SectionObject = { @@ -123,6 +124,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro Policy.enablePolicyConnections(policy?.id ?? '', isEnabled); }, errors: ErrorUtils.getLatestErrorField(policy ?? {}, CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED), + onCloseError: () => Policy.clearPolicyErrorField(policy?.id ?? '', CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED), }, ]; @@ -162,7 +164,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro onToggle={item.action} disabled={item.disabled} errors={item.errors} - onCloseError={() => Policy.clearPolicyErrorField(policy?.id ?? '', CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED)} + onCloseError={item.onCloseError} /> ), From a9a1831079a4545cccd6978a89672ed3837e2ad1 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 1 May 2024 19:41:56 -0700 Subject: [PATCH 10/11] chore: remove unnecessary dependency --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index c1ae893b209c..7378dd5b390d 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -168,7 +168,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro /> ), - [policy?.id, styles.mt7, translate], + [styles.mt7, translate], ); const renderSection = useCallback( From 2e8162a569f8d2659ac0f315507df18921aefc57 Mon Sep 17 00:00:00 2001 From: Hayata Suenaga Date: Wed, 1 May 2024 19:42:43 -0700 Subject: [PATCH 11/11] chore: don't access field --- src/pages/workspace/WorkspaceMoreFeaturesPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx index 7378dd5b390d..4c0f722a1737 100644 --- a/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx +++ b/src/pages/workspace/WorkspaceMoreFeaturesPage.tsx @@ -168,7 +168,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro /> ), - [styles.mt7, translate], + [styles, translate], ); const renderSection = useCallback(