diff --git a/src/ROUTES.ts b/src/ROUTES.ts index c8e8ae582a5b..371cef9ef788 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -3,6 +3,7 @@ import type {SearchQueryString} from './components/Search/types'; import type CONST from './CONST'; import type {IOUAction, IOUType} from './CONST'; import type {IOURequestType} from './libs/actions/IOU'; +import type {ExitReason} from './types/form/ExitSurveyReasonForm'; import type {ConnectionName, SageIntacctMappingName} from './types/onyx/Policy'; import type AssertTypesNotEqual from './types/utils/AssertTypesNotEqual'; @@ -11,9 +12,9 @@ import type AssertTypesNotEqual from './types/utils/AssertTypesNotEqual'; /** * Builds a URL with an encoded URI component for the `backTo` param which can be added to the end of URLs */ -function getUrlWithBackToParam(url: TUrl, backTo?: string): `${TUrl}` | `${TUrl}?backTo=${string}` | `${TUrl}&backTo=${string}` { +function getUrlWithBackToParam(url: TUrl, backTo?: string): `${TUrl}` { const backToParam = backTo ? (`${url.includes('?') ? '&' : '?'}backTo=${encodeURIComponent(backTo)}` as const) : ''; - return `${url}${backToParam}` as const; + return `${url}${backToParam}` as `${TUrl}`; } const PUBLIC_SCREENS_ROUTES = { @@ -83,14 +84,14 @@ const ROUTES = { PROFILE: { route: 'a/:accountID', getRoute: (accountID?: string | number, backTo?: string, login?: string) => { - const baseRoute = getUrlWithBackToParam(`a/${accountID}`, backTo); + const baseRoute = getUrlWithBackToParam(`a/${accountID as string}`, backTo); const loginParam = login ? `?login=${encodeURIComponent(login)}` : ''; return `${baseRoute}${loginParam}` as const; }, }, PROFILE_AVATAR: { route: 'a/:accountID/avatar', - getRoute: (accountID: string | number) => `a/${accountID}/avatar` as const, + getRoute: (accountID: string | number) => `a/${accountID as string}/avatar` as const, }, GET_ASSISTANCE: { @@ -125,7 +126,7 @@ const ROUTES = { SETTINGS_SUBSCRIPTION: 'settings/subscription', SETTINGS_SUBSCRIPTION_SIZE: { route: 'settings/subscription/subscription-size', - getRoute: (canChangeSize: 0 | 1) => `settings/subscription/subscription-size?canChangeSize=${canChangeSize}` as const, + getRoute: (canChangeSize: 0 | 1) => `settings/subscription/subscription-size?canChangeSize=${canChangeSize as number}` as const, }, SETTINGS_SUBSCRIPTION_ADD_PAYMENT_CARD: 'settings/subscription/add-payment-card', SETTINGS_SUBSCRIPTION_CHANGE_BILLING_CURRENCY: 'settings/subscription/change-billing-currency', @@ -275,8 +276,7 @@ const ROUTES = { }, SETTINGS_EXIT_SURVEY_RESPONSE: { route: 'settings/exit-survey/response', - getRoute: (reason?: ValueOf, backTo?: string) => - getUrlWithBackToParam(`settings/exit-survey/response${reason ? `?reason=${encodeURIComponent(reason)}` : ''}`, backTo), + getRoute: (reason?: ExitReason, backTo?: string) => getUrlWithBackToParam(`settings/exit-survey/response${reason ? `?reason=${encodeURIComponent(reason)}` : ''}`, backTo), }, SETTINGS_EXIT_SURVEY_CONFIRM: { route: 'settings/exit-survey/confirm', @@ -341,7 +341,7 @@ const ROUTES = { const fileNameParam = fileName ? `&fileName=${fileName}` : ''; const attachmentLinkParam = attachmentLink ? `&attachmentLink=${attachmentLink}` : ''; - return `attachment?source=${encodeURIComponent(url)}&type=${type}${reportParam}${accountParam}${authTokenParam}${fileNameParam}${attachmentLinkParam}` as const; + return `attachment?source=${encodeURIComponent(url)}&type=${type as string}${reportParam}${accountParam}${authTokenParam}${fileNameParam}${attachmentLinkParam}` as const; }, }, REPORT_PARTICIPANTS: { @@ -366,7 +366,7 @@ const ROUTES = { }, REPORT_WITH_ID_DETAILS_EXPORT: { route: 'r/:reportID/details/export/:connectionName', - getRoute: (reportID: string, connectionName: ConnectionName, backTo?: string) => getUrlWithBackToParam(`r/${reportID}/details/export/${connectionName}` as const, backTo), + getRoute: (reportID: string, connectionName: ConnectionName, backTo?: string) => getUrlWithBackToParam(`r/${reportID}/details/export/${connectionName as string}` as const, backTo), }, REPORT_SETTINGS: { route: 'r/:reportID/settings', @@ -410,7 +410,7 @@ const ROUTES = { }, PRIVATE_NOTES_EDIT: { route: 'r/:reportID/notes/:accountID/edit', - getRoute: (reportID: string, accountID: string | number, backTo?: string) => getUrlWithBackToParam(`r/${reportID}/notes/${accountID}/edit` as const, backTo), + getRoute: (reportID: string, accountID: string | number, backTo?: string) => getUrlWithBackToParam(`r/${reportID}/notes/${accountID as string}/edit` as const, backTo), }, ROOM_MEMBERS: { route: 'r/:reportID/members', @@ -418,7 +418,7 @@ const ROUTES = { }, ROOM_MEMBER_DETAILS: { route: 'r/:reportID/members/:accountID', - getRoute: (reportID: string, accountID: string | number, backTo?: string) => getUrlWithBackToParam(`r/${reportID}/members/${accountID}` as const, backTo), + getRoute: (reportID: string, accountID: string | number, backTo?: string) => getUrlWithBackToParam(`r/${reportID}/members/${accountID as string}` as const, backTo), }, ROOM_INVITE: { route: 'r/:reportID/invite/:role?', @@ -431,8 +431,8 @@ const ROUTES = { route: ':type/edit/reason/:transactionID?/:searchHash?', getRoute: (type: ValueOf, transactionID: string, reportID: string, backTo: string, searchHash?: number) => { const route = searchHash - ? (`${type}/edit/reason/${transactionID}/${searchHash}/?backTo=${backTo}&reportID=${reportID}` as const) - : (`${type}/edit/reason/${transactionID}/?backTo=${backTo}&reportID=${reportID}` as const); + ? (`${type as string}/edit/reason/${transactionID}/${searchHash}/?backTo=${backTo}&reportID=${reportID}` as const) + : (`${type as string}/edit/reason/${transactionID}/?backTo=${backTo}&reportID=${reportID}` as const); return route; }, }, @@ -442,12 +442,11 @@ const ROUTES = { }, MONEY_REQUEST_STEP_SEND_FROM: { route: 'create/:iouType/from/:transactionID/:reportID', - getRoute: (iouType: ValueOf, transactionID: string, reportID: string, backTo = '') => - getUrlWithBackToParam(`create/${iouType as string}/from/${transactionID}/${reportID}`, backTo), + getRoute: (iouType: IOUType, transactionID: string, reportID: string, backTo = '') => getUrlWithBackToParam(`create/${iouType as string}/from/${transactionID}/${reportID}`, backTo), }, MONEY_REQUEST_STEP_COMPANY_INFO: { route: 'create/:iouType/company-info/:transactionID/:reportID', - getRoute: (iouType: ValueOf, transactionID: string, reportID: string, backTo = '') => + getRoute: (iouType: IOUType, transactionID: string, reportID: string, backTo = '') => getUrlWithBackToParam(`create/${iouType as string}/company-info/${transactionID}/${reportID}`, backTo), }, MONEY_REQUEST_STEP_CONFIRMATION: { @@ -623,8 +622,8 @@ const ROUTES = { }, MONEY_REQUEST_STEP_DISTANCE_RATE: { route: ':action/:iouType/distanceRate/:transactionID/:reportID', - getRoute: (action: ValueOf, iouType: ValueOf, transactionID: string, reportID: string, backTo = '') => - getUrlWithBackToParam(`${action}/${iouType}/distanceRate/${transactionID}/${reportID}`, backTo), + getRoute: (action: IOUAction, iouType: IOUType, transactionID: string, reportID: string, backTo = '') => + getUrlWithBackToParam(`${action as string}/${iouType as string}/distanceRate/${transactionID}/${reportID}`, backTo), }, MONEY_REQUEST_STEP_MERCHANT: { route: ':action/:iouType/merchant/:transactionID/:reportID', @@ -638,8 +637,8 @@ const ROUTES = { }, MONEY_REQUEST_STEP_SPLIT_PAYER: { route: ':action/:iouType/confirmation/:transactionID/:reportID/payer', - getRoute: (action: ValueOf, iouType: ValueOf, transactionID: string, reportID: string, backTo = '') => - getUrlWithBackToParam(`${action}/${iouType}/confirmation/${transactionID}/${reportID}/payer`, backTo), + getRoute: (action: IOUAction, iouType: IOUType, transactionID: string, reportID: string, backTo = '') => + getUrlWithBackToParam(`${action as string}/${iouType as string}/confirmation/${transactionID}/${reportID}/payer`, backTo), }, MONEY_REQUEST_STEP_SCAN: { route: ':action/:iouType/scan/:transactionID/:reportID', @@ -660,7 +659,7 @@ const ROUTES = { // straight to those flows without needing to have optimistic transaction and report IDs. MONEY_REQUEST_START: { route: 'start/:iouType/:iouRequestType', - getRoute: (iouType: IOUType, iouRequestType: IOURequestType) => `start/${iouType as string}/${iouRequestType}` as const, + getRoute: (iouType: IOUType, iouRequestType: IOURequestType) => `start/${iouType as string}/${iouRequestType as string}` as const, }, MONEY_REQUEST_CREATE_TAB_DISTANCE: { route: ':action/:iouType/start/:transactionID/:reportID/distance', @@ -1001,12 +1000,13 @@ const ROUTES = { }, WORKSPACE_ACCOUNTING_CARD_RECONCILIATION: { route: 'settings/workspaces/:policyID/accounting/:connection/card-reconciliation', - getRoute: (policyID: string, connection?: ValueOf) => `settings/workspaces/${policyID}/accounting/${connection}/card-reconciliation` as const, + getRoute: (policyID: string, connection?: ValueOf) => + `settings/workspaces/${policyID}/accounting/${connection as string}/card-reconciliation` as const, }, WORKSPACE_ACCOUNTING_RECONCILIATION_ACCOUNT_SETTINGS: { route: 'settings/workspaces/:policyID/accounting/:connection/card-reconciliation/account', getRoute: (policyID: string, connection?: ValueOf) => - `settings/workspaces/${policyID}/accounting/${connection}/card-reconciliation/account` as const, + `settings/workspaces/${policyID}/accounting/${connection as string}/card-reconciliation/account` as const, }, WORKSPACE_CATEGORIES: { route: 'settings/workspaces/:policyID/categories', @@ -1628,22 +1628,22 @@ const ROUTES = { POLICY_ACCOUNTING_NETSUITE_IMPORT_MAPPING: { route: 'settings/workspaces/:policyID/accounting/netsuite/import/mapping/:importField', getRoute: (policyID: string, importField: TupleToUnion) => - `settings/workspaces/${policyID}/accounting/netsuite/import/mapping/${importField}` as const, + `settings/workspaces/${policyID}/accounting/netsuite/import/mapping/${importField as string}` as const, }, POLICY_ACCOUNTING_NETSUITE_IMPORT_CUSTOM_FIELD_MAPPING: { route: 'settings/workspaces/:policyID/accounting/netsuite/import/custom/:importCustomField', getRoute: (policyID: string, importCustomField: ValueOf) => - `settings/workspaces/${policyID}/accounting/netsuite/import/custom/${importCustomField}` as const, + `settings/workspaces/${policyID}/accounting/netsuite/import/custom/${importCustomField as string}` as const, }, POLICY_ACCOUNTING_NETSUITE_IMPORT_CUSTOM_FIELD_VIEW: { route: 'settings/workspaces/:policyID/accounting/netsuite/import/custom/:importCustomField/view/:valueIndex', getRoute: (policyID: string, importCustomField: ValueOf, valueIndex: number) => - `settings/workspaces/${policyID}/accounting/netsuite/import/custom/${importCustomField}/view/${valueIndex}` as const, + `settings/workspaces/${policyID}/accounting/netsuite/import/custom/${importCustomField as string}/view/${valueIndex}` as const, }, POLICY_ACCOUNTING_NETSUITE_IMPORT_CUSTOM_FIELD_EDIT: { route: 'settings/workspaces/:policyID/accounting/netsuite/import/custom/:importCustomField/edit/:valueIndex/:fieldName', getRoute: (policyID: string, importCustomField: ValueOf, valueIndex: number, fieldName: string) => - `settings/workspaces/${policyID}/accounting/netsuite/import/custom/${importCustomField}/edit/${valueIndex}/${fieldName}` as const, + `settings/workspaces/${policyID}/accounting/netsuite/import/custom/${importCustomField as string}/edit/${valueIndex}/${fieldName}` as const, }, POLICY_ACCOUNTING_NETSUITE_IMPORT_CUSTOM_LIST_ADD: { route: 'settings/workspaces/:policyID/accounting/netsuite/import/custom-list/new', @@ -1676,27 +1676,27 @@ const ROUTES = { POLICY_ACCOUNTING_NETSUITE_EXPORT_EXPENSES: { route: 'settings/workspaces/:policyID/connections/netsuite/export/expenses/:expenseType', getRoute: (policyID: string, expenseType: ValueOf) => - `settings/workspaces/${policyID}/connections/netsuite/export/expenses/${expenseType}` as const, + `settings/workspaces/${policyID}/connections/netsuite/export/expenses/${expenseType as string}` as const, }, POLICY_ACCOUNTING_NETSUITE_EXPORT_EXPENSES_DESTINATION_SELECT: { route: 'settings/workspaces/:policyID/connections/netsuite/export/expenses/:expenseType/destination/select', getRoute: (policyID: string, expenseType: ValueOf) => - `settings/workspaces/${policyID}/connections/netsuite/export/expenses/${expenseType}/destination/select` as const, + `settings/workspaces/${policyID}/connections/netsuite/export/expenses/${expenseType as string}/destination/select` as const, }, POLICY_ACCOUNTING_NETSUITE_EXPORT_EXPENSES_VENDOR_SELECT: { route: 'settings/workspaces/:policyID/connections/netsuite/export/expenses/:expenseType/vendor/select', getRoute: (policyID: string, expenseType: ValueOf) => - `settings/workspaces/${policyID}/connections/netsuite/export/expenses/${expenseType}/vendor/select` as const, + `settings/workspaces/${policyID}/connections/netsuite/export/expenses/${expenseType as string}/vendor/select` as const, }, POLICY_ACCOUNTING_NETSUITE_EXPORT_EXPENSES_PAYABLE_ACCOUNT_SELECT: { route: 'settings/workspaces/:policyID/connections/netsuite/export/expenses/:expenseType/payable-account/select', getRoute: (policyID: string, expenseType: ValueOf) => - `settings/workspaces/${policyID}/connections/netsuite/export/expenses/${expenseType}/payable-account/select` as const, + `settings/workspaces/${policyID}/connections/netsuite/export/expenses/${expenseType as string}/payable-account/select` as const, }, POLICY_ACCOUNTING_NETSUITE_EXPORT_EXPENSES_JOURNAL_POSTING_PREFERENCE_SELECT: { route: 'settings/workspaces/:policyID/connections/netsuite/export/expenses/:expenseType/journal-posting-preference/select', getRoute: (policyID: string, expenseType: ValueOf) => - `settings/workspaces/${policyID}/connections/netsuite/export/expenses/${expenseType}/journal-posting-preference/select` as const, + `settings/workspaces/${policyID}/connections/netsuite/export/expenses/${expenseType as string}/journal-posting-preference/select` as const, }, POLICY_ACCOUNTING_NETSUITE_RECEIVABLE_ACCOUNT_SELECT: { route: 'settings/workspaces/:policyID/connections/netsuite/export/receivable-account/select', @@ -1749,7 +1749,7 @@ const ROUTES = { POLICY_ACCOUNTING_NETSUITE_CUSTOM_FORM_ID: { route: 'settings/workspaces/:policyID/connections/netsuite/advanced/custom-form-id/:expenseType', getRoute: (policyID: string, expenseType: ValueOf) => - `settings/workspaces/${policyID}/connections/netsuite/advanced/custom-form-id/${expenseType}` as const, + `settings/workspaces/${policyID}/connections/netsuite/advanced/custom-form-id/${expenseType as string}` as const, }, POLICY_ACCOUNTING_NETSUITE_AUTO_SYNC: { route: 'settings/workspaces/:policyID/connections/netsuite/advanced/autosync', @@ -1781,7 +1781,7 @@ const ROUTES = { }, POLICY_ACCOUNTING_SAGE_INTACCT_TOGGLE_MAPPINGS: { route: 'settings/workspaces/:policyID/accounting/sage-intacct/import/toggle-mapping/:mapping', - getRoute: (policyID: string, mapping: SageIntacctMappingName) => `settings/workspaces/${policyID}/accounting/sage-intacct/import/toggle-mapping/${mapping}` as const, + getRoute: (policyID: string, mapping: SageIntacctMappingName) => `settings/workspaces/${policyID}/accounting/sage-intacct/import/toggle-mapping/${mapping as string}` as const, }, POLICY_ACCOUNTING_SAGE_INTACCT_MAPPINGS_TYPE: { route: 'settings/workspaces/:policyID/accounting/sage-intacct/import/mapping-type/:mapping',