"use client"; import { useState } from "react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import Link from "next/link"; import { toast } from "sonner"; import { Button, Card, CardContent, PageHeader, Textarea } from "@/components/ds"; import { useCurrentHub } from "@/modules/workspace/hooks/useCurrentHub"; import { workspaceApi } from "@/modules/workspace/services/workspace-api"; import { APPROVAL_TYPE, displayPerson, formatWhen, labelOf } from "@/modules/workspace/labels"; import { StatusChip } from "@/modules/workspace/components/StatusChip"; import { WorkspaceEmptyState, WorkspacePageError, WorkspacePageLoader } from "@/modules/workspace/pages/shared"; export const WorkspaceApprovals = function WorkspaceApprovalsPage() { const queryClient = useQueryClient(); const { tenantId, hubId, loading } = useCurrentHub(); const [comments, setComments] = useState>({}); const approvals = useQuery({ queryKey: ["workspace", tenantId, "approvals", hubId], queryFn: () => workspaceApi.approvals.list(tenantId!, { work_hub_id: hubId || undefined }), enabled: !!tenantId && !!hubId, }); const respond = useMutation({ mutationFn: ({ id, status, comment }: { id: string; status: string; comment?: string }) => workspaceApi.approvals.respond(tenantId!, id, { status, comment }), onSuccess: () => { toast.success("پاسخ تأیید ذخیره شد"); void queryClient.invalidateQueries({ queryKey: ["workspace", tenantId, "approvals"] }); }, onError: (err) => toast.error(err instanceof Error ? err.message : "ثبت پاسخ ناموفق بود"), }); if (!tenantId || loading || approvals.isLoading) return ; if (!hubId) return ; if (approvals.error) return approvals.refetch()} />; return (
{(approvals.data ?? []).length === 0 ? ( ) : (
{(approvals.data ?? []).map((row) => (

{labelOf(APPROVAL_TYPE, String(row.approval_type || ""))}

تأییدکننده: {displayPerson(String(row.approver_user_id || ""))} · {formatWhen(String(row.requested_at || row.created_at || ""))}

{row.comment ?

{String(row.comment)}

: null}
مشاهده محتوا {row.status === "pending" ? (