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, };