@@ -2,14 +2,16 @@ import _ from 'underscore';
2
2
import lodashGet from 'lodash/get' ;
3
3
import React from 'react' ;
4
4
import PropTypes from 'prop-types' ;
5
+ import Str from 'expensify-common/lib/str' ;
5
6
import { withOnyx } from 'react-native-onyx' ;
6
7
import { useNavigationState } from '@react-navigation/native' ;
7
8
import CONST from '../../CONST' ;
8
9
import getComponentDisplayName from '../../libs/getComponentDisplayName' ;
9
10
import * as Policy from '../../libs/actions/Policy' ;
10
11
import ONYXKEYS from '../../ONYXKEYS' ;
11
12
12
- let previousRoute = '' ;
13
+ let previousRouteName = '' ;
14
+ let previousRoutePolicyID = '' ;
13
15
14
16
/**
15
17
* @param {Object } route
@@ -19,6 +21,19 @@ function getPolicyIDFromRoute(route) {
19
21
return lodashGet ( route , 'params.policyID' , '' ) ;
20
22
}
21
23
24
+ /**
25
+ * @param {String } routeName
26
+ * @param {String } policyID
27
+ * @returns {Boolean }
28
+ */
29
+ function isPreviousRouteInSameWorkspace ( routeName , policyID ) {
30
+ return (
31
+ Str . startsWith ( routeName , 'Workspace' )
32
+ && Str . startsWith ( previousRouteName , 'Workspace' )
33
+ && policyID === previousRoutePolicyID
34
+ ) ;
35
+ }
36
+
22
37
const fullPolicyPropTypes = {
23
38
/** The full policy object for the current route (as opposed to the policy summary object) */
24
39
policy : PropTypes . shape ( {
@@ -74,11 +89,12 @@ export default function (WrappedComponent) {
74
89
const currentRoute = _ . last ( useNavigationState ( state => state . routes || [ ] ) ) ;
75
90
const policyID = getPolicyIDFromRoute ( currentRoute ) ;
76
91
77
- if ( _ . isString ( policyID ) && ! previousRoute . includes ( policyID ) ) {
92
+ if ( _ . isString ( policyID ) && ! _ . isEmpty ( policyID ) && ! isPreviousRouteInSameWorkspace ( currentRoute . name , policyID ) ) {
78
93
Policy . loadFullPolicy ( policyID ) ;
79
94
}
80
95
81
- previousRoute = lodashGet ( currentRoute , 'path' , '' ) ;
96
+ previousRouteName = currentRoute . name ;
97
+ previousRoutePolicyID = policyID ;
82
98
83
99
const rest = _ . omit ( props , [ 'forwardedRef' , 'policy' ] ) ;
84
100
return (
0 commit comments