summaryrefslogtreecommitdiff
path: root/apps/web/lib/queries/use-mark-all-as-read.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/lib/queries/use-mark-all-as-read.ts')
-rw-r--r--apps/web/lib/queries/use-mark-all-as-read.ts16
1 files changed, 10 insertions, 6 deletions
diff --git a/apps/web/lib/queries/use-mark-all-as-read.ts b/apps/web/lib/queries/use-mark-all-as-read.ts
index d2ba82e..14d9b35 100644
--- a/apps/web/lib/queries/use-mark-all-as-read.ts
+++ b/apps/web/lib/queries/use-mark-all-as-read.ts
@@ -15,22 +15,25 @@ export function useMarkAllAsRead() {
feedIdentifier,
folderIdentifier,
readState = true,
+ entryIdentifiers,
}: {
feedIdentifier?: string | null
folderIdentifier?: string | null
readState?: boolean
+ entryIdentifiers?: string[]
} = {}) => {
const { data, error } = await supabaseClient.rpc("mark_all_as_read", {
p_feed_id: feedIdentifier ?? null,
p_folder_id: folderIdentifier ?? null,
p_read_state: readState,
+ p_entry_ids: entryIdentifiers ?? null,
})
if (error) throw error
- return data as number
+ return (data as string[]) ?? []
},
- onSuccess: (affectedCount, variables) => {
+ onSuccess: (affectedEntryIdentifiers, variables) => {
queryClient.invalidateQueries({ queryKey: queryKeys.timeline.all })
queryClient.invalidateQueries({ queryKey: queryKeys.unreadCounts.all })
queryClient.invalidateQueries({ queryKey: queryKeys.savedEntries.all })
@@ -38,16 +41,17 @@ export function useMarkAllAsRead() {
const action = variables?.readState === false ? "unread" : "read"
const undoReadState = !(variables?.readState ?? true)
- if (affectedCount > 0) {
- toast(`marked ${affectedCount} entries as ${action}`, {
+ if (affectedEntryIdentifiers.length > 0) {
+ toast(`marked ${affectedEntryIdentifiers.length} entries as ${action}`, {
action: {
label: "undo",
onClick: () => {
supabaseClient
.rpc("mark_all_as_read", {
- p_feed_id: variables?.feedIdentifier ?? null,
- p_folder_id: variables?.folderIdentifier ?? null,
+ p_feed_id: null,
+ p_folder_id: null,
p_read_state: undoReadState,
+ p_entry_ids: affectedEntryIdentifiers,
})
.then(() => {
queryClient.invalidateQueries({ queryKey: queryKeys.timeline.all })