feat: 素材处理管线——自动处理、审核流程、6状态机
This commit is contained in:
@@ -3,7 +3,12 @@ import { useState } from "react";
|
||||
import type { CreateMaterialRequest, Material } from "./types";
|
||||
|
||||
import { useCurrentProject } from "../../shared/hooks/use-current-project";
|
||||
import { useCreateMaterial } from "../../shared/hooks/use-materials";
|
||||
import {
|
||||
useApproveMaterial,
|
||||
useCreateMaterial,
|
||||
useDiscardMaterial,
|
||||
useRetryMaterial,
|
||||
} from "../../shared/hooks/use-materials";
|
||||
import { AddMaterialModal } from "./components/AddMaterialModal";
|
||||
import { MaterialDetailPanel } from "./components/MaterialDetailPanel";
|
||||
import { MaterialSidebar } from "./components/MaterialSidebar";
|
||||
@@ -14,6 +19,9 @@ export function InboxPage() {
|
||||
const [selectedId, setSelectedId] = useState<null | string>(null);
|
||||
|
||||
const createMutation = useCreateMaterial(project.id);
|
||||
const approveMutation = useApproveMaterial(project.id);
|
||||
const discardMutation = useDiscardMaterial(project.id);
|
||||
const retryMutation = useRetryMaterial(project.id);
|
||||
|
||||
const handleCreate = async (body: CreateMaterialRequest): Promise<Material> => {
|
||||
const material = await createMutation.mutateAsync({ body, projectId: project.id });
|
||||
@@ -27,6 +35,18 @@ export function InboxPage() {
|
||||
}
|
||||
};
|
||||
|
||||
const handleApprove = async (materialId: string) => {
|
||||
await approveMutation.mutateAsync({ materialId, projectId: project.id });
|
||||
};
|
||||
|
||||
const handleDiscard = async (materialId: string) => {
|
||||
await discardMutation.mutateAsync({ materialId, projectId: project.id });
|
||||
};
|
||||
|
||||
const handleRetry = async (materialId: string) => {
|
||||
await retryMutation.mutateAsync({ materialId, projectId: project.id });
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="app-inbox-page">
|
||||
<MaterialSidebar
|
||||
@@ -36,7 +56,13 @@ export function InboxPage() {
|
||||
projectId={project.id}
|
||||
selectedId={selectedId}
|
||||
/>
|
||||
<MaterialDetailPanel materialId={selectedId} projectId={project.id} />
|
||||
<MaterialDetailPanel
|
||||
materialId={selectedId}
|
||||
onApprove={handleApprove}
|
||||
onDiscard={handleDiscard}
|
||||
onRetry={handleRetry}
|
||||
projectId={project.id}
|
||||
/>
|
||||
<AddMaterialModal onAdd={handleCreate} onOpenChange={setModalOpen} open={modalOpen} />
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user