[WEB-4486] fix: refresh project memberships for all affected projects after team member updates (#3655)

This commit is contained in:
Prateek Shourya
2025-07-14 14:18:01 +05:30
committed by GitHub
parent c9cf442561
commit 2421829ec9

View File

@@ -524,6 +524,21 @@ export class TeamspaceStore implements ITeamspaceStore {
}
};
/**
* Updates project membership for all affected projects
* @param workspaceSlug
* @param teamspaceId
* @returns Promise<void>
*/
private updateProjectMembership = async (workspaceSlug: string, teamspaceId: string) => {
const teamspaceProjectIds = this.getTeamspaceProjectIds(teamspaceId) ?? [];
// refetch project membership details for all affected projects
const projectMembershipPromises = teamspaceProjectIds.map((projectId) =>
this.rootStore.memberRoot.project.fetchProjectMembers(workspaceSlug, projectId, true)
);
await Promise.allSettled(projectMembershipPromises);
};
/**
* Updates team members of a teamspace and updates the store
* @param workspaceSlug
@@ -554,10 +569,12 @@ export class TeamspaceStore implements ITeamspaceStore {
...teamspace,
member_ids: teamspaceMemberIds,
}));
// Fetch teamspace analytics
this.rootStore.teamspaceRoot.teamspaceAnalytics.fetchTeamspaceAnalytics(workspaceSlug, teamspaceId);
}
// Update project membership for all affected projects
this.updateProjectMembership(workspaceSlug, teamspaceId);
});
// Fetch teamspace analytics
this.rootStore.teamspaceRoot.teamspaceAnalytics.fetchTeamspaceAnalytics(workspaceSlug, teamspaceId);
// Fetch teamspace activity
this.rootStore.teamspaceRoot.teamspaceUpdates.fetchTeamActivities(workspaceSlug, teamspaceId);
return teamspaceMembers;
@@ -587,6 +604,8 @@ export class TeamspaceStore implements ITeamspaceStore {
...teamspace,
member_ids: teamspace.member_ids.filter((id: string) => id !== memberId),
}));
// Update project membership for all affected projects
this.updateProjectMembership(workspaceSlug, teamspaceId);
});
// Fetch teamspace activity
this.rootStore.teamspaceRoot.teamspaceUpdates.fetchTeamActivities(workspaceSlug, teamspaceId);