Skip to content

Commit 13af4fa

Browse files
authored
Merge pull request Expensify#66098 from linhvovan29546/fix/65962-remove-withonyx-batch-2
Fix/65962 remove withonyx batch 2
2 parents 87764b3 + 2af6cc6 commit 13af4fa

2 files changed

Lines changed: 25 additions & 42 deletions

File tree

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,27 @@
11
import React from 'react';
2-
import type {OnyxEntry} from 'react-native-onyx';
3-
import {withOnyx} from 'react-native-onyx';
42
import AttachmentModal from '@components/AttachmentModal';
3+
import useOnyx from '@hooks/useOnyx';
4+
import usePolicy from '@hooks/usePolicy';
55
import Navigation from '@libs/Navigation/Navigation';
66
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
77
import type {AuthScreensParamList} from '@libs/Navigation/types';
8-
import * as ReportUtils from '@libs/ReportUtils';
9-
import * as UserUtils from '@libs/UserUtils';
8+
import {getDefaultWorkspaceAvatar} from '@libs/ReportUtils';
9+
import {getFullSizeAvatar} from '@libs/UserUtils';
1010
import ONYXKEYS from '@src/ONYXKEYS';
1111
import type SCREENS from '@src/SCREENS';
12-
import type {Policy} from '@src/types/onyx';
1312

14-
type WorkspaceAvatarOnyxProps = {
15-
policy: OnyxEntry<Policy>;
16-
isLoadingApp: OnyxEntry<boolean>;
17-
};
13+
type WorkspaceAvatarProps = PlatformStackScreenProps<AuthScreensParamList, typeof SCREENS.WORKSPACE_AVATAR>;
1814

19-
type WorkspaceAvatarProps = WorkspaceAvatarOnyxProps & PlatformStackScreenProps<AuthScreensParamList, typeof SCREENS.WORKSPACE_AVATAR>;
20-
21-
function WorkspaceAvatar({policy, isLoadingApp = true}: WorkspaceAvatarProps) {
22-
const avatarURL = (policy?.avatarURL ?? '') ? (policy?.avatarURL ?? '') : ReportUtils.getDefaultWorkspaceAvatar(policy?.name ?? '');
15+
function WorkspaceAvatar({route}: WorkspaceAvatarProps) {
16+
const policy = usePolicy(route?.params?.policyID);
17+
const [isLoadingApp = false] = useOnyx(ONYXKEYS.IS_LOADING_APP, {canBeMissing: true, initWithStoredValues: false});
18+
const avatarURL = (policy?.avatarURL ?? '') ? (policy?.avatarURL ?? '') : getDefaultWorkspaceAvatar(policy?.name ?? '');
2319

2420
return (
2521
<AttachmentModal
2622
headerTitle={policy?.name ?? ''}
2723
defaultOpen
28-
source={UserUtils.getFullSizeAvatar(avatarURL, 0)}
24+
source={getFullSizeAvatar(avatarURL, 0)}
2925
onModalClose={Navigation.goBack}
3026
isWorkspaceAvatar
3127
originalFileName={policy?.originalFileName ?? policy?.id}
@@ -38,11 +34,4 @@ function WorkspaceAvatar({policy, isLoadingApp = true}: WorkspaceAvatarProps) {
3834

3935
WorkspaceAvatar.displayName = 'WorkspaceAvatar';
4036

41-
export default withOnyx<WorkspaceAvatarProps, WorkspaceAvatarOnyxProps>({
42-
policy: {
43-
key: ({route}) => `${ONYXKEYS.COLLECTION.POLICY}${route.params.policyID ?? '-1'}`,
44-
},
45-
isLoadingApp: {
46-
key: ONYXKEYS.IS_LOADING_APP,
47-
},
48-
})(WorkspaceAvatar);
37+
export default WorkspaceAvatar;
Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,20 @@
11
import React, {useCallback, useEffect, useState} from 'react';
22
import {View} from 'react-native';
33
import type {OnyxEntry} from 'react-native-onyx';
4-
import {withOnyx} from 'react-native-onyx';
54
import type {ValueOf} from 'type-fest';
65
import Button from '@components/Button';
6+
import {usePersonalDetails} from '@components/OnyxListItemProvider';
77
import Text from '@components/Text';
88
import useLocalize from '@hooks/useLocalize';
99
import useThemeStyles from '@hooks/useThemeStyles';
10-
import * as WorkspaceSettingsUtils from '@libs/WorkspacesSettingsUtils';
10+
import {clearWorkspaceOwnerChangeFlow, requestWorkspaceOwnerChange} from '@libs/actions/Policy/Member';
11+
import {getOwnershipChecksDisplayText} from '@libs/WorkspacesSettingsUtils';
1112
import Navigation from '@navigation/Navigation';
12-
import * as MemberActions from '@userActions/Policy/Member';
1313
import CONST from '@src/CONST';
14-
import ONYXKEYS from '@src/ONYXKEYS';
1514
import ROUTES from '@src/ROUTES';
1615
import type * as OnyxTypes from '@src/types/onyx';
1716

18-
type WorkspaceOwnerChangeCheckOnyxProps = {
19-
/** Personal details of all users */
20-
personalDetails: OnyxEntry<OnyxTypes.PersonalDetailsList>;
21-
};
22-
23-
type WorkspaceOwnerChangeCheckProps = WorkspaceOwnerChangeCheckOnyxProps & {
17+
type WorkspaceOwnerChangeCheckProps = {
2418
/** The policy */
2519
policy: OnyxEntry<OnyxTypes.Policy>;
2620

@@ -31,24 +25,25 @@ type WorkspaceOwnerChangeCheckProps = WorkspaceOwnerChangeCheckOnyxProps & {
3125
error: ValueOf<typeof CONST.POLICY.OWNERSHIP_ERRORS>;
3226
};
3327

34-
function WorkspaceOwnerChangeCheck({personalDetails, policy, accountID, error}: WorkspaceOwnerChangeCheckProps) {
28+
function WorkspaceOwnerChangeCheck({policy, accountID, error}: WorkspaceOwnerChangeCheckProps) {
3529
const styles = useThemeStyles();
3630
const {translate} = useLocalize();
3731
const [displayTexts, setDisplayTexts] = useState({
3832
title: '',
3933
text: '',
4034
buttonText: '',
4135
});
36+
const personalDetails = usePersonalDetails();
4237

43-
const policyID = policy?.id ?? '-1';
38+
const policyID = policy?.id;
4439

4540
const updateDisplayTexts = useCallback(() => {
4641
const changeOwnerErrors = Object.keys(policy?.errorFields?.changeOwner ?? {});
4742
if (error !== changeOwnerErrors.at(0)) {
4843
return;
4944
}
5045

51-
const texts = WorkspaceSettingsUtils.getOwnershipChecksDisplayText(error, translate, policy, personalDetails?.[accountID]?.login);
46+
const texts = getOwnershipChecksDisplayText(error, translate, policy, personalDetails?.[accountID]?.login);
5247
setDisplayTexts(texts);
5348
}, [accountID, error, personalDetails, policy, translate]);
5449

@@ -57,15 +52,18 @@ function WorkspaceOwnerChangeCheck({personalDetails, policy, accountID, error}:
5752
}, [updateDisplayTexts]);
5853

5954
const confirm = useCallback(() => {
55+
if (!policyID) {
56+
return;
57+
}
6058
if (error === CONST.POLICY.OWNERSHIP_ERRORS.HAS_FAILED_SETTLEMENTS || error === CONST.POLICY.OWNERSHIP_ERRORS.FAILED_TO_CLEAR_BALANCE) {
6159
// cannot transfer ownership if there are failed settlements, or we cannot clear the balance
62-
MemberActions.clearWorkspaceOwnerChangeFlow(policyID);
60+
clearWorkspaceOwnerChangeFlow(policyID);
6361
Navigation.goBack();
6462
Navigation.navigate(ROUTES.WORKSPACE_MEMBER_DETAILS.getRoute(policyID, accountID));
6563
return;
6664
}
6765

68-
MemberActions.requestWorkspaceOwnerChange(policyID);
66+
requestWorkspaceOwnerChange(policyID);
6967
}, [accountID, error, policyID]);
7068

7169
return (
@@ -86,8 +84,4 @@ function WorkspaceOwnerChangeCheck({personalDetails, policy, accountID, error}:
8684

8785
WorkspaceOwnerChangeCheck.displayName = 'WorkspaceOwnerChangeCheckPage';
8886

89-
export default withOnyx<WorkspaceOwnerChangeCheckProps, WorkspaceOwnerChangeCheckOnyxProps>({
90-
personalDetails: {
91-
key: ONYXKEYS.PERSONAL_DETAILS_LIST,
92-
},
93-
})(WorkspaceOwnerChangeCheck);
87+
export default WorkspaceOwnerChangeCheck;

0 commit comments

Comments
 (0)