import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { jsonRequest, requestJson, requestVoid } from '@/client/api/http'
import { WORKSPACE_RESOURCE_OPTIONS } from '@/client/api/query-options'
import { workspaceKeys } from '@/client/api/workspace-keys'
import type { AppletThumbnail, AppletThumbnailBatch } from '@/lib/types'
// Freshness records only — image bytes stay server-side (`.moi/.cache`) and
// reach the UI as plain
URLs.
export function useAppletThumbnailRecords(workspaceId: string) {
return useQuery({
queryKey: workspaceKeys.appletThumbnails(workspaceId),
queryFn: async () =>
(
await requestJson<{ thumbnails: AppletThumbnail[] }>(
`/api/workspaces/${workspaceId}/applet-thumbnails`
)
).thumbnails,
...WORKSPACE_RESOURCE_OPTIONS
})
}
export function useSaveAppletThumbnails(workspaceId: string) {
const queryClient = useQueryClient()
return useMutation({
mutationFn: input =>
requestVoid(
`/api/workspaces/${workspaceId}/applet-thumbnails`,
jsonRequest('PUT', input),
'Failed to save applet thumbnails'
),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: workspaceKeys.appletThumbnails(workspaceId) })
queryClient.invalidateQueries({ queryKey: workspaceKeys.preview(workspaceId) })
}
})
}