diff --git a/client/src/pages/admin.tsx b/client/src/pages/admin.tsx index 4111cde..4a4ae93 100644 --- a/client/src/pages/admin.tsx +++ b/client/src/pages/admin.tsx @@ -253,18 +253,22 @@ function EditVideoDialog({ const updateMutation = useMutation({ mutationFn: (data: any) => apiRequest("PATCH", `/api/admin/videos/${video.id}`, data), - onSuccess: () => { + onSuccess: async () => { toast({ title: "Success", description: "Video updated successfully", }); - // Invalidate cache to refresh the video list - don't await since this function isn't async - queryClient.invalidateQueries({ queryKey: ["/api/admin/videos"] }); - queryClient.invalidateQueries({ queryKey: ["/api/videos"] }); - // Force immediate refetch - queryClient.refetchQueries({ queryKey: ["/api/admin/videos"] }); - onOpenChange(false); - onSuccess(); + // Invalidate cache to refresh the video list + await queryClient.invalidateQueries({ queryKey: ["/api/admin/videos"] }); + await queryClient.invalidateQueries({ queryKey: ["/api/videos"] }); + // Force immediate refetch to get updated data + await queryClient.refetchQueries({ queryKey: ["/api/admin/videos"] }); + + // Give some time for cache to update before closing modal + setTimeout(() => { + onOpenChange(false); + onSuccess(); + }, 100); }, onError: (error: any) => { toast({ @@ -328,7 +332,16 @@ function EditVideoDialog({ episodeNumber: newFormData.episodeNumber ? parseInt(newFormData.episodeNumber.toString()) : null, tags: Array.isArray(newFormData.tags) ? newFormData.tags : [] }; - updateMutation.mutate(processedData); + + // Save without closing modal for AI generation + try { + await apiRequest("PATCH", `/api/admin/videos/${video.id}`, processedData); + // Refresh cache after save + await queryClient.invalidateQueries({ queryKey: ["/api/admin/videos"] }); + await queryClient.refetchQueries({ queryKey: ["/api/admin/videos"] }); + } catch (error) { + console.error("Failed to save AI description:", error); + } toast({ title: "Uspeh!",