Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CP Staging] Fix undefined inside backTo parameter for export accounts #55472

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
move logic to getUrlWithBackToParam
  • Loading branch information
narefyev91 committed Jan 20, 2025
commit 568eab62fe596cb4791fb3e0e3d9d07160cd5f84
14 changes: 7 additions & 7 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
@@ -13,8 +13,8 @@ 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<TUrl extends string>(url: TUrl, backTo?: string): `${TUrl}` {
const backToParam = backTo ? (`${url.includes('?') ? '&' : '?'}backTo=${encodeURIComponent(backTo)}` as const) : '';
function getUrlWithBackToParam<TUrl extends string>(url: TUrl, backTo?: string, shouldEncodeURIComponent = true): `${TUrl}` {
const backToParam = backTo ? (`${url.includes('?') ? '&' : '?'}backTo=${shouldEncodeURIComponent ? encodeURIComponent(backTo) : backTo}` as const) : '';
return `${url}${backToParam}` as `${TUrl}`;
}

@@ -777,7 +777,7 @@ const ROUTES = {
},
POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_EXPORT: {
route: 'settings/workspaces/:policyID/accounting/quickbooks-online/export',
getRoute: (policyID: string, backTo?: string) => `settings/workspaces/${policyID}/accounting/quickbooks-online/export?backTo=${backTo}` as const,
getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/accounting/quickbooks-online/export` as const, backTo, false),
},
POLICY_ACCOUNTING_QUICKBOOKS_ONLINE_COMPANY_CARD_EXPENSE_ACCOUNT: {
route: 'settings/workspaces/:policyID/accounting/quickbooks-online/export/company-card-expense-account',
@@ -1270,7 +1270,7 @@ const ROUTES = {
WORKSPACE_COMPANY_CARD_EXPORT: {
route: 'settings/workspaces/:policyID/company-cards/:bank/:cardID/edit/export',
getRoute: (policyID: string, cardID: string, bank: string, backTo?: string) =>
`settings/workspaces/${policyID}/company-cards/${bank}/${cardID}/edit/export?backTo=${backTo}` as const,
getUrlWithBackToParam(`settings/workspaces/${policyID}/company-cards/${bank}/${cardID}/edit/export`, backTo, false),
},
WORKSPACE_EXPENSIFY_CARD: {
route: 'settings/workspaces/:policyID/expensify-card',
@@ -1562,7 +1562,7 @@ const ROUTES = {
},
POLICY_ACCOUNTING_XERO_EXPORT: {
route: 'settings/workspaces/:policyID/accounting/xero/export',
getRoute: (policyID: string, backTo?: string) => `settings/workspaces/${policyID}/accounting/xero/export?backTo=${backTo}` as const,
getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/accounting/xero/export` as const, backTo, false),
},
POLICY_ACCOUNTING_XERO_PREFERRED_EXPORTER_SELECT: {
route: 'settings/workspaces/:policyID/connections/xero/export/preferred-exporter/select',
@@ -1687,7 +1687,7 @@ const ROUTES = {
},
POLICY_ACCOUNTING_NETSUITE_EXPORT: {
route: 'settings/workspaces/:policyID/connections/netsuite/export/',
getRoute: (policyID: string, backTo?: string) => `settings/workspaces/${policyID}/connections/netsuite/export?backTo=${backTo}` as const,
getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/connections/netsuite/export/` as const, backTo, false),
},
POLICY_ACCOUNTING_NETSUITE_PREFERRED_EXPORTER_SELECT: {
route: 'settings/workspaces/:policyID/connections/netsuite/export/preferred-exporter/select',
@@ -1825,7 +1825,7 @@ const ROUTES = {
},
POLICY_ACCOUNTING_SAGE_INTACCT_EXPORT: {
route: 'settings/workspaces/:policyID/accounting/sage-intacct/export',
getRoute: (policyID: string, backTo?: string) => `settings/workspaces/${policyID}/accounting/sage-intacct/export?backTo=${backTo}` as const,
getRoute: (policyID: string, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/accounting/sage-intacct/export` as const, backTo, false),
},
POLICY_ACCOUNTING_SAGE_INTACCT_PREFERRED_EXPORTER: {
route: 'settings/workspaces/:policyID/accounting/sage-intacct/export/preferred-exporter',
Original file line number Diff line number Diff line change
@@ -14,7 +14,6 @@ import withPolicyConnections from '@pages/workspace/withPolicyConnections';
import CONST from '@src/CONST';
import ROUTES from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
import isEmptyValue from '@src/types/utils/isEmptyString';

function SageIntacctExportPage({policy}: WithPolicyProps) {
const {translate} = useLocalize();
@@ -23,7 +22,7 @@ function SageIntacctExportPage({policy}: WithPolicyProps) {
const route = useRoute<PlatformStackRouteProp<SettingsNavigatorParamList, typeof SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_EXPORT>>();
const backTo = route?.params?.backTo;
const {export: exportConfig, pendingFields, errorFields} = policy?.connections?.intacct?.config ?? {};
const shouldGoBackToSpecificRoute = exportConfig?.reimbursable === CONST.SAGE_INTACCT_REIMBURSABLE_EXPENSE_TYPE.EXPENSE_REPORT && !isEmptyValue(backTo);
const shouldGoBackToSpecificRoute = exportConfig?.reimbursable === CONST.SAGE_INTACCT_REIMBURSABLE_EXPENSE_TYPE.EXPENSE_REPORT && backTo;

const sections = useMemo(
() => [
Original file line number Diff line number Diff line change
@@ -37,7 +37,6 @@ import {clearNetSuiteErrorField} from '@userActions/Policy/Policy';
import CONST from '@src/CONST';
import ROUTES from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
import isEmptyValue from '@src/types/utils/isEmptyString';

type MenuItemWithSubscribedSettings = Pick<MenuItem, 'type' | 'description' | 'title' | 'onPress' | 'shouldHide'> & {subscribedSettings?: string[]};

@@ -55,7 +54,7 @@ function NetSuiteExportConfigurationPage({policy}: WithPolicyConnectionsProps) {
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
(config?.reimbursableExpensesExportDestination === CONST.NETSUITE_EXPORT_DESTINATION.EXPENSE_REPORT ||
config?.nonreimbursableExpensesExportDestination === CONST.NETSUITE_EXPORT_DESTINATION.EXPENSE_REPORT) &&
!isEmptyValue(backTo);
backTo;

const {subsidiaryList, receivableList, taxAccountsList, items} = policy?.connections?.netsuite?.options?.data ?? {};
const selectedSubsidiary = useMemo(() => (subsidiaryList ?? []).find((subsidiary) => subsidiary.internalID === config?.subsidiaryID), [subsidiaryList, config?.subsidiaryID]);
Original file line number Diff line number Diff line change
@@ -17,7 +17,6 @@ import {openExternalLink} from '@userActions/Link';
import CONST from '@src/CONST';
import ROUTES from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
import isEmptyValue from '@src/types/utils/isEmptyString';

function QuickbooksExportConfigurationPage({policy}: WithPolicyConnectionsProps) {
const {translate} = useLocalize();
@@ -33,7 +32,7 @@ function QuickbooksExportConfigurationPage({policy}: WithPolicyConnectionsProps)
() => qboConfig?.nonReimbursableExpensesExportDestination === CONST.QUICKBOOKS_NON_REIMBURSABLE_EXPORT_ACCOUNT_TYPE.VENDOR_BILL,
[qboConfig?.nonReimbursableExpensesExportDestination],
);
const shouldGoBackToSpecificRoute = shouldShowVendorMenuItems && !isEmptyValue(backTo);
const shouldGoBackToSpecificRoute = shouldShowVendorMenuItems && backTo;

const menuItems = [
{
Original file line number Diff line number Diff line change
@@ -14,7 +14,6 @@ import withPolicyConnections from '@pages/workspace/withPolicyConnections';
import CONST from '@src/CONST';
import ROUTES from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
import isEmptyValue from '@src/types/utils/isEmptyString';

function XeroExportConfigurationPage({policy}: WithPolicyConnectionsProps) {
const {translate} = useLocalize();
@@ -25,7 +24,7 @@ function XeroExportConfigurationPage({policy}: WithPolicyConnectionsProps) {
const policyOwner = policy?.owner ?? '';

const {export: exportConfiguration, errorFields, pendingFields} = policy?.connections?.xero?.config ?? {};
const shouldGoBackToSpecificRoute = !exportConfiguration?.nonReimbursableAccount && !isEmptyValue(backTo);
const shouldGoBackToSpecificRoute = !exportConfiguration?.nonReimbursableAccount && backTo;

const {bankAccounts} = policy?.connections?.xero?.data ?? {};
const selectedBankAccountName = useMemo(() => {
14 changes: 0 additions & 14 deletions src/types/utils/isEmptyString.ts

This file was deleted.