Skip to content

Commit 0738bb6

Browse files
feat(admin-ui): migrate admin-ui users to connectRPC (#1212)
1 parent a65c239 commit 0738bb6

File tree

16 files changed

+192
-238
lines changed

16 files changed

+192
-238
lines changed

ui/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"build:client": "node scripts/gen-swagger-client.mjs"
1212
},
1313
"dependencies": {
14-
"@bufbuild/protobuf": "^2.6.2",
14+
"@bufbuild/protobuf": "^2.9.0",
1515
"@connectrpc/connect": "^2.1.0",
1616
"@connectrpc/connect-query": "^2.1.1",
1717
"@connectrpc/connect-web": "^2.1.0",
@@ -20,7 +20,7 @@
2020
"@radix-ui/react-icons": "^1.3.0",
2121
"@raystack/apsara": "^0.52.0",
2222
"@raystack/frontier": "^0.72.4",
23-
"@raystack/proton": "^0.1.0-434b8aec0c95625a6633f4e890be311d3e0fefef",
23+
"@raystack/proton": "0.1.0-80ce71da5211fde064d83731a80cee2dffbdf84b",
2424
"@stitches/react": "^1.2.8",
2525
"@tanstack/react-query": "^5.83.0",
2626
"@tanstack/react-query-devtools": "^5.90.2",
@@ -56,4 +56,4 @@
5656
"vite": "^4.5.9",
5757
"vite-plugin-svgr": "^4.3.0"
5858
}
59-
}
59+
}

ui/pnpm-lock.yaml

Lines changed: 23 additions & 54 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ui/src/pages/users/details/audit-log/audit-log.module.css

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

ui/src/pages/users/details/audit-log/audit-log.tsx

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

ui/src/pages/users/details/audit-log/index.ts

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

ui/src/pages/users/details/layout/membership-dropdown.tsx

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import { Text, DropdownMenu } from "@raystack/apsara";
1+
import { Text, DropdownMenu, Skeleton } from "@raystack/apsara";
22
import styles from "./side-panel.module.css";
33
import { useCallback, useEffect, useState, useMemo } from "react";
4-
import Skeleton from "react-loading-skeleton";
54
import { api } from "~/api";
65
import {
76
type SearchUserOrganizationsResponse_UserOrganization,
8-
SearchOrganizationUsersResponse_OrganizationUserSchema
7+
SearchOrganizationUsersResponse_OrganizationUserSchema,
98
} from "@raystack/proton/frontier";
109
import { create } from "@bufbuild/protobuf";
1110
import type { V1Beta1Role } from "~/api/frontier";
@@ -57,11 +56,11 @@ export const MembershipDropdown = ({
5756
}, [data?.orgId, fetchRoles]);
5857

5958
const toggleAssignRoleDialog = () => {
60-
setIsAssignRoleDialogOpen((value) => !value);
59+
setIsAssignRoleDialogOpen(value => !value);
6160
};
6261

6362
const toggleSuspendDialog = () => {
64-
setIsSuspendDialogOpen((value) => !value);
63+
setIsSuspendDialogOpen(value => !value);
6564
};
6665

6766
const onRoleUpdate = () => {
@@ -75,17 +74,20 @@ export const MembershipDropdown = ({
7574
};
7675

7776
const memoizedUser = useMemo(
78-
() => create(SearchOrganizationUsersResponse_OrganizationUserSchema, {
79-
...user,
80-
roleNames: data?.roleNames || [],
81-
roleTitles: data?.roleTitles || [],
82-
roleIds: data?.roleIds || [],
83-
}),
84-
[user, data?.roleNames, data?.roleTitles, data?.roleIds]
77+
() =>
78+
create(
79+
SearchOrganizationUsersResponse_OrganizationUserSchema,
80+
Object.assign(user ?? {}, {
81+
roleNames: data?.roleNames || [],
82+
roleTitles: data?.roleTitles || [],
83+
roleIds: data?.roleIds || [],
84+
}),
85+
),
86+
[user, data?.roleNames, data?.roleTitles, data?.roleIds],
8587
);
8688

8789
if (isLoading) {
88-
return <Skeleton height={30} />;
90+
return <Skeleton height={32} />;
8991
}
9092

9193
return (
@@ -115,8 +117,7 @@ export const MembershipDropdown = ({
115117
<DropdownMenu.Content>
116118
<DropdownMenu.Item
117119
onClick={toggleAssignRoleDialog}
118-
data-test-id="admin-ui-user-details-assign-role"
119-
>
120+
data-test-id="admin-ui-user-details-assign-role">
120121
Assign role...
121122
</DropdownMenu.Item>
122123
{/* TODO: Removed for now */}

ui/src/pages/users/details/layout/navbar.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
getAvatarColor,
88
} from "@raystack/apsara";
99
import { NavLink } from "react-router-dom";
10-
import { ChevronRightIcon } from "@radix-ui/react-icons";
1110
import { SidebarIcon } from "@raystack/apsara/icons";
1211
import UserIcon from "~/assets/icons/users.svg?react";
1312
import styles from "./navbar.module.css";
@@ -29,7 +28,10 @@ export const UserDetailsNavbar = ({
2928
<nav className={styles.navbar}>
3029
<Flex gap="medium" align="center">
3130
<Breadcrumb size="small">
32-
<Breadcrumb.Item href="/users" leadingIcon={<UserIcon />}>
31+
<Breadcrumb.Item
32+
href="/users"
33+
leadingIcon={<UserIcon />}
34+
data-test-id="admin-ui-user-details-breadcrumb-users">
3335
Users
3436
</Breadcrumb.Item>
3537
<Breadcrumb.Separator />
@@ -42,7 +44,8 @@ export const UserDetailsNavbar = ({
4244
fallback={getUserName(user)?.[0]}
4345
size={1}
4446
/>
45-
}>
47+
}
48+
data-test-id="admin-ui-user-details-breadcrumb-user">
4649
{getUserName(user)}
4750
</Breadcrumb.Item>
4851
</Breadcrumb>

ui/src/pages/users/details/layout/side-panel-details.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { Flex, List, Text, CopyButton, Tooltip } from "@raystack/apsara";
2-
import dayjs from "dayjs";
32
import { CalendarIcon } from "@radix-ui/react-icons";
43
import styles from "./side-panel.module.css";
54
import { UserState, USER_STATES } from "../../util";
65
import { useUser } from "../user-context";
6+
import { timestampToDayjs } from "~/utils/connect-timestamp";
77

88
export const SidePanelDetails = () => {
99
const { user } = useUser();
@@ -33,7 +33,9 @@ export const SidePanelDetails = () => {
3333
<List.Value>
3434
<Flex gap={3}>
3535
<CalendarIcon />
36-
<Text>{dayjs(user?.created_at).format("DD MMM YYYY")}</Text>
36+
<Text>
37+
{timestampToDayjs(user?.createdAt)?.format("DD MMM YYYY")}
38+
</Text>
3739
</Flex>
3840
</List.Value>
3941
</List.Item>

ui/src/pages/users/details/layout/side-panel.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { useCallback } from "react";
21
import { Avatar, getAvatarColor, SidePanel, Text } from "@raystack/apsara";
32
import { SidePanelDetails } from "./side-panel-details";
43
import { SidePanelMembership } from "./side-panel-membership";
@@ -34,8 +33,7 @@ export const UserDetailsSidePanel = () => {
3433
return (
3534
<SidePanel
3635
data-test-id="admin-ui-user-details-sidepanel"
37-
className={styles["side-panel"]}
38-
>
36+
className={styles["side-panel"]}>
3937
<SidePanel.Header
4038
title={getUserName(user)}
4139
icon={

0 commit comments

Comments
 (0)