Skip to content

Commit c97e418

Browse files
[WEB-4959]chore: refactor project member page #8464
1 parent 031baaa commit c97e418

15 files changed

Lines changed: 85 additions & 51 deletions

File tree

apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/layout.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { SettingsMobileNav } from "@/components/settings/mobile";
99
import { WORKSPACE_SETTINGS_ACCESS } from "@plane/constants";
1010
import type { EUserWorkspaceRoles } from "@plane/types";
1111
// plane web components
12-
import { WorkspaceSettingsRightSidebar } from "@/plane-web/components/workspace/right-sidebar";
12+
import { SettingsRightSidebar } from "@/plane-web/components/settings/right-sidebar";
1313
// hooks
1414
import { useUserPermissions } from "@/hooks/store/user";
1515
// local components
@@ -48,7 +48,7 @@ const WorkspaceSettingLayout = observer(function WorkspaceSettingLayout({ params
4848
<div className="w-full h-full overflow-y-scroll md:pt-page-y">
4949
<Outlet />
5050
</div>
51-
<WorkspaceSettingsRightSidebar workspaceSlug={workspaceSlug} />
51+
<SettingsRightSidebar workspaceSlug={workspaceSlug} />
5252
</div>
5353
)}
5454
</div>

apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/members/page.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ const WorkspaceMembersSettingsPage = observer(function WorkspaceMembersSettingsP
4242
const {
4343
workspace: { workspaceMemberIds, inviteMembersToWorkspace, filtersStore },
4444
} = useMember();
45-
const { currentWorkspace, mutateWorkspaceMembersActivity } = useWorkspace();
45+
const { currentWorkspace } = useWorkspace();
4646
const { t } = useTranslation();
4747

4848
// derived values
@@ -55,7 +55,6 @@ const WorkspaceMembersSettingsPage = observer(function WorkspaceMembersSettingsP
5555
const handleWorkspaceInvite = async (data: IWorkspaceBulkInviteFormData) => {
5656
try {
5757
await inviteMembersToWorkspace(workspaceSlug, data);
58-
void mutateWorkspaceMembersActivity(workspaceSlug);
5958

6059
setInviteModal(false);
6160

apps/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/layout.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@ import { SettingsMobileNav } from "@/components/settings/mobile";
77
import { ProjectSettingsSidebar } from "@/components/settings/project/sidebar";
88
// plane web imports
99
import { ProjectAuthWrapper } from "@/plane-web/layouts/project-wrapper";
10+
import { SettingsRightSidebar } from "@/plane-web/components/settings/right-sidebar";
1011
// types
1112
import type { Route } from "./+types/layout";
1213

13-
function ProjectDetailSettingsLayout({ params }: Route.ComponentProps) {
14+
export const ProjectDetailSettingsLayout = observer(function ProjectDetailSettingsLayout({
15+
params,
16+
}: Route.ComponentProps) {
1417
const { workspaceSlug, projectId } = params;
1518
// router
1619
const pathname = usePathname();
@@ -24,10 +27,11 @@ function ProjectDetailSettingsLayout({ params }: Route.ComponentProps) {
2427
<div className="w-full h-full overflow-y-scroll md:pt-page-y">
2528
<Outlet />
2629
</div>
30+
<SettingsRightSidebar workspaceSlug={workspaceSlug} projectId={projectId} />
2731
</ProjectAuthWrapper>
2832
</div>
2933
</>
3034
);
31-
}
35+
});
3236

33-
export default observer(ProjectDetailSettingsLayout);
37+
export default ProjectDetailSettingsLayout;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { observer } from "mobx-react";
2+
3+
type TProjectMembersActivityButtonProps = { workspaceSlug: string; projectId: string };
4+
5+
export const ProjectMembersActivityButton = observer(function ProjectMembersActivityButton(
6+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
7+
props: TProjectMembersActivityButtonProps
8+
) {
9+
return <></>;
10+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { observer } from "mobx-react";
2+
3+
type TSettingsRightSidebarProps = { workspaceSlug: string; projectId?: string };
4+
5+
export const SettingsRightSidebar = observer(function SettingsRightSidebar(
6+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
7+
props: TSettingsRightSidebarProps
8+
) {
9+
return <></>;
10+
});

apps/web/ce/components/workspace/right-sidebar/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

apps/web/ce/components/workspace/right-sidebar/root.tsx

Lines changed: 0 additions & 10 deletions
This file was deleted.

apps/web/ce/store/member/project-member.store.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,13 @@ export class ProjectMemberStore extends BaseProjectMemberStore implements IProje
4141
* @param userId - The ID of the user to remove from the project
4242
*/
4343
processMemberRemoval = (projectId: string, userId: string) => this.handleMemberRemoval(projectId, userId);
44+
45+
/**
46+
* @description Mutate project members activity
47+
* @param workspaceSlug
48+
* @param projectId
49+
*/
50+
mutateProjectMembersActivity = async (_workspaceSlug: string, _projectId: string) => {
51+
// No-op in default/CE version
52+
};
4453
}

apps/web/core/components/project/member-list.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import { useUserPermissions } from "@/hooks/store/user";
1414
import { MemberListFiltersDropdown } from "./dropdowns/filters/member-list";
1515
import { ProjectMemberListItem } from "./member-list-item";
1616
import { SendProjectInvitationModal } from "./send-project-invitation-modal";
17+
// plane web components
18+
import { ProjectMembersActivityButton } from "@/plane-web/components/projects/members/members-activity-button";
1719

1820
type TProjectMemberListProps = {
1921
projectId: string;
@@ -84,6 +86,7 @@ export const ProjectMemberList = observer(function ProjectMemberList(props: TPro
8486
className="w-full max-w-[234px] border-none bg-transparent text-13 focus:outline-none placeholder:text-placeholder"
8587
placeholder="Search"
8688
value={searchQuery}
89+
// eslint-disable-next-line jsx-a11y/no-autofocus
8790
autoFocus
8891
onChange={(e) => setSearchQuery(e.target.value)}
8992
/>
@@ -93,9 +96,11 @@ export const ProjectMemberList = observer(function ProjectMemberList(props: TPro
9396
handleUpdate={handleRoleFilterUpdate}
9497
memberType="project"
9598
/>
99+
{isAdmin && <ProjectMembersActivityButton workspaceSlug={workspaceSlug} projectId={projectId} />}
96100
{isAdmin && (
97101
<Button
98102
variant="primary"
103+
size="lg"
99104
onClick={() => {
100105
setInviteModal(true);
101106
}}

apps/web/core/components/workspace/settings/invitations-list-item.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { ConfirmWorkspaceMemberRemove } from "@/components/workspace/confirm-wor
1616
import { captureClick } from "@/helpers/event-tracker.helper";
1717
import { useMember } from "@/hooks/store/use-member";
1818
import { useUserPermissions } from "@/hooks/store/user";
19-
import { useWorkspace } from "@/hooks/store/use-workspace";
2019

2120
type Props = {
2221
invitationId: string;
@@ -32,7 +31,6 @@ export const WorkspaceInvitationsListItem = observer(function WorkspaceInvitatio
3231
const { t } = useTranslation();
3332
// store hooks
3433
const { allowPermissions, workspaceInfoBySlug } = useUserPermissions();
35-
const { mutateWorkspaceMembersActivity } = useWorkspace();
3634
const {
3735
workspace: { updateMemberInvitation, deleteMemberInvitation, getWorkspaceInvitationDetails },
3836
} = useMember();
@@ -61,7 +59,6 @@ export const WorkspaceInvitationsListItem = observer(function WorkspaceInvitatio
6159
title: "Success!",
6260
message: "Invitation removed successfully.",
6361
});
64-
void mutateWorkspaceMembersActivity(workspaceSlug);
6562
} catch (err: unknown) {
6663
const error = err as { error?: string };
6764
setToast({

0 commit comments

Comments
 (0)