Skip to content

Commit 4969573

Browse files
committed
fix: add archivePolicies beta
1 parent d1c3cc2 commit 4969573

4 files changed

Lines changed: 11 additions & 4 deletions

File tree

src/CONST/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,6 +1016,7 @@ const CONST = {
10161016
DEFAULT_LETTER_AVATARS: 'defaultLetterAvatars',
10171017
NETSUITE_OAUTH: 'netSuiteOAuth',
10181018
CONCIERGE_RESPOND_IN_THREAD: 'conciergeRespondInThread',
1019+
ARCHIVE_POLICIES: 'archivePolicies',
10191020
},
10201021
BUTTON_STATES: {
10211022
DEFAULT: 'default',

src/components/Tables/WorkspaceListTable/index.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Table from '@components/Table';
33

44
import {useMemoizedLazyIllustrations} from '@hooks/useLazyAsset';
55
import useLocalize from '@hooks/useLocalize';
6+
import usePermissions from '@hooks/usePermissions';
67
import usePreferredPolicy from '@hooks/usePreferredPolicy';
78
import useResponsiveLayout from '@hooks/useResponsiveLayout';
89
import useThemeStyles from '@hooks/useThemeStyles';
@@ -66,6 +67,8 @@ type WorkspaceListTableProps = {
6667
export default function WorkspaceListTable({ref, workspaces, onDeleteWorkspace, pendingDeletePolicyID}: WorkspaceListTableProps) {
6768
const styles = useThemeStyles();
6869
const {translate, localeCompare} = useLocalize();
70+
const {isBetaEnabled} = usePermissions();
71+
const canUseArchivePolicies = isBetaEnabled(CONST.BETAS.ARCHIVE_POLICIES);
6972
const {isRestrictedPolicyCreation} = usePreferredPolicy();
7073
const illustrations = useMemoizedLazyIllustrations(['PlanetWithMobileApp']);
7174
const {shouldUseNarrowLayout, isMediumScreenWidth} = useResponsiveLayout();
@@ -131,7 +134,7 @@ export default function WorkspaceListTable({ref, workspaces, onDeleteWorkspace,
131134
};
132135

133136
const canAccessArchived = (role: ValueOf<typeof CONST.POLICY.ROLE>) => role === CONST.POLICY.ROLE.ADMIN || role === CONST.POLICY.ROLE.OWNER || role === CONST.POLICY.ROLE.AUDITOR;
134-
const canSeeFilter = workspaces.some((w) => canAccessArchived(w.role));
137+
const canSeeFilter = canUseArchivePolicies && workspaces.some((w) => canAccessArchived(w.role));
135138

136139
const isItemInFilter: IsItemInFilterCallback<WorkspaceRowData> = (item, filterValues) => {
137140
if (item.isArchived && !canAccessArchived(item.role)) {
@@ -199,7 +202,7 @@ export default function WorkspaceListTable({ref, workspaces, onDeleteWorkspace,
199202
>
200203
<Table.FilterBar
201204
label={translate('workspace.common.findWorkspace')}
202-
shouldShowClearFiltersButton
205+
shouldShowClearFiltersButton={canSeeFilter}
203206
/>
204207
<Table.NoResultsState />
205208
<Table.EmptyState

src/pages/workspace/AccessOrNotFoundWrapper.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ function AccessOrNotFoundWrapper({
214214
return acc && accessFunction(policy, login, report, allPolicies ?? null, betas, iouType, isReportArchived, isRestrictedToPreferredPolicy);
215215
}
216216
if (variant === CONST.POLICY.ACCESS_VARIANTS.ADMIN) {
217-
return acc && canEditWorkspaceSettings(policy, login, canBeAccessedIfArchived);
217+
return acc && canEditWorkspaceSettings(policy, login, canBeAccessedIfArchived && isBetaEnabled(CONST.BETAS.ARCHIVE_POLICIES));
218218
}
219219
return acc && accessFunction(policy, login, report, allPolicies ?? null, betas, iouType, isReportArchived);
220220
}, true);

src/pages/workspace/WorkspacesListPage.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
1212
import useLocalize from '@hooks/useLocalize';
1313
import useNetwork from '@hooks/useNetwork';
1414
import useOnyx from '@hooks/useOnyx';
15+
import usePermissions from '@hooks/usePermissions';
1516
import usePreferredPolicy from '@hooks/usePreferredPolicy';
1617
import useResponsiveLayout from '@hooks/useResponsiveLayout';
1718
import useThemeStyles from '@hooks/useThemeStyles';
@@ -57,12 +58,14 @@ function WorkspacesListPage() {
5758
const shouldShowLoadingIndicator = isAppLoadPending && !isOffline;
5859
const route = useRoute<PlatformStackRouteProp<WorkspaceNavigatorParamList, typeof SCREENS.WORKSPACES_LIST>>();
5960
const {isRestrictedPolicyCreation} = usePreferredPolicy();
61+
const {isBetaEnabled} = usePermissions();
62+
const canUseArchivePolicies = isBetaEnabled(CONST.BETAS.ARCHIVE_POLICIES);
6063
const [duplicateWorkspace] = useOnyx(ONYXKEYS.DUPLICATE_WORKSPACE);
6164

6265
// Light, flat projection of the policy collection. Deep, frequently mutated policy fields (isLoading*
6366
// flags, employeeList, connections, etc.) are excluded, so background writes to them no longer commit
6467
// this page. Per-row error indicators subscribe to those fields themselves in WorkspaceRowBrickRoadIndicator.
65-
const [workspaceListPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY, {selector: createWorkspaceListPoliciesSelector(session?.email, true)});
68+
const [workspaceListPolicies] = useOnyx(ONYXKEYS.COLLECTION.POLICY, {selector: createWorkspaceListPoliciesSelector(session?.email, canUseArchivePolicies)});
6669

6770
// IDs of every workspace eligible as a copy-settings target. Derived once per policy write (not per row) so each row can cheaply decide whether to offer "Copy settings".
6871
const [copySettingsEligibleTargets] = useOnyx(ONYXKEYS.COLLECTION.POLICY, {selector: createCopySettingsEligibleTargetsSelector(session?.email)});

0 commit comments

Comments
 (0)