From f79441bfeb38f5c5a4d9948e5823d0c5be86438a Mon Sep 17 00:00:00 2001 From: Rory Abraham Date: Mon, 29 Nov 2021 18:04:18 -0800 Subject: [PATCH] Use route.name instead of route.path --- src/pages/workspace/withFullPolicy.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/pages/workspace/withFullPolicy.js b/src/pages/workspace/withFullPolicy.js index 62eab380d1f..413a1f970f3 100644 --- a/src/pages/workspace/withFullPolicy.js +++ b/src/pages/workspace/withFullPolicy.js @@ -2,6 +2,7 @@ import _ from 'underscore'; import lodashGet from 'lodash/get'; import React from 'react'; import PropTypes from 'prop-types'; +import Str from 'expensify-common/lib/str'; import {withOnyx} from 'react-native-onyx'; import {useNavigationState} from '@react-navigation/native'; import CONST from '../../CONST'; @@ -9,7 +10,8 @@ import getComponentDisplayName from '../../libs/getComponentDisplayName'; import * as Policy from '../../libs/actions/Policy'; import ONYXKEYS from '../../ONYXKEYS'; -let previousRoute = ''; +let previousRouteName = ''; +let previousRoutePolicyID = ''; /** * @param {Object} route @@ -19,6 +21,19 @@ function getPolicyIDFromRoute(route) { return lodashGet(route, 'params.policyID', ''); } +/** + * @param {String} routeName + * @param {String} policyID + * @returns {Boolean} + */ +function isPreviousRouteInSameWorkspace(routeName, policyID) { + return ( + Str.startsWith(routeName, 'Workspace') + && Str.startsWith(previousRouteName, 'Workspace') + && policyID === previousRoutePolicyID + ); +} + const fullPolicyPropTypes = { /** The full policy object for the current route (as opposed to the policy summary object) */ policy: PropTypes.shape({ @@ -74,11 +89,12 @@ export default function (WrappedComponent) { const currentRoute = _.last(useNavigationState(state => state.routes || [])); const policyID = getPolicyIDFromRoute(currentRoute); - if (_.isString(policyID) && !previousRoute.includes(policyID)) { + if (_.isString(policyID) && !_.isEmpty(policyID) && !isPreviousRouteInSameWorkspace(currentRoute.name, policyID)) { Policy.loadFullPolicy(policyID); } - previousRoute = lodashGet(currentRoute, 'path', ''); + previousRouteName = currentRoute.name; + previousRoutePolicyID = policyID; const rest = _.omit(props, ['forwardedRef', 'policy']); return (