"use client"; import { useState } from "react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { toast } from "sonner"; import { Button, Card, CardContent, Input, PageHeader } from "@/components/ds"; import { useCurrentHub } from "@/modules/workspace/hooks/useCurrentHub"; import { useWorkspaceCapabilities } from "@/modules/workspace/hooks/useWorkspaceCapabilities"; import { workspaceApi } from "@/modules/workspace/services/workspace-api"; import { WorkspaceEmptyState, WorkspacePageError, WorkspacePageLoader } from "@/modules/workspace/pages/shared"; export const WorkspaceAssets = function WorkspaceAssetsPage() { const queryClient = useQueryClient(); const { tenantId, hubId, loading } = useCurrentHub(); const caps = useWorkspaceCapabilities(); const [fileRef, setFileRef] = useState(""); const [title, setTitle] = useState(""); const assets = useQuery({ queryKey: ["workspace", tenantId, "assets", hubId], queryFn: () => workspaceApi.assets.list(tenantId!, { work_hub_id: hubId || undefined }), enabled: !!tenantId && !!hubId, }); const create = useMutation({ mutationFn: () => workspaceApi.assets.create(tenantId!, { work_hub_id: hubId, file_ref: fileRef, title: title || fileRef, }), onSuccess: () => { toast.success("ارجاع فایل ثبت شد"); setFileRef(""); setTitle(""); void queryClient.invalidateQueries({ queryKey: ["workspace", tenantId, "assets"] }); }, onError: (err) => toast.error(err instanceof Error ? err.message : "ثبت ارجاع ناموفق بود"), }); if (!tenantId || loading || assets.isLoading) return ; if (!hubId) return ; if (assets.error) return assets.refetch()} />; const storageReady = caps.data?.file_storage?.available; return ( {!storageReady ? ( سامانه ذخیرهسازی فایل در دسترس نیست. میتوانید ارجاع خارجی ثبت کنید؛ آپلود باینری در فضای کاری انجام نمیشود. ) : null} setFileRef(event.target.value)} placeholder="شناسه فایل خارجی" /> setTitle(event.target.value)} placeholder="عنوان" /> create.mutate()}> ثبت ارجاع {(assets.data ?? []).length === 0 ? ( ) : ( {(assets.data ?? []).map((asset) => ( {String(asset.title || "فایل")} {asset.role ? `نقش: ${String(asset.role)} · ` : ""} فقط ارجاع ))} )} ); }; export default WorkspaceAssets;
{String(asset.title || "فایل")}
{asset.role ? `نقش: ${String(asset.role)} · ` : ""} فقط ارجاع