Skip to content

Commit

Permalink
Fix navigation issues on all tag screens
Browse files Browse the repository at this point in the history
Signed-off-by: GitHub <noreply@github.com>
  • Loading branch information
twilight294 authored Oct 10, 2024
1 parent a51d9b4 commit 4f38b4e
Show file tree
Hide file tree
Showing 10 changed files with 72 additions and 67 deletions.
1 change: 1 addition & 0 deletions src/libs/Navigation/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,7 @@ type SettingsNavigatorParamList = {
policyID: string;
orderWeight: number;
tagName: string;
backTo?: Routes;
};
[SCREENS.WORKSPACE.TAG_GL_CODE]: {
policyID: string;
Expand Down
16 changes: 14 additions & 2 deletions src/pages/workspace/tags/EditTagPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@ import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
import * as Tag from '@userActions/Policy/Tag';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
import INPUT_IDS from '@src/types/form/WorkspaceTagForm';

type EditTagPageProps = StackScreenProps<SettingsNavigatorParamList, typeof SCREENS.WORKSPACE.TAG_EDIT>;

function EditTagPage({route}: EditTagPageProps) {
const [policyTags] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_TAGS}${route?.params?.policyID}`);
const backTo = route.params.backTo;
const styles = useThemeStyles();
const {translate} = useLocalize();
const {inputCallbackRef} = useAutoFocusInput();
Expand Down Expand Up @@ -58,7 +60,11 @@ function EditTagPage({route}: EditTagPageProps) {
Tag.renamePolicyTag(route.params.policyID, {oldName: route.params.tagName, newName: values.tagName.trim()}, route.params.orderWeight);
}
Keyboard.dismiss();
Navigation.goBack();
Navigation.goBack(
backTo
? ROUTES.SETTINGS_TAG_SETTINGS.getRoute(route?.params?.policyID, route.params.orderWeight, route.params.tagName, backTo)
: ROUTES.WORKSPACE_TAG_SETTINGS.getRoute(route?.params?.policyID, route.params.orderWeight, route.params.tagName),
);
},
[currentTagName, route.params.policyID, route.params.tagName, route.params.orderWeight],

Check warning on line 69 in src/pages/workspace/tags/EditTagPage.tsx

View workflow job for this annotation

GitHub Actions / ESLint check

React Hook useCallback has a missing dependency: 'backTo'. Either include it or remove the dependency array

Check warning on line 69 in src/pages/workspace/tags/EditTagPage.tsx

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

React Hook useCallback has a missing dependency: 'backTo'. Either include it or remove the dependency array
);
Expand All @@ -77,7 +83,13 @@ function EditTagPage({route}: EditTagPageProps) {
>
<HeaderWithBackButton
title={translate('workspace.tags.editTag')}
onBackButtonPress={Navigation.goBack}
onBackButtonPress={() =>
Navigation.goBack(
backTo
? ROUTES.SETTINGS_TAG_SETTINGS.getRoute(route?.params?.policyID, route.params.orderWeight, route.params.tagName, backTo)
: ROUTES.WORKSPACE_TAG_SETTINGS.getRoute(route?.params?.policyID, route.params.orderWeight, route.params.tagName),
)
}
/>
<FormProvider
formID={ONYXKEYS.FORMS.WORKSPACE_TAG_FORM}
Expand Down
2 changes: 1 addition & 1 deletion src/pages/workspace/tags/ImportedTagsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ function ImportedTagsPage({route}: ImportedTagsPageProps) {
const closeImportPageAndModal = () => {
setIsImportingTags(false);
closeImportPage();
Navigation.navigate(ROUTES.WORKSPACE_TAGS.getRoute(policyID));
Navigation.navigate(backTo ? ROUTES.SETTINGS_TAGS_IMPORT.getRoute(policyID, backTo) : ROUTES.WORKSPACE_TAGS_IMPORT.getRoute(policyID));
};

return (
Expand Down
11 changes: 8 additions & 3 deletions src/pages/workspace/tags/TagApproverPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,23 @@ import type {SettingsNavigatorParamList} from '@navigation/types';
import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
import * as Tag from '@userActions/Policy/Tag';
import CONST from '@src/CONST';
import ROUTES from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';

type TagApproverPageProps = StackScreenProps<SettingsNavigatorParamList, typeof SCREENS.WORKSPACE.TAG_APPROVER>;

function TagApproverPage({route}: TagApproverPageProps) {
const {policyID, tagName} = route.params;
const {policyID, tagName, orderWeight, backTo} = route.params;

const styles = useThemeStyles();
const {translate} = useLocalize();

const tagApprover = PolicyUtils.getTagApproverRule(policyID, tagName)?.approver;

const goBack = () => {
Navigation.goBack(backTo ? ROUTES.SETTINGS_TAG_SETTINGS.getRoute(policyID, orderWeight, tagName, backTo) : ROUTES.WORKSPACE_TAG_SETTINGS.getRoute(policyID, orderWeight, tagName));
};

return (
<AccessOrNotFoundWrapper
accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.CONTROL]}
Expand All @@ -37,14 +42,14 @@ function TagApproverPage({route}: TagApproverPageProps) {
>
<HeaderWithBackButton
title={translate('workspace.tags.approverDescription')}
onBackButtonPress={() => Navigation.goBack()}
onBackButtonPress={goBack}
/>
<WorkspaceMembersSelectionList
policyID={policyID}
selectedApprover={tagApprover ?? ''}
setApprover={(email) => {
Tag.setPolicyTagApprover(policyID, tagName, email);
Navigation.setNavigationActionToMicrotaskQueue(Navigation.goBack);
Navigation.setNavigationActionToMicrotaskQueue(goBack);
}}
/>
</ScreenWrapper>
Expand Down
30 changes: 15 additions & 15 deletions src/pages/workspace/tags/TagSettingsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,11 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) {
};

const navigateToEditTag = () => {
if (backTo) {
Navigation.navigate(ROUTES.SETTINGS_TAG_EDIT.getRoute(policyID, orderWeight, currentPolicyTag.name, backTo));
return;
}
Navigation.navigate(ROUTES.WORKSPACE_TAG_EDIT.getRoute(policyID, orderWeight, currentPolicyTag.name));
Navigation.navigate(
backTo
? ROUTES.SETTINGS_TAG_EDIT.getRoute(policyID, orderWeight, currentPolicyTag.name, backTo)
: ROUTES.WORKSPACE_TAG_EDIT.getRoute(policyID, orderWeight, currentPolicyTag.name),
);
};

const navigateToEditGlCode = () => {
Expand All @@ -79,19 +79,19 @@ function TagSettingsPage({route, navigation}: TagSettingsPageProps) {
);
return;
}
if (backTo) {
Navigation.navigate(ROUTES.SETTINGS_TAG_GL_CODE.getRoute(policyID, orderWeight, currentPolicyTag.name, backTo));
return;
}
Navigation.navigate(ROUTES.WORKSPACE_TAG_GL_CODE.getRoute(policyID, orderWeight, currentPolicyTag.name));
Navigation.navigate(
backTo
? ROUTES.SETTINGS_TAG_GL_CODE.getRoute(policyID, orderWeight, currentPolicyTag.name, backTo)
: ROUTES.WORKSPACE_TAG_GL_CODE.getRoute(policyID, orderWeight, currentPolicyTag.name),
);
};

const navigateToEditTagApprover = () => {
if (backTo) {
Navigation.navigate(ROUTES.SETTINGS_TAG_APPROVER.getRoute(policyID, orderWeight, currentPolicyTag.name, backTo));
return;
}
Navigation.navigate(ROUTES.WORKSPACE_TAG_APPROVER.getRoute(policyID, orderWeight, currentPolicyTag.name));
Navigation.navigate(
backTo
? ROUTES.SETTINGS_TAG_APPROVER.getRoute(policyID, orderWeight, currentPolicyTag.name, backTo)
: ROUTES.WORKSPACE_TAG_APPROVER.getRoute(policyID, orderWeight, currentPolicyTag.name),
);
};

const isThereAnyAccountingConnection = Object.keys(policy?.connections ?? {}).length !== 0;
Expand Down
3 changes: 2 additions & 1 deletion src/pages/workspace/tags/WorkspaceCreateTagPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
import * as Tag from '@userActions/Policy/Tag';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
import INPUT_IDS from '@src/types/form/WorkspaceTagForm';

Expand Down Expand Up @@ -58,7 +59,7 @@ function CreateTagPage({route}: CreateTagPageProps) {
(values: FormOnyxValues<typeof ONYXKEYS.FORMS.WORKSPACE_TAG_FORM>) => {
Tag.createPolicyTag(route.params.policyID, values.tagName.trim());
Keyboard.dismiss();
Navigation.goBack(backTo);
Navigation.goBack(backTo ? ROUTES.SETTINGS_TAGS_ROOT.getRoute(route.params.policyID) : undefined);
},
[route.params.policyID, backTo],
);
Expand Down
10 changes: 8 additions & 2 deletions src/pages/workspace/tags/WorkspaceEditTagsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import type {SettingsNavigatorParamList} from '@navigation/types';
import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
import INPUT_IDS from '@src/types/form/PolicyTagNameForm';

Expand Down Expand Up @@ -53,7 +54,7 @@ function WorkspaceEditTagsPage({route}: WorkspaceEditTagsPageProps) {
if (values[INPUT_IDS.POLICY_TAGS_NAME] !== taglistName) {
Tag.renamePolicyTaglist(route.params.policyID, {oldName: taglistName, newName: values[INPUT_IDS.POLICY_TAGS_NAME]}, policyTags, route.params.orderWeight);
}
Navigation.goBack(backTo);
Navigation.goBack(backTo ? ROUTES.SETTINGS_TAGS_SETTINGS.getRoute(route?.params?.policyID, backTo) : ROUTES.WORKSPACE_TAGS_SETTINGS.getRoute(route?.params?.policyID));
},
[policyTags, route.params.orderWeight, route.params.policyID, taglistName, backTo],
);
Expand All @@ -69,7 +70,12 @@ function WorkspaceEditTagsPage({route}: WorkspaceEditTagsPageProps) {
shouldEnableMaxHeight
testID={WorkspaceEditTagsPage.displayName}
>
<HeaderWithBackButton title={translate(`workspace.tags.customTagName`)} />
<HeaderWithBackButton
title={translate(`workspace.tags.customTagName`)}
onBackButtonPress={() =>
Navigation.goBack(backTo ? ROUTES.SETTINGS_TAGS_SETTINGS.getRoute(route?.params?.policyID, backTo) : ROUTES.WORKSPACE_TAGS_SETTINGS.getRoute(route?.params?.policyID))
}
/>
<FormProvider
style={[styles.flexGrow1, styles.ph5]}
formID={ONYXKEYS.FORMS.POLICY_TAG_NAME_FORM}
Expand Down
32 changes: 6 additions & 26 deletions src/pages/workspace/tags/WorkspaceTagsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -172,35 +172,19 @@ function WorkspaceTagsPage({route}: WorkspaceTagsPageProps) {
};

const navigateToTagsSettings = () => {
if (backTo) {
Navigation.navigate(ROUTES.SETTINGS_TAGS_SETTINGS.getRoute(policyID, backTo));
return;
}
Navigation.navigate(ROUTES.WORKSPACE_TAGS_SETTINGS.getRoute(policyID));
Navigation.navigate(backTo ? ROUTES.SETTINGS_TAGS_SETTINGS.getRoute(policyID, backTo) : ROUTES.WORKSPACE_TAGS_SETTINGS.getRoute(policyID));
};

const navigateToCreateTagPage = () => {
if (backTo) {
Navigation.navigate(ROUTES.SETTINGS_TAG_CREATE.getRoute(policyID, backTo));
return;
}
Navigation.navigate(ROUTES.WORKSPACE_TAG_CREATE.getRoute(policyID));
Navigation.navigate(backTo ? ROUTES.SETTINGS_TAG_CREATE.getRoute(policyID, backTo) : ROUTES.WORKSPACE_TAG_CREATE.getRoute(policyID));
};

const navigateToTagSettings = (tag: TagListItem) => {
if (tag.orderWeight !== undefined) {
if (backTo) {
Navigation.navigate(ROUTES.SETTINGS_TAG_LIST_VIEW.getRoute(policyID, tag.orderWeight, backTo));
return;
}
Navigation.navigate(ROUTES.WORKSPACE_TAG_LIST_VIEW.getRoute(policyID, tag.orderWeight));
return;
Navigation.navigate(backTo ? ROUTES.SETTINGS_TAG_LIST_VIEW.getRoute(policyID, tag.orderWeight, backTo) : ROUTES.WORKSPACE_TAG_LIST_VIEW.getRoute(policyID, tag.orderWeight));
}
if (backTo) {
Navigation.navigate(ROUTES.SETTINGS_TAG_SETTINGS.getRoute(policyID, 0, tag.value, backTo));
return;
}
Navigation.navigate(ROUTES.WORKSPACE_TAG_SETTINGS.getRoute(policyID, 0, tag.value));

Navigation.navigate(backTo ? ROUTES.SETTINGS_TAG_SETTINGS.getRoute(policyID, 0, tag.value, backTo) : ROUTES.WORKSPACE_TAG_SETTINGS.getRoute(policyID, 0, tag.value));
};

const selectedTagsArray = Object.keys(selectedTags).filter((key) => selectedTags[key]);
Expand Down Expand Up @@ -320,11 +304,7 @@ function WorkspaceTagsPage({route}: WorkspaceTagsPageProps) {
Modal.close(() => setIsOfflineModalVisible(true));
return;
}
if (backTo) {
Navigation.navigate(ROUTES.SETTINGS_TAGS_IMPORT.getRoute(policyID, backTo));
return;
}
Navigation.navigate(ROUTES.WORKSPACE_TAGS_IMPORT.getRoute(policyID));
Navigation.navigate(backTo ? ROUTES.SETTINGS_TAGS_IMPORT.getRoute(policyID, backTo) : ROUTES.WORKSPACE_TAGS_IMPORT.getRoute(policyID));
},
},
];
Expand Down
12 changes: 6 additions & 6 deletions src/pages/workspace/tags/WorkspaceTagsSettingsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,11 @@ function WorkspaceTagsSettingsPage({route}: WorkspaceTagsSettingsPageProps) {
title={policyTagLists.at(0)?.name ?? ''}
description={translate(`workspace.tags.customTagName`)}
onPress={() => {
if (backTo) {
Navigation.navigate(ROUTES.SETTINGS_TAGS_EDIT.getRoute(policyID, policyTagLists.at(0)?.orderWeight ?? 0, backTo));
return;
}
Navigation.navigate(ROUTES.WORKSPACE_EDIT_TAGS.getRoute(policyID, policyTagLists.at(0)?.orderWeight ?? 0));
Navigation.navigate(
backTo
? ROUTES.SETTINGS_TAGS_EDIT.getRoute(policyID, policyTagLists.at(0)?.orderWeight ?? 0, backTo)
: ROUTES.WORKSPACE_EDIT_TAGS.getRoute(policyID, policyTagLists.at(0)?.orderWeight ?? 0),
);
}}
shouldShowRightIcon
/>
Expand Down Expand Up @@ -133,7 +133,7 @@ function WorkspaceTagsSettingsPage({route}: WorkspaceTagsSettingsPageProps) {
>
<HeaderWithBackButton
title={translate('common.settings')}
onBackButtonPress={() => Navigation.goBack(backTo)}
onBackButtonPress={() => Navigation.goBack(backTo ? ROUTES.SETTINGS_TAGS_ROOT.getRoute(policyID) : ROUTES.WORKSPACE_TAGS.getRoute(policyID))}
/>
{isOffline && isLoading ? <FullPageOfflineBlockingView>{getTagsSettings(policy)}</FullPageOfflineBlockingView> : getTagsSettings(policy)}
</ScreenWrapper>
Expand Down
22 changes: 11 additions & 11 deletions src/pages/workspace/tags/WorkspaceViewTagsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -142,11 +142,11 @@ function WorkspaceViewTagsPage({route}: WorkspaceViewTagsProps) {
};

const navigateToTagSettings = (tag: TagListItem) => {
if (backTo) {
Navigation.navigate(ROUTES.SETTINGS_TAG_SETTINGS.getRoute(policyID, route.params.orderWeight, tag.value, backTo));
return;
}
Navigation.navigate(ROUTES.WORKSPACE_TAG_SETTINGS.getRoute(policyID, route.params.orderWeight, tag.value));
Navigation.navigate(
backTo
? ROUTES.SETTINGS_TAG_SETTINGS.getRoute(policyID, route.params.orderWeight, tag.value, backTo)
: ROUTES.WORKSPACE_TAG_SETTINGS.getRoute(policyID, route.params.orderWeight, tag.value),
);
};

const selectedTagsArray = Object.keys(selectedTags).filter((key) => selectedTags[key]);
Expand Down Expand Up @@ -242,11 +242,11 @@ function WorkspaceViewTagsPage({route}: WorkspaceViewTagsProps) {
}

const navigateToEditTag = () => {
if (backTo) {
Navigation.navigate(ROUTES.SETTINGS_TAGS_EDIT.getRoute(route.params.policyID, currentPolicyTag?.orderWeight ?? 0, backTo));
return;
}
Navigation.navigate(ROUTES.WORKSPACE_EDIT_TAGS.getRoute(route.params.policyID, currentPolicyTag?.orderWeight ?? 0));
Navigation.navigate(
backTo
? ROUTES.SETTINGS_TAGS_EDIT.getRoute(route.params.policyID, currentPolicyTag?.orderWeight ?? 0, backTo)
: ROUTES.WORKSPACE_EDIT_TAGS.getRoute(route.params.policyID, currentPolicyTag?.orderWeight ?? 0),
);
};

const selectionModeHeader = selectionMode?.isEnabled && isSmallScreenWidth;
Expand All @@ -270,7 +270,7 @@ function WorkspaceViewTagsPage({route}: WorkspaceViewTagsProps) {
turnOffMobileSelectionMode();
return;
}
Navigation.goBack();
Navigation.goBack(backTo ? ROUTES.SETTINGS_TAGS_ROOT.getRoute(policyID) : ROUTES.WORKSPACE_TAGS.getRoute(policyID));
}}
>
{!shouldUseNarrowLayout && getHeaderButtons()}
Expand Down

0 comments on commit 4f38b4e

Please sign in to comment.