update: workspace members 403
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
import { type ChangeEvent, type MouseEvent as ReactMouseEvent, type RefObject, useEffect, useMemo, useState } from "react";
|
import { type ChangeEvent, type MouseEvent as ReactMouseEvent, type RefObject, useMemo } from "react";
|
||||||
import Icon from "../common/Icon";
|
import Icon from "../common/Icon";
|
||||||
import { WorkspaceTreeGroup } from "~/features/platform/WorkspaceTree";
|
import { WorkspaceTreeGroup } from "~/features/platform/WorkspaceTree";
|
||||||
import type { ScriptItem, WorkspaceDirectory, WorkspaceMember } from "~/services/api";
|
import type { ScriptItem, WorkspaceDirectory } from "~/services/api";
|
||||||
import { useApi, useAuth, type AuthUser } from "~/context/AuthContext";
|
import { type AuthUser } from "~/context/AuthContext";
|
||||||
|
|
||||||
type ScriptExplorerProps = {
|
type ScriptExplorerProps = {
|
||||||
scripts: ScriptItem[];
|
scripts: ScriptItem[];
|
||||||
@@ -50,37 +50,6 @@ export function ScriptExplorer({
|
|||||||
uploadInputRef,
|
uploadInputRef,
|
||||||
onHandleUpload,
|
onHandleUpload,
|
||||||
}: ScriptExplorerProps) {
|
}: ScriptExplorerProps) {
|
||||||
const api = useApi();
|
|
||||||
const { currentWorkspace } = useAuth();
|
|
||||||
const [members, setMembers] = useState<WorkspaceMember[]>([]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (!currentWorkspace) {
|
|
||||||
setMembers([]);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let cancelled = false;
|
|
||||||
api
|
|
||||||
.listWorkspaceMembers(currentWorkspace.workspace_id)
|
|
||||||
.then((list) => {
|
|
||||||
if (!cancelled) setMembers(list);
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
if (!cancelled) setMembers([]);
|
|
||||||
});
|
|
||||||
return () => {
|
|
||||||
cancelled = true;
|
|
||||||
};
|
|
||||||
}, [api, currentWorkspace]);
|
|
||||||
|
|
||||||
const displayNameByUserId = useMemo(() => {
|
|
||||||
const map = new Map<string, string>();
|
|
||||||
for (const m of members) {
|
|
||||||
map.set(m.user_id, m.display_name || m.username || m.user_id);
|
|
||||||
}
|
|
||||||
return map;
|
|
||||||
}, [members]);
|
|
||||||
|
|
||||||
const memberScriptGroups = useMemo(() => {
|
const memberScriptGroups = useMemo(() => {
|
||||||
const visibleScripts =
|
const visibleScripts =
|
||||||
user?.is_system_admin === true
|
user?.is_system_admin === true
|
||||||
@@ -106,7 +75,7 @@ export function ScriptExplorer({
|
|||||||
}[] = [];
|
}[] = [];
|
||||||
for (const [ownerUserId, groupScripts] of byOwner.entries()) {
|
for (const [ownerUserId, groupScripts] of byOwner.entries()) {
|
||||||
const displayName =
|
const displayName =
|
||||||
displayNameByUserId.get(ownerUserId) ??
|
groupScripts[0]?.owner_display_name ??
|
||||||
(ownerUserId === user?.user_id ? user?.display_name : null) ??
|
(ownerUserId === user?.user_id ? user?.display_name : null) ??
|
||||||
`${ownerUserId.slice(-6)}…`;
|
`${ownerUserId.slice(-6)}…`;
|
||||||
const groupUser =
|
const groupUser =
|
||||||
@@ -139,7 +108,7 @@ export function ScriptExplorer({
|
|||||||
});
|
});
|
||||||
|
|
||||||
return groups;
|
return groups;
|
||||||
}, [filteredScripts, user, displayNameByUserId]);
|
}, [filteredScripts, user]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<aside className="explorer">
|
<aside className="explorer">
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ export type ScriptItem = {
|
|||||||
workspace_id: string;
|
workspace_id: string;
|
||||||
current_object_id: string;
|
current_object_id: string;
|
||||||
owner_user_id: string;
|
owner_user_id: string;
|
||||||
|
owner_display_name: string | null;
|
||||||
script_name: string;
|
script_name: string;
|
||||||
script_type: ScriptType;
|
script_type: ScriptType;
|
||||||
visibility: Visibility;
|
visibility: Visibility;
|
||||||
|
|||||||
Reference in New Issue
Block a user