Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#37927 bugfix: member details issues #37961

Merged
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -620,11 +620,11 @@ const ROUTES = {
},
WORKSPACE_MEMBER_DETAILS: {
route: 'settings/workspaces/:policyID/members/:accountID',
getRoute: (policyID: string, accountID: number, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/members/${accountID}`, backTo),
getRoute: (policyID: string, accountID: number) => `settings/workspaces/${policyID}/members/${accountID}` as const,
},
WORKSPACE_MEMBER_ROLE_SELECTION: {
route: 'settings/workspaces/:policyID/members/:accountID/role-selection',
getRoute: (policyID: string, accountID: number, backTo?: string) => getUrlWithBackToParam(`settings/workspaces/${policyID}/members/${accountID}/role-selection`, backTo),
getRoute: (policyID: string, accountID: number) => `settings/workspaces/${policyID}/members/${accountID}/role-selection` as const,
},
WORKSPACE_OWNER_CHANGE_SUCCESS: {
route: 'settings/workspaces/:policyID/change-owner/:accountID/success',
Expand Down
2 changes: 0 additions & 2 deletions src/libs/Navigation/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -220,12 +220,10 @@ type SettingsNavigatorParamList = {
[SCREENS.WORKSPACE.MEMBER_DETAILS]: {
policyID: string;
accountID: string;
backTo: Routes;
};
[SCREENS.WORKSPACE.MEMBER_DETAILS_ROLE_SELECTION]: {
policyID: string;
accountID: string;
backTo: Routes;
};
[SCREENS.WORKSPACE.OWNER_CHANGE_SUCCESS]: {
policyID: string;
Expand Down
16 changes: 9 additions & 7 deletions src/libs/actions/Policy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1291,7 +1291,10 @@ function addMembersToWorkspace(invitedEmailsToAccountIDs: InvitedEmailsToAccount
const optimisticMembersState: OnyxCollection<PolicyMember> = {};
const failureMembersState: OnyxCollection<PolicyMember> = {};
accountIDs.forEach((accountID) => {
optimisticMembersState[accountID] = {pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD};
optimisticMembersState[accountID] = {
pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD,
role: CONST.POLICY.ROLE.USER,
};
failureMembersState[accountID] = {
errors: ErrorUtils.getMicroSecondOnyxError('workspace.people.error.genericAdd'),
};
Expand All @@ -1318,12 +1321,11 @@ function addMembersToWorkspace(invitedEmailsToAccountIDs: InvitedEmailsToAccount
// Convert to object with each key clearing pendingAction, when it is an existing account.
// Remove the object, when it is a newly created account.
value: accountIDs.reduce((accountIDsWithClearedPendingAction, accountID) => {
let value = null;
const accountAlreadyExists = !isEmptyObject(allPersonalDetails?.[accountID]);

if (accountAlreadyExists) {
value = {pendingAction: null, errors: null};
}
const value = {
...allPolicyMembers?.[accountID],
pendingAction: null,
errors: null
};

return {...accountIDsWithClearedPendingAction, [accountID]: value};
}, {}),
Expand Down
2 changes: 1 addition & 1 deletion src/pages/workspace/WorkspaceMembersPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ function WorkspaceMembersPage({
}

Policy.clearWorkspaceOwnerChangeFlow(policyID);
Navigation.navigate(ROUTES.WORKSPACE_MEMBER_DETAILS.getRoute(route.params.policyID, item.accountID, Navigation.getActiveRoute()));
Navigation.navigate(ROUTES.WORKSPACE_MEMBER_DETAILS.getRoute(route.params.policyID, item.accountID));
},
[isPolicyAdmin, policy, policyID, route.params.policyID],
);
Expand Down
10 changes: 4 additions & 6 deletions src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import withPolicyAndFullscreenLoading from '@pages/workspace/withPolicyAndFullsc
import * as Policy from '@userActions/Policy';
import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import type {Route} from '@src/ROUTES';
import ROUTES from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
import type {PersonalDetails, PersonalDetailsList} from '@src/types/onyx';
Expand All @@ -52,7 +51,6 @@ function WorkspaceMemberDetailsPage({personalDetails, policyMembers, policy, rou

const accountID = Number(route.params.accountID);
const policyID = route.params.policyID;
const backTo = route.params.backTo ?? ('' as Route);

const member = policyMembers?.[accountID];
const details = personalDetails?.[accountID] ?? ({} as PersonalDetails);
Expand Down Expand Up @@ -83,15 +81,15 @@ function WorkspaceMemberDetailsPage({personalDetails, policyMembers, policy, rou
const removeUser = useCallback(() => {
Policy.removeMembers([accountID], policyID);
setIsRemoveMemberConfirmModalVisible(false);
Navigation.goBack(backTo);
}, [accountID, backTo, policyID]);
Navigation.goBack(ROUTES.WORKSPACE_MEMBERS.getRoute(policyID));
}, [accountID, policyID]);

const navigateToProfile = useCallback(() => {
Navigation.navigate(ROUTES.PROFILE.getRoute(accountID, Navigation.getActiveRoute()));
}, [accountID]);

const openRoleSelectionModal = useCallback(() => {
Navigation.navigate(ROUTES.WORKSPACE_MEMBER_ROLE_SELECTION.getRoute(policyID, accountID, Navigation.getActiveRoute()));
Navigation.navigate(ROUTES.WORKSPACE_MEMBER_ROLE_SELECTION.getRoute(policyID, accountID));
}, [accountID, policyID]);

const startChangeOwnershipFlow = useCallback(() => {
Expand All @@ -107,7 +105,7 @@ function WorkspaceMemberDetailsPage({personalDetails, policyMembers, policy, rou
<HeaderWithBackButton
title={displayName}
subtitle={policy?.name}
onBackButtonPress={() => Navigation.goBack(backTo)}
onBackButtonPress={() => Navigation.goBack(ROUTES.WORKSPACE_MEMBERS.getRoute(policyID))}
/>
<View style={[styles.containerWithSpaceBetween, styles.pointerEventsBoxNone, styles.justifyContentStart]}>
<View style={[styles.avatarSectionWrapper, styles.pb0]}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ import type {WithPolicyAndFullscreenLoadingProps} from '@pages/workspace/withPol
import withPolicyAndFullscreenLoading from '@pages/workspace/withPolicyAndFullscreenLoading';
import * as Policy from '@userActions/Policy';
import CONST from '@src/CONST';
import type {Route} from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
import ROUTES from "@src/ROUTES";

type WorkspaceMemberDetailsPageProps = WithPolicyAndFullscreenLoadingProps & StackScreenProps<SettingsNavigatorParamList, typeof SCREENS.WORKSPACE.MEMBER_DETAILS_ROLE_SELECTION>;

Expand All @@ -33,7 +33,6 @@ function WorkspaceMemberDetailsRoleSelectionPage({policyMembers, route}: Workspa

const accountID = Number(route.params.accountID) ?? 0;
const policyID = route.params.policyID;
const backTo = route.params.backTo ?? ('' as Route);
const member = policyMembers?.[accountID];

const items: ListItemType[] = [
Expand All @@ -57,7 +56,7 @@ function WorkspaceMemberDetailsRoleSelectionPage({policyMembers, route}: Workspa
}

Policy.updateWorkspaceMembersRole(route.params.policyID, [accountID], value);
Navigation.goBack(backTo);
Navigation.goBack(ROUTES.WORKSPACE_MEMBER_DETAILS.getRoute(policyID, accountID));
};

return (
Expand All @@ -66,7 +65,7 @@ function WorkspaceMemberDetailsRoleSelectionPage({policyMembers, route}: Workspa
<ScreenWrapper testID={WorkspaceMemberDetailsRoleSelectionPage.displayName}>
<HeaderWithBackButton
title={translate('common.role')}
onBackButtonPress={() => Navigation.goBack(backTo)}
onBackButtonPress={() => Navigation.goBack(ROUTES.WORKSPACE_MEMBER_DETAILS.getRoute(policyID, accountID))}
/>
<View style={[styles.containerWithSpaceBetween, styles.pointerEventsBoxNone]}>
<SelectionList
Expand Down
Loading