diff --git a/src/components/AvatarWithIndicator.js b/src/components/AvatarWithIndicator.js
index afa59dfbdd9e..1bd517cfd642 100644
--- a/src/components/AvatarWithIndicator.js
+++ b/src/components/AvatarWithIndicator.js
@@ -11,7 +11,7 @@ import policyMemberPropType from '../pages/policyMemberPropType';
import bankAccountPropTypes from './bankAccountPropTypes';
import cardPropTypes from './cardPropTypes';
import userWalletPropTypes from '../pages/EnablePayments/userWalletPropTypes';
-import {fullPolicyPropTypes} from '../pages/workspace/withFullPolicy';
+import {policyPropTypes} from '../pages/workspace/withPolicy';
import walletTermsPropTypes from '../pages/EnablePayments/walletTermsPropTypes';
import * as PolicyUtils from '../libs/PolicyUtils';
import * as PaymentMethods from '../libs/actions/PaymentMethods';
@@ -30,7 +30,7 @@ const propTypes = {
policiesMemberList: PropTypes.objectOf(policyMemberPropType),
/** All the user's policies (from Onyx via withFullPolicy) */
- policies: PropTypes.objectOf(fullPolicyPropTypes.policy),
+ policies: PropTypes.objectOf(policyPropTypes.policy),
/** List of bank accounts */
bankAccountList: PropTypes.objectOf(bankAccountPropTypes),
diff --git a/src/components/RoomNameInput.js b/src/components/RoomNameInput.js
index 8bd14fe9408c..55e1a2296a7a 100644
--- a/src/components/RoomNameInput.js
+++ b/src/components/RoomNameInput.js
@@ -5,7 +5,6 @@ import CONST from '../CONST';
import ONYXKEYS from '../ONYXKEYS';
import compose from '../libs/compose';
import withLocalize, {withLocalizePropTypes} from './withLocalize';
-import withFullPolicy, {fullPolicyDefaultProps, fullPolicyPropTypes} from '../pages/workspace/withFullPolicy';
import TextInput from './TextInput';
const propTypes = {
@@ -22,7 +21,6 @@ const propTypes = {
errorText: PropTypes.string,
...withLocalizePropTypes,
- ...fullPolicyPropTypes,
/* Onyx Props */
@@ -53,7 +51,6 @@ const defaultProps = {
initialValue: '',
disabled: false,
errorText: '',
- ...fullPolicyDefaultProps,
forwardedRef: () => {},
};
@@ -114,7 +111,6 @@ RoomNameInput.defaultProps = defaultProps;
export default compose(
withLocalize,
- withFullPolicy,
withOnyx({
reports: {
key: ONYXKEYS.COLLECTION.REPORT,
diff --git a/src/pages/ReportSettingsPage.js b/src/pages/ReportSettingsPage.js
index 9efc59dc940e..0fe5d285fb92 100644
--- a/src/pages/ReportSettingsPage.js
+++ b/src/pages/ReportSettingsPage.js
@@ -18,7 +18,6 @@ import Text from '../components/Text';
import Button from '../components/Button';
import RoomNameInput from '../components/RoomNameInput';
import Picker from '../components/Picker';
-import withFullPolicy, {fullPolicyDefaultProps, fullPolicyPropTypes} from './workspace/withFullPolicy';
import * as ValidationUtils from '../libs/ValidationUtils';
import OfflineWithFeedback from '../components/OfflineWithFeedback';
@@ -31,7 +30,6 @@ const propTypes = {
}),
}).isRequired,
- ...fullPolicyPropTypes,
...withLocalizePropTypes,
/* Onyx Props */
@@ -79,17 +77,6 @@ const propTypes = {
}).isRequired,
};
-const defaultProps = {
- ...fullPolicyDefaultProps,
- report: {
- reportID: 0,
- reportName: '',
- policyID: '',
- notificationPreference: '',
- visibility: '',
- },
-};
-
class ReportSettingsPage extends Component {
constructor(props) {
super(props);
@@ -287,11 +274,9 @@ class ReportSettingsPage extends Component {
}
ReportSettingsPage.propTypes = propTypes;
-ReportSettingsPage.defaultProps = defaultProps;
export default compose(
withLocalize,
- withFullPolicy,
withOnyx({
report: {
key: ({route}) => `${ONYXKEYS.COLLECTION.REPORT}${route.params.reportID}`,
diff --git a/src/pages/workspace/WorkspaceBankAccountPage.js b/src/pages/workspace/WorkspaceBankAccountPage.js
index 6b95d4685ddd..64bd69cb9bd3 100644
--- a/src/pages/workspace/WorkspaceBankAccountPage.js
+++ b/src/pages/workspace/WorkspaceBankAccountPage.js
@@ -21,7 +21,7 @@ import Section from '../../components/Section';
import WorkspaceResetBankAccountModal from './WorkspaceResetBankAccountModal';
import styles from '../../styles/styles';
import CONST from '../../CONST';
-import withFullPolicy from './withFullPolicy';
+import withPolicy from './withPolicy';
import Button from '../../components/Button';
import MenuItem from '../../components/MenuItem';
import FullPageNotFoundView from '../../components/BlockingViews/FullPageNotFoundView';
@@ -131,5 +131,5 @@ export default compose(
key: ONYXKEYS.REIMBURSEMENT_ACCOUNT,
},
}),
- withFullPolicy,
+ withPolicy,
)(WorkspaceBankAccountPage);
diff --git a/src/pages/workspace/WorkspaceInitialPage.js b/src/pages/workspace/WorkspaceInitialPage.js
index 6445933dec42..cbcccda54c62 100644
--- a/src/pages/workspace/WorkspaceInitialPage.js
+++ b/src/pages/workspace/WorkspaceInitialPage.js
@@ -20,7 +20,7 @@ import HeaderWithCloseButton from '../../components/HeaderWithCloseButton';
import compose from '../../libs/compose';
import Avatar from '../../components/Avatar';
import FullPageNotFoundView from '../../components/BlockingViews/FullPageNotFoundView';
-import withFullPolicy, {fullPolicyPropTypes, fullPolicyDefaultProps} from './withFullPolicy';
+import withPolicy, {policyPropTypes, policyDefaultProps} from './withPolicy';
import * as Policy from '../../libs/actions/Policy';
import * as PolicyUtils from '../../libs/PolicyUtils';
import CONST from '../../CONST';
@@ -30,7 +30,7 @@ import policyMemberPropType from '../policyMemberPropType';
import OfflineWithFeedback from '../../components/OfflineWithFeedback';
const propTypes = {
- ...fullPolicyPropTypes,
+ ...policyPropTypes,
...withLocalizePropTypes,
/** The employee list of this policy (coming from Onyx) */
@@ -38,7 +38,7 @@ const propTypes = {
};
const defaultProps = {
- ...fullPolicyDefaultProps,
+ ...policyDefaultProps,
policyMemberList: {},
};
@@ -248,7 +248,7 @@ WorkspaceInitialPage.defaultProps = defaultProps;
export default compose(
withLocalize,
- withFullPolicy,
+ withPolicy,
withOnyx({
policyMemberList: {
key: ({policy}) => `${ONYXKEYS.COLLECTION.POLICY_MEMBER_LIST}${policy.id}`,
diff --git a/src/pages/workspace/WorkspaceInvitePage.js b/src/pages/workspace/WorkspaceInvitePage.js
index dbefba433b49..86fcc48b9757 100644
--- a/src/pages/workspace/WorkspaceInvitePage.js
+++ b/src/pages/workspace/WorkspaceInvitePage.js
@@ -20,7 +20,7 @@ import CONST from '../../CONST';
import FullScreenLoadingIndicator from '../../components/FullscreenLoadingIndicator';
import * as Link from '../../libs/actions/Link';
import Text from '../../components/Text';
-import withFullPolicy, {fullPolicyPropTypes, fullPolicyDefaultProps} from './withFullPolicy';
+import withPolicy, {policyPropTypes, policyDefaultProps} from './withPolicy';
import {withNetwork} from '../../components/OnyxProvider';
import FullPageNotFoundView from '../../components/BlockingViews/FullPageNotFoundView';
import networkPropTypes from '../../components/networkPropTypes';
@@ -53,12 +53,12 @@ const propTypes = {
}),
}).isRequired,
- ...fullPolicyPropTypes,
+ ...policyPropTypes,
...withLocalizePropTypes,
...networkPropTypes,
};
-const defaultProps = fullPolicyDefaultProps;
+const defaultProps = policyDefaultProps;
class WorkspaceInvitePage extends React.Component {
constructor(props) {
@@ -352,7 +352,7 @@ WorkspaceInvitePage.defaultProps = defaultProps;
export default compose(
withLocalize,
- withFullPolicy,
+ withPolicy,
withNetwork(),
withOnyx({
personalDetails: {
diff --git a/src/pages/workspace/WorkspaceMembersPage.js b/src/pages/workspace/WorkspaceMembersPage.js
index db12309ce7b7..1de2d1759565 100644
--- a/src/pages/workspace/WorkspaceMembersPage.js
+++ b/src/pages/workspace/WorkspaceMembersPage.js
@@ -25,7 +25,7 @@ import withWindowDimensions, {windowDimensionsPropTypes} from '../../components/
import OptionRow from '../../components/OptionRow';
import CheckboxWithTooltip from '../../components/CheckboxWithTooltip';
import Hoverable from '../../components/Hoverable';
-import withFullPolicy, {fullPolicyPropTypes, fullPolicyDefaultProps} from './withFullPolicy';
+import withPolicy, {policyPropTypes, policyDefaultProps} from './withPolicy';
import CONST from '../../CONST';
import OfflineWithFeedback from '../../components/OfflineWithFeedback';
import {withNetwork} from '../../components/OnyxProvider';
@@ -45,13 +45,13 @@ const propTypes = {
}),
}).isRequired,
- ...fullPolicyPropTypes,
+ ...policyPropTypes,
...withLocalizePropTypes,
...windowDimensionsPropTypes,
...networkPropTypes,
};
-const defaultProps = fullPolicyDefaultProps;
+const defaultProps = policyDefaultProps;
class WorkspaceMembersPage extends React.Component {
constructor(props) {
@@ -367,7 +367,7 @@ WorkspaceMembersPage.defaultProps = defaultProps;
export default compose(
withLocalize,
withWindowDimensions,
- withFullPolicy,
+ withPolicy,
withNetwork(),
withOnyx({
personalDetails: {
diff --git a/src/pages/workspace/WorkspaceNewRoomPage.js b/src/pages/workspace/WorkspaceNewRoomPage.js
index 1dae4d8d5b67..440362bb91eb 100644
--- a/src/pages/workspace/WorkspaceNewRoomPage.js
+++ b/src/pages/workspace/WorkspaceNewRoomPage.js
@@ -3,7 +3,6 @@ import {ScrollView, View} from 'react-native';
import _ from 'underscore';
import {withOnyx} from 'react-native-onyx';
import PropTypes from 'prop-types';
-import withFullPolicy, {fullPolicyDefaultProps, fullPolicyPropTypes} from './withFullPolicy';
import * as Report from '../../libs/actions/Report';
import withLocalize, {withLocalizePropTypes} from '../../components/withLocalize';
import compose from '../../libs/compose';
@@ -35,17 +34,17 @@ const propTypes = {
policyID: PropTypes.string,
}).isRequired,
+ /** List of betas available to current user */
+ betas: PropTypes.arrayOf(PropTypes.string),
+
/** Are we loading the createPolicyRoom command */
isLoadingCreatePolicyRoom: PropTypes.bool,
- ...fullPolicyPropTypes,
-
...withLocalizePropTypes,
};
const defaultProps = {
betas: [],
isLoadingCreatePolicyRoom: false,
- ...fullPolicyDefaultProps,
};
class WorkspaceNewRoomPage extends React.Component {
@@ -203,7 +202,6 @@ WorkspaceNewRoomPage.propTypes = propTypes;
WorkspaceNewRoomPage.defaultProps = defaultProps;
export default compose(
- withFullPolicy,
withOnyx({
betas: {
key: ONYXKEYS.BETAS,
diff --git a/src/pages/workspace/WorkspacePageWithSections.js b/src/pages/workspace/WorkspacePageWithSections.js
index d6fc3b3a09e6..7c0ecacc0d8a 100644
--- a/src/pages/workspace/WorkspacePageWithSections.js
+++ b/src/pages/workspace/WorkspacePageWithSections.js
@@ -15,7 +15,7 @@ import * as BankAccounts from '../../libs/actions/BankAccounts';
import BankAccount from '../../libs/models/BankAccount';
import reimbursementAccountPropTypes from '../ReimbursementAccount/reimbursementAccountPropTypes';
import userPropTypes from '../settings/userPropTypes';
-import withFullPolicy from './withFullPolicy';
+import withPolicy from './withPolicy';
import {withNetwork} from '../../components/OnyxProvider';
import networkPropTypes from '../../components/networkPropTypes';
@@ -131,6 +131,6 @@ export default compose(
key: ONYXKEYS.REIMBURSEMENT_ACCOUNT,
},
}),
- withFullPolicy,
+ withPolicy,
withNetwork(),
)(WorkspacePageWithSections);
diff --git a/src/pages/workspace/WorkspaceSettingsPage.js b/src/pages/workspace/WorkspaceSettingsPage.js
index a35c1fc690a2..40c370abb92b 100644
--- a/src/pages/workspace/WorkspaceSettingsPage.js
+++ b/src/pages/workspace/WorkspaceSettingsPage.js
@@ -19,18 +19,18 @@ import Picker from '../../components/Picker';
import TextInput from '../../components/TextInput';
import FixedFooter from '../../components/FixedFooter';
import WorkspacePageWithSections from './WorkspacePageWithSections';
-import withFullPolicy, {fullPolicyPropTypes, fullPolicyDefaultProps} from './withFullPolicy';
+import withPolicy, {policyPropTypes, policyDefaultProps} from './withPolicy';
import {withNetwork} from '../../components/OnyxProvider';
import OfflineWithFeedback from '../../components/OfflineWithFeedback';
import FullPageNotFoundView from '../../components/BlockingViews/FullPageNotFoundView';
const propTypes = {
- ...fullPolicyPropTypes,
+ ...policyPropTypes,
...withLocalizePropTypes,
};
const defaultProps = {
- ...fullPolicyDefaultProps,
+ ...policyDefaultProps,
};
class WorkspaceSettingsPage extends React.Component {
@@ -162,7 +162,7 @@ WorkspaceSettingsPage.propTypes = propTypes;
WorkspaceSettingsPage.defaultProps = defaultProps;
export default compose(
- withFullPolicy,
+ withPolicy,
withOnyx({
currencyList: {key: ONYXKEYS.CURRENCY_LIST},
}),
diff --git a/src/pages/workspace/reimburse/WorkspaceReimburseView.js b/src/pages/workspace/reimburse/WorkspaceReimburseView.js
index 053e49348872..cead7dbc828a 100644
--- a/src/pages/workspace/reimburse/WorkspaceReimburseView.js
+++ b/src/pages/workspace/reimburse/WorkspaceReimburseView.js
@@ -17,7 +17,7 @@ import * as Link from '../../../libs/actions/Link';
import compose from '../../../libs/compose';
import ONYXKEYS from '../../../ONYXKEYS';
import * as Policy from '../../../libs/actions/Policy';
-import withFullPolicy from '../withFullPolicy';
+import withPolicy from '../withPolicy';
import CONST from '../../../CONST';
import Button from '../../../components/Button';
import {withNetwork} from '../../../components/OnyxProvider';
@@ -302,7 +302,7 @@ class WorkspaceReimburseView extends React.Component {
WorkspaceReimburseView.propTypes = propTypes;
export default compose(
- withFullPolicy,
+ withPolicy,
withLocalize,
withNetwork(),
withOnyx({
diff --git a/src/pages/workspace/withFullPolicy.js b/src/pages/workspace/withPolicy.js
similarity index 64%
rename from src/pages/workspace/withFullPolicy.js
rename to src/pages/workspace/withPolicy.js
index 45f608d685b2..34182871eb4f 100644
--- a/src/pages/workspace/withFullPolicy.js
+++ b/src/pages/workspace/withPolicy.js
@@ -2,7 +2,6 @@ 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';
@@ -11,9 +10,6 @@ import * as Policy from '../../libs/actions/Policy';
import ONYXKEYS from '../../ONYXKEYS';
import policyMemberPropType from '../policyMemberPropType';
-let previousRouteName = '';
-let previousRoutePolicyID = '';
-
/**
* @param {Object} route
* @returns {String}
@@ -22,20 +18,7 @@ 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 = {
+const policyPropTypes = {
/** The policy object for the current route */
policy: PropTypes.shape({
/** The ID of the policy */
@@ -78,12 +61,12 @@ const fullPolicyPropTypes = {
policyMemberList: PropTypes.objectOf(policyMemberPropType),
};
-const fullPolicyDefaultProps = {
+const policyDefaultProps = {
policy: {},
};
/*
- * HOC for loading a full policy. It checks the route params and if current route has a policyID that the previous route did not, it full-loads that policy.
+ * HOC for connecting a policy in Onyx corresponding to the policyID in route params
*/
export default function (WrappedComponent) {
const propTypes = {
@@ -91,46 +74,39 @@ export default function (WrappedComponent) {
* That way, if a ref is passed to a component wrapped in the HOC, the ref is a reference to the wrapped component, not the HOC. */
forwardedRef: PropTypes.func,
- ...fullPolicyPropTypes,
+ ...policyPropTypes,
};
const defaultProps = {
forwardedRef: () => {},
- ...fullPolicyDefaultProps,
+ ...policyDefaultProps,
};
- const WithFullPolicy = (props) => {
+ const WithPolicy = (props) => {
const currentRoute = _.last(useNavigationState(state => state.routes || []));
const policyID = getPolicyIDFromRoute(currentRoute);
- const isFromFullPolicy = lodashGet(props, 'policy.isFromFullPolicy', false) || lodashGet(props, `policy.policy_${policyID}.isFromFullPolicy`, false);
- if (_.isString(policyID) && !_.isEmpty(policyID) && (!isFromFullPolicy || !isPreviousRouteInSameWorkspace(currentRoute.name, policyID))) {
- Policy.loadFullPolicy(policyID);
+ if (_.isString(policyID) && !_.isEmpty(policyID)) {
Policy.updateLastAccessedWorkspace(policyID);
}
- previousRouteName = currentRoute.name;
- previousRoutePolicyID = policyID;
-
- const rest = _.omit(props, ['forwardedRef', 'policy', 'policyMemberList']);
+ const rest = _.omit(props, ['forwardedRef']);
return (
);
};
- WithFullPolicy.propTypes = propTypes;
- WithFullPolicy.defaultProps = defaultProps;
- WithFullPolicy.displayName = `withFullPolicy(${getComponentDisplayName(WrappedComponent)})`;
- const withFullPolicy = React.forwardRef((props, ref) => (
+ WithPolicy.propTypes = propTypes;
+ WithPolicy.defaultProps = defaultProps;
+ WithPolicy.displayName = `withFullPolicy(${getComponentDisplayName(WrappedComponent)})`;
+ const withPolicy = React.forwardRef((props, ref) => (
// eslint-disable-next-line react/jsx-props-no-spreading
-
+
));
return withOnyx({
@@ -140,10 +116,10 @@ export default function (WrappedComponent) {
policyMemberList: {
key: props => `${ONYXKEYS.COLLECTION.POLICY_MEMBER_LIST}${getPolicyIDFromRoute(props.route)}`,
},
- })(withFullPolicy);
+ })(withPolicy);
}
export {
- fullPolicyPropTypes,
- fullPolicyDefaultProps,
+ policyPropTypes,
+ policyDefaultProps,
};