diff --git a/src/features/studio/robot-author-edit-sheet.tsx b/src/features/studio/robot-author-edit-sheet.tsx index ed27106..c0ef471 100644 --- a/src/features/studio/robot-author-edit-sheet.tsx +++ b/src/features/studio/robot-author-edit-sheet.tsx @@ -2,10 +2,10 @@ import { useEffect } from 'react' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { z } from 'zod' -import { useMutation, useQueryClient } from '@tanstack/react-query' +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { toast } from 'sonner' import type { StudioRobotAuthor } from '@/api/types' -import { updateRobotAuthor } from '@/api/modules/studio' +import { fetchSubtopics, updateRobotAuthor } from '@/api/modules/studio' import { handleApiError } from '@/lib/errors' import { Button } from '@/components/ui/button' import { Label } from '@/components/ui/label' @@ -47,6 +47,7 @@ const jsonObject = z.string().refine( const schema = z.object({ persona: z.string(), status: z.enum(STATUSES), + subtopic_id: z.string(), article_style: jsonObject, image_style: jsonObject, publishing_rules: jsonObject, @@ -74,6 +75,7 @@ export function RobotAuthorEditSheet({ author, onOpenChange }: RobotAuthorEditSh defaultValues: { persona: '', status: 'pending', + subtopic_id: '', article_style: '', image_style: '', publishing_rules: '', @@ -85,18 +87,26 @@ export function RobotAuthorEditSheet({ author, onOpenChange }: RobotAuthorEditSh form.reset({ persona: author.persona ?? '', status: author.status, + subtopic_id: author.subtopic_id ?? '', article_style: asText(author.article_style), image_style: asText(author.image_style), publishing_rules: asText(author.publishing_rules), }) }, [author, form]) + const subtopics = useQuery({ + queryKey: ['studio-subtopics', 'author-editor', author?.category_id], + queryFn: () => fetchSubtopics({ category_id: author!.category_id, status: 'active', page_size: 100 }), + enabled: author !== null, + }) + const mutation = useMutation({ mutationFn: (values: FormValues) => { if (!author) throw new Error('no author') return updateRobotAuthor(author.id, { persona: values.persona.trim() || null, status: values.status, + subtopic_id: values.subtopic_id || null, article_style: parseObject(values.article_style), image_style: parseObject(values.image_style), publishing_rules: parseObject(values.publishing_rules), @@ -142,6 +152,21 @@ export function RobotAuthorEditSheet({ author, onOpenChange }: RobotAuthorEditSh + + + +