Skip to content

Commit 8bf72a1

Browse files
feat: enhance workspace settings layout and members page with new components
1 parent f0bc2bd commit 8bf72a1

File tree

6 files changed

+35
-14
lines changed

6 files changed

+35
-14
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ import type { EUserWorkspaceRoles } from "@plane/types";
88
import { NotAuthorizedView } from "@/components/auth-screens/not-authorized-view";
99
import { getWorkspaceActivePath, pathnameToAccessKey } from "@/components/settings/helper";
1010
import { SettingsMobileNav } from "@/components/settings/mobile";
11+
// plane web components
12+
import { WorkspaceSettingsSidebarDetails } from "@/plane-web/components/workspace/sidebar-details";
1113
// hooks
1214
import { useUserPermissions } from "@/hooks/store/user";
1315
// local components
1416
import { WorkspaceSettingsSidebar } from "./sidebar";
1517

16-
function WorkspaceSettingLayout() {
18+
export const WorkspaceSettingLayout = observer(function WorkspaceSettingLayout() {
1719
// store hooks
1820
const { workspaceUserInfo, getWorkspaceRoleByWorkspaceSlug } = useUserPermissions();
1921
// next hooks
@@ -42,11 +44,10 @@ function WorkspaceSettingLayout() {
4244
<div className="w-full h-full overflow-y-scroll md:pt-page-y">
4345
<Outlet />
4446
</div>
47+
<WorkspaceSettingsSidebarDetails />
4548
</div>
4649
)}
4750
</div>
4851
</>
4952
);
50-
}
51-
52-
export default observer(WorkspaceSettingLayout);
53+
});

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

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,12 @@ import { useWorkspace } from "@/hooks/store/use-workspace";
2828
import { useUserPermissions } from "@/hooks/store/user";
2929
// plane web components
3030
import { BillingActionsButton } from "@/plane-web/components/workspace/billing/billing-actions-button";
31-
import { SendWorkspaceInvitationModal } from "@/plane-web/components/workspace/members/invite-modal";
31+
import { SendWorkspaceInvitationModal, MembersActivityButton } from "@/plane-web/components/workspace/members";
3232
import type { Route } from "./+types/page";
3333

34-
function WorkspaceMembersSettingsPage({ params }: Route.ComponentProps) {
34+
export const WorkspaceMembersSettingsPage = observer(function WorkspaceMembersSettingsPage({
35+
params,
36+
}: Route.ComponentProps) {
3537
// states
3638
const [inviteModal, setInviteModal] = useState(false);
3739
const [searchQuery, setSearchQuery] = useState<string>("");
@@ -70,23 +72,27 @@ function WorkspaceMembersSettingsPage({ params }: Route.ComponentProps) {
7072
title: "Success!",
7173
message: t("workspace_settings.settings.members.invitations_sent_successfully"),
7274
});
73-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
74-
} catch (err: any) {
75+
} catch (error: unknown) {
76+
let message = undefined;
77+
if (error instanceof Error) {
78+
const err = error as Error & { error?: string };
79+
message = err.error;
80+
}
7581
captureError({
7682
eventName: MEMBER_TRACKER_EVENTS.invite,
7783
payload: {
7884
emails: data.emails.map((email) => email.email),
7985
},
80-
error: err,
86+
error: error as Error,
8187
});
8288

8389
setToast({
8490
type: TOAST_TYPE.ERROR,
8591
title: "Error!",
86-
message: `${err.error ?? t("something_went_wrong_please_try_again")}`,
92+
message: `${message ?? t("something_went_wrong_please_try_again")}`,
8793
});
8894

89-
throw err;
95+
throw error;
9096
}
9197
};
9298

@@ -137,6 +143,7 @@ function WorkspaceMembersSettingsPage({ params }: Route.ComponentProps) {
137143
className="w-full max-w-[234px] border-none bg-transparent text-sm outline-none placeholder:text-custom-text-400"
138144
placeholder={`${t("search")}...`}
139145
value={searchQuery}
146+
// eslint-disable-next-line jsx-a11y/no-autofocus
140147
autoFocus
141148
onChange={(e) => setSearchQuery(e.target.value)}
142149
/>
@@ -146,6 +153,7 @@ function WorkspaceMembersSettingsPage({ params }: Route.ComponentProps) {
146153
handleUpdate={handleRoleFilterUpdate}
147154
memberType="workspace"
148155
/>
156+
<MembersActivityButton workspaceSlug={workspaceSlug} />
149157
{canPerformWorkspaceAdminActions && (
150158
<Button
151159
variant="primary"
@@ -163,6 +171,4 @@ function WorkspaceMembersSettingsPage({ params }: Route.ComponentProps) {
163171
</section>
164172
</SettingsContentWrapper>
165173
);
166-
}
167-
168-
export default observer(WorkspaceMembersSettingsPage);
174+
});
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from "./invite-modal";
2+
export * from "./members-activity-button";
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { observer } from "mobx-react";
2+
3+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
4+
export const MembersActivityButton = observer(function MembersActivityButton(props: { workspaceSlug: string }) {
5+
return <></>;
6+
});
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from "./root";
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { observer } from "mobx-react";
2+
3+
export const WorkspaceSettingsSidebarDetails = observer(function WorkspaceSettingsSidebarDetails() {
4+
return <></>;
5+
});

0 commit comments

Comments
 (0)