summaryrefslogtreecommitdiff
path: root/apps/web/lib/queries/use-subscribe-to-feed.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/lib/queries/use-subscribe-to-feed.ts')
-rw-r--r--apps/web/lib/queries/use-subscribe-to-feed.ts37
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)
+ },
+ })
+}