Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
6 changes: 6 additions & 0 deletions src/libs/actions/Policy/Policy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5160,6 +5160,12 @@ function enablePolicyFeatureForConnection(policy: OnyxEntry<Policy>, featureName
if (!policy?.id || PolicyUtils.isPolicyFeatureEnabled(policy, featureName)) {
return;
}
// A workspace that is still being created has no connections to fetch. Without this, the open Connections page
// would be replaced by a loader while the fetch waits behind the create request. It's set first so the page never
// sees the feature on without it.
if (featureName === CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED && policy.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD) {
Onyx.merge(`${ONYXKEYS.COLLECTION.POLICY_HAS_CONNECTIONS_DATA_BEEN_FETCHED}${policy.id}`, true);
}
Comment thread
Krishna2323 marked this conversation as resolved.
ENABLE_CONNECTION_FEATURE[featureName](policy.id, true, false);
}

Expand Down
3 changes: 2 additions & 1 deletion src/pages/workspace/WorkspaceMoreFeaturesPage/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ import {
import {getIsTravelBillingEnabled, getTravelBillingCardSettingsKey} from '@libs/TravelBillingUtils';

import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
import {getAccountingConnectionsRoute} from '@pages/workspace/connections/utils';
import type {WithPolicyAndFullscreenLoadingProps} from '@pages/workspace/withPolicyAndFullscreenLoading';
import withPolicyAndFullscreenLoading from '@pages/workspace/withPolicyAndFullscreenLoading';

Expand Down Expand Up @@ -218,7 +219,7 @@ function WorkspaceMoreFeaturesPage({policy, route}: WorkspaceMoreFeaturesPagePro
if (action !== ModalActions.CONFIRM) {
return;
}
Navigation.navigate(ROUTES.POLICY_ACCOUNTING.getRoute(policyID));
Navigation.navigate(getAccountingConnectionsRoute(isUnifiedConnectionsBetaEnabled, policyID));
};

const warnVendorsManagedByAccounting = async () => {
Expand Down
15 changes: 11 additions & 4 deletions src/pages/workspace/accounting/AccountingContext/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import useLocalize from '@hooks/useLocalize';
import {getAccountingIntegrationDisplayName} from '@libs/AccountingUtils';
import {removePolicyConnection} from '@libs/actions/connections';
import Navigation from '@libs/Navigation/Navigation';
import {isControlPolicy, tryNavigateToSubmitWorkspaceUpgrade} from '@libs/PolicyUtils';
import {isControlPolicy, isPolicyFeatureEnabled, tryNavigateToSubmitWorkspaceUpgrade} from '@libs/PolicyUtils';

import {getAccountingIntegrationData} from '@pages/workspace/accounting/utils';

Expand Down Expand Up @@ -158,7 +158,8 @@ function AccountingContextProvider({children, policy}: AccountingContextProvider
);

// Connections has no feature toggle, so turn it on here. The Control upgrade only enables the integration's own feature.
if (isUnifiedConnectionsBetaEnabled) {
const shouldEnableConnections = isUnifiedConnectionsBetaEnabled && !isPolicyFeatureEnabled(policy, CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED);
if (shouldEnableConnections) {
enablePolicyFeatureForConnection(policy, CONST.POLICY.MORE_FEATURES.ARE_CONNECTIONS_ENABLED);
}

Expand All @@ -169,10 +170,16 @@ function AccountingContextProvider({children, policy}: AccountingContextProvider
);
return;
}
setActiveIntegration({
const activeIntegrationToStart = {
...newActiveIntegration,
key: Math.random(),
});
};
// The setup pages redirect to More features while Connections is off, so they open a frame later, once the policy shows it on
if (shouldEnableConnections) {
requestAnimationFrame(() => setActiveIntegration(activeIntegrationToStart));
} else {
setActiveIntegration(activeIntegrationToStart);
}

const integrationToDisconnect = newActiveIntegration.integrationToDisconnect;
if (!newActiveIntegration.shouldDisconnectIntegrationBeforeConnecting || !integrationToDisconnect) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import OfflineWithFeedback from '@components/OfflineWithFeedback';

import useAccordionAnimation from '@hooks/useAccordionAnimation';
import useExpensifyCardFeeds from '@hooks/useExpensifyCardFeeds';
import useIsUnifiedConnectionsBetaEnabled from '@hooks/useIsUnifiedConnectionsBetaEnabled';
import useLocalize from '@hooks/useLocalize';
import useThemeStyles from '@hooks/useThemeStyles';

Expand All @@ -22,6 +23,7 @@ import {getLatestErrorField} from '@libs/ErrorUtils';
import Navigation from '@libs/Navigation/Navigation';
import {areSettingsInErrorFields, settingsPendingAction} from '@libs/PolicyUtils';

import {getAccountingSettingsRoute} from '@pages/workspace/connections/utils';
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
Expand All @@ -39,6 +41,7 @@ function BusinessCentralAdvancedPage({policy}: WithPolicyConnectionsProps) {
const {translate} = useLocalize();
const styles = useThemeStyles();
const policyID = policy?.id;
const isUnifiedConnectionsBetaEnabled = useIsUnifiedConnectionsBetaEnabled();
const businessCentralConfig = policy?.connections?.businessCentral?.config;
const bankAccounts = policy?.connections?.businessCentral?.data?.bankAccounts;
const autoSync = businessCentralConfig?.autoSync?.enabled ?? false;
Expand All @@ -61,6 +64,7 @@ function BusinessCentralAdvancedPage({policy}: WithPolicyConnectionsProps) {

return (
<ConnectionLayout
onBackButtonPress={() => Navigation.goBack(getAccountingSettingsRoute(isUnifiedConnectionsBetaEnabled, policyID))}
displayName="BusinessCentralAdvancedPage"
headerTitle="workspace.accounting.advanced"
accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.CONTROL]}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import Text from '@components/Text';
import useAccordionAnimation from '@hooks/useAccordionAnimation';
import useCardFeeds from '@hooks/useCardFeeds';
import useCardsLists from '@hooks/useCardsLists';
import useIsUnifiedConnectionsBetaEnabled from '@hooks/useIsUnifiedConnectionsBetaEnabled';
import useLocalize from '@hooks/useLocalize';
import useThemeStyles from '@hooks/useThemeStyles';

Expand All @@ -17,6 +18,7 @@ import {getLatestErrorField} from '@libs/ErrorUtils';
import Navigation from '@libs/Navigation/Navigation';
import {areSettingsInErrorFields, settingsPendingAction} from '@libs/PolicyUtils';

import {getAccountingSettingsRoute} from '@pages/workspace/connections/utils';
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
Expand Down Expand Up @@ -46,6 +48,7 @@ function BusinessCentralExportPage({policy}: WithPolicyConnectionsProps) {
const {translate} = useLocalize();
const styles = useThemeStyles();
const policyID = policy?.id;
const isUnifiedConnectionsBetaEnabled = useIsUnifiedConnectionsBetaEnabled();
const [cardFeeds] = useCardFeeds(policyID);
const [cardLists] = useCardsLists();
const businessCentralConfig = policy?.connections?.businessCentral?.config;
Expand Down Expand Up @@ -185,6 +188,7 @@ function BusinessCentralExportPage({policy}: WithPolicyConnectionsProps) {

return (
<ConnectionLayout
onBackButtonPress={() => Navigation.goBack(getAccountingSettingsRoute(isUnifiedConnectionsBetaEnabled, policyID))}
displayName="BusinessCentralExportPage"
headerTitle="workspace.accounting.export"
accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.CONTROL]}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import ConnectionLayout from '@components/ConnectionLayout';
import Text from '@components/Text';

import useConfirmModal from '@hooks/useConfirmModal';
import useIsUnifiedConnectionsBetaEnabled from '@hooks/useIsUnifiedConnectionsBetaEnabled';
import useLocalize from '@hooks/useLocalize';
import useThemeStyles from '@hooks/useThemeStyles';

Expand All @@ -18,8 +19,10 @@ import {
updateBusinessCentralSyncTaxRates,
} from '@libs/actions/connections/BusinessCentral';
import {getLatestErrorField} from '@libs/ErrorUtils';
import Navigation from '@libs/Navigation/Navigation';
import {settingsPendingAction} from '@libs/PolicyUtils';

import {getAccountingSettingsRoute} from '@pages/workspace/connections/utils';
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
Expand Down Expand Up @@ -75,6 +78,7 @@ function BusinessCentralImportPage({policy}: WithPolicyConnectionsProps) {
const {showConfirmModal} = useConfirmModal();
const styles = useThemeStyles();
const policyID = policy?.id;
const isUnifiedConnectionsBetaEnabled = useIsUnifiedConnectionsBetaEnabled();
const businessCentralConfig = policy?.connections?.businessCentral?.config;
const businessCentralData = policy?.connections?.businessCentral?.data;

Expand Down Expand Up @@ -104,6 +108,7 @@ function BusinessCentralImportPage({policy}: WithPolicyConnectionsProps) {

return (
<ConnectionLayout
onBackButtonPress={() => Navigation.goBack(getAccountingSettingsRoute(isUnifiedConnectionsBetaEnabled, policyID))}
displayName="BusinessCentralImportPage"
headerTitle="workspace.accounting.import"
accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.CONTROL]}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import OfflineWithFeedback from '@components/OfflineWithFeedback';

import useAccordionAnimation from '@hooks/useAccordionAnimation';
import useExpensifyCardFeeds from '@hooks/useExpensifyCardFeeds';
import useIsUnifiedConnectionsBetaEnabled from '@hooks/useIsUnifiedConnectionsBetaEnabled';
import useLocalize from '@hooks/useLocalize';
import useOnyx from '@hooks/useOnyx';
import useThemeStyles from '@hooks/useThemeStyles';
Expand All @@ -23,6 +24,7 @@ import Navigation from '@libs/Navigation/Navigation';
import {areSettingsInErrorFields, settingsPendingAction} from '@libs/PolicyUtils';
import {getIsTravelBillingEnabled, getTravelBillingCardSettingsKey} from '@libs/TravelBillingUtils';

import {getAccountingSettingsRoute} from '@pages/workspace/connections/utils';
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
Expand All @@ -38,6 +40,7 @@ function CampfireAdvancedPage({policy}: WithPolicyConnectionsProps) {
const {translate} = useLocalize();
const styles = useThemeStyles();
const policyID = policy?.id;
const isUnifiedConnectionsBetaEnabled = useIsUnifiedConnectionsBetaEnabled();
const campfireConfig = policy?.connections?.campfire?.config;
const campfireData = policy?.connections?.campfire?.data;
const autoSync = campfireConfig?.autoSync?.enabled ?? false;
Expand Down Expand Up @@ -66,6 +69,7 @@ function CampfireAdvancedPage({policy}: WithPolicyConnectionsProps) {

return (
<ConnectionLayout
onBackButtonPress={() => Navigation.goBack(getAccountingSettingsRoute(isUnifiedConnectionsBetaEnabled, policyID))}
displayName="CampfireAdvancedPage"
headerTitle="workspace.accounting.advanced"
accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.CONTROL]}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import Text from '@components/Text';
import useAccordionAnimation from '@hooks/useAccordionAnimation';
import useCardFeeds from '@hooks/useCardFeeds';
import useCardsLists from '@hooks/useCardsLists';
import useIsUnifiedConnectionsBetaEnabled from '@hooks/useIsUnifiedConnectionsBetaEnabled';
import useLocalize from '@hooks/useLocalize';
import useThemeStyles from '@hooks/useThemeStyles';

Expand All @@ -18,6 +19,7 @@ import {getLatestErrorField} from '@libs/ErrorUtils';
import Navigation from '@libs/Navigation/Navigation';
import {areSettingsInErrorFields, settingsPendingAction} from '@libs/PolicyUtils';

import {getAccountingSettingsRoute} from '@pages/workspace/connections/utils';
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
Expand All @@ -32,6 +34,7 @@ function CampfireExportPage({policy}: WithPolicyConnectionsProps) {
const {translate} = useLocalize();
const styles = useThemeStyles();
const policyID = policy?.id;
const isUnifiedConnectionsBetaEnabled = useIsUnifiedConnectionsBetaEnabled();
const [cardFeeds] = useCardFeeds(policyID);
const [cardLists] = useCardsLists();
const policyOwner = policy?.owner;
Expand All @@ -57,6 +60,7 @@ function CampfireExportPage({policy}: WithPolicyConnectionsProps) {

return (
<ConnectionLayout
onBackButtonPress={() => Navigation.goBack(getAccountingSettingsRoute(isUnifiedConnectionsBetaEnabled, policyID))}
displayName="CampfireExportPage"
headerTitle="workspace.accounting.export"
accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.CONTROL]}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
import ConnectionLayout from '@components/ConnectionLayout';
import Text from '@components/Text';

import useIsUnifiedConnectionsBetaEnabled from '@hooks/useIsUnifiedConnectionsBetaEnabled';
import useLocalize from '@hooks/useLocalize';
import useThemeStyles from '@hooks/useThemeStyles';

import {clearCampfireErrorField, updateCampfireEnableNewCategories, updateCampfireFieldMapping, updateCampfireSyncTaxRates} from '@libs/actions/connections/Campfire';
import {getLatestErrorField} from '@libs/ErrorUtils';
import Navigation from '@libs/Navigation/Navigation';
import {settingsPendingAction} from '@libs/PolicyUtils';

import {getAccountingSettingsRoute} from '@pages/workspace/connections/utils';
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
Expand All @@ -21,6 +24,7 @@ function CampfireImportPage({policy}: WithPolicyConnectionsProps) {
const {translate} = useLocalize();
const styles = useThemeStyles();
const policyID = policy?.id;
const isUnifiedConnectionsBetaEnabled = useIsUnifiedConnectionsBetaEnabled();
const campfireConfig = policy?.connections?.campfire?.config;
const campfireData = policy?.connections?.campfire?.data;
const enableNewCategories = campfireConfig?.enableNewCategories ?? false;
Expand All @@ -30,6 +34,7 @@ function CampfireImportPage({policy}: WithPolicyConnectionsProps) {

return (
<ConnectionLayout
onBackButtonPress={() => Navigation.goBack(getAccountingSettingsRoute(isUnifiedConnectionsBetaEnabled, policyID))}
displayName="CampfireImportPage"
headerTitle="workspace.accounting.import"
accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.CONTROL]}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import MenuItem from '@components/MenuItem';
import MenuItemField from '@components/MenuItem/presets/MenuItemField';
import OfflineWithFeedback from '@components/OfflineWithFeedback';

import useIsUnifiedConnectionsBetaEnabled from '@hooks/useIsUnifiedConnectionsBetaEnabled';
import useLocalize from '@hooks/useLocalize';
import useThemeStyles from '@hooks/useThemeStyles';

Expand All @@ -12,6 +13,7 @@ import Navigation from '@libs/Navigation/Navigation';
import {areSettingsInErrorFields, settingsPendingAction} from '@libs/PolicyUtils';

import {CERTINIA_DIMENSION_PARAMS, getDimensionLabel, getDisplayTypeLabel, getParentTagMappingLabel} from '@pages/workspace/accounting/certinia/utils';
import {getAccountingSettingsRoute} from '@pages/workspace/connections/utils';
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
Expand All @@ -26,12 +28,14 @@ function CertiniaImportPage({policy}: WithPolicyConnectionsProps) {
const styles = useThemeStyles();

const policyID = policy?.id;
const isUnifiedConnectionsBetaEnabled = useIsUnifiedConnectionsBetaEnabled();
const config = policy?.connections?.[CONST.POLICY.CONNECTIONS.NAME.CERTINIA]?.config;
const coding = config?.coding;
const hasPSA = !!config?.hasPSA;

return (
<ConnectionLayout
onBackButtonPress={() => Navigation.goBack(getAccountingSettingsRoute(isUnifiedConnectionsBetaEnabled, policyID))}
displayName="CertiniaImportPage"
headerTitle="workspace.accounting.import"
accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.CONTROL]}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import OfflineWithFeedback from '@components/OfflineWithFeedback';
import useAccordionAnimation from '@hooks/useAccordionAnimation';
import useCanConfigureCurrencyConversionFees from '@hooks/useCanConfigureCurrencyConversionFees';
import useExpensifyCardFeeds from '@hooks/useExpensifyCardFeeds';
import useIsUnifiedConnectionsBetaEnabled from '@hooks/useIsUnifiedConnectionsBetaEnabled';
import useLocalize from '@hooks/useLocalize';
import useOnyx from '@hooks/useOnyx';
import useThemeStyles from '@hooks/useThemeStyles';
Expand All @@ -25,6 +26,7 @@ import Navigation from '@libs/Navigation/Navigation';
import {areSettingsInErrorFields, settingsPendingAction} from '@libs/PolicyUtils';
import {getIsTravelBillingEnabled, getTravelBillingCardSettingsKey} from '@libs/TravelBillingUtils';

import {getAccountingSettingsRoute} from '@pages/workspace/connections/utils';
import withPolicyConnections from '@pages/workspace/withPolicyConnections';
import type {WithPolicyConnectionsProps} from '@pages/workspace/withPolicyConnections';
import ToggleSettingOptionRow from '@pages/workspace/workflows/ToggleSettingsOptionRow';
Expand All @@ -42,6 +44,7 @@ function DualEntryAdvancedPage({policy}: WithPolicyConnectionsProps) {
const {translate} = useLocalize();
const styles = useThemeStyles();
const policyID = policy?.id;
const isUnifiedConnectionsBetaEnabled = useIsUnifiedConnectionsBetaEnabled();
const dualentryConfig = policy?.connections?.dualEntry?.config;
const dualentryData = policy?.connections?.dualEntry?.data;
const autoSync = dualentryConfig?.autoSync?.enabled ?? false;
Expand Down Expand Up @@ -72,6 +75,7 @@ function DualEntryAdvancedPage({policy}: WithPolicyConnectionsProps) {

return (
<ConnectionLayout
onBackButtonPress={() => Navigation.goBack(getAccountingSettingsRoute(isUnifiedConnectionsBetaEnabled, policyID))}
displayName="DualEntryAdvancedPage"
headerTitle="workspace.accounting.advanced"
accessVariants={[CONST.POLICY.ACCESS_VARIANTS.ADMIN, CONST.POLICY.ACCESS_VARIANTS.CONTROL]}
Expand Down
Loading
Loading