MCPcopy Create free account
hub / github.com/bytebase/bytebase / createUserSlice

Function createUserSlice

frontend/src/react/stores/app/user.ts:49–296  ·  view source on GitHub ↗
(set, get)

Source from the content-addressed store, hash-verified

47};
48
49export const createUserSlice: AppSliceCreator<UserSlice> = (set, get) => {
50 const adjustActivatedUserCount = (delta: number) => {
51 set((state) => {
52 if (!state.serverInfo) {
53 return {};
54 }
55 return {
56 serverInfo: {
57 ...state.serverInfo,
58 activatedUserCount: Math.max(
59 0,
60 state.serverInfo.activatedUserCount + delta
61 ),
62 },
63 };
64 });
65 };
66
67 return {
68 usersByName: { [allUsersUser().name]: allUsersUser() },
69 userRequests: {},
70
71 listUsers: async (params) => {
72 if (!get().hasWorkspacePermission("bb.users.list")) {
73 return { users: [], nextPageToken: "" };
74 }
75 const response = await userServiceClientConnect.listUsers(
76 createProto(ListUsersRequestSchema, {
77 pageSize: params.pageSize,
78 pageToken: params.pageToken,
79 filter: buildUserFilter(params.filter ?? {}),
80 showDeleted:
81 params.showDeleted ?? params.filter?.state === State.DELETED,
82 })
83 );
84 set((state) => ({
85 usersByName: {
86 ...state.usersByName,
87 ...Object.fromEntries(
88 response.users.map((user) => [user.name, user])
89 ),
90 },
91 }));
92 return { users: response.users, nextPageToken: response.nextPageToken };
93 },
94
95 fetchUser: async (name, silent = false) => {
96 const validName = ensureUserFullName(name);
97 const existing = get().usersByName[validName];
98 if (existing) return existing;
99 const pending = get().userRequests[validName];
100 if (pending) return pending;
101
102 const request = userServiceClientConnect
103 .getUser(createProto(GetUserRequestSchema, { name: validName }), {
104 contextValues: createContextValues().set(silentContextKey, silent),
105 })
106 .then((user) => {

Callers 1

createAppStoreFunction · 0.90

Calls 15

allUsersUserFunction · 0.90
ensureUserFullNameFunction · 0.90
unknownUserFunction · 0.90
isValidUserNameFunction · 0.90
extractUserEmailFunction · 0.90
getFunction · 0.85
buildUserFilterFunction · 0.85
setFunction · 0.85
adjustActivatedUserCountFunction · 0.85
getUserByIdentifierMethod · 0.80
createUserMethod · 0.80
deleteUserMethod · 0.80

Tested by

no test coverage detected