diff options
Diffstat (limited to 'apps/web/lib/queries/use-subscribe-to-feed.ts')
| -rw-r--r-- | apps/web/lib/queries/use-subscribe-to-feed.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/apps/web/lib/queries/use-subscribe-to-feed.ts b/apps/web/lib/queries/use-subscribe-to-feed.ts new file mode 100644 index 0000000..5e585a9 --- /dev/null +++ b/apps/web/lib/queries/use-subscribe-to-feed.ts @@ -0,0 +1,37 @@ +"use client" + +import { useMutation, useQueryClient } from "@tanstack/react-query" +import { createSupabaseBrowserClient } from "@/lib/supabase/client" +import { queryKeys } from "./query-keys" +import { notify } from "@/lib/notify" + +export function useSubscribeToFeed() { + const supabaseClient = createSupabaseBrowserClient() + const queryClient = useQueryClient() + + return useMutation({ + mutationFn: async (parameters: { + feedUrl: string + folderIdentifier?: string | null + customTitle?: string | null + }) => { + const { data, error } = await supabaseClient.rpc("subscribe_to_feed", { + feed_url: parameters.feedUrl, + target_folder_id: parameters.folderIdentifier ?? undefined, + feed_custom_title: parameters.customTitle ?? undefined, + }) + + if (error) throw error + + return data + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: queryKeys.subscriptions.all }) + queryClient.invalidateQueries({ queryKey: queryKeys.timeline.all }) + notify("feed added successfully") + }, + onError: (error: Error) => { + notify("failed to add feed: " + error.message) + }, + }) +} |