Files
Athou_commafeed/commafeed-client/src/app/tree/thunks.ts

36 lines
1.2 KiB
TypeScript
Raw Normal View History

import { createAppAsyncThunk } from "app/async-thunk"
import { client } from "app/client"
import { incrementUnreadCount } from "app/tree/slice"
import type { CollapseRequest } from "app/types"
import { flattenCategoryTree } from "app/utils"
export const reloadTree = createAppAsyncThunk("tree/reload", async () => await client.category.getRoot().then(r => r.data))
2025-02-14 13:49:46 +01:00
export const collapseTreeCategory = createAppAsyncThunk(
"tree/category/collapse",
async (req: CollapseRequest) => await client.category.collapse(req)
)
export const newFeedEntriesDiscovered = createAppAsyncThunk(
"tree/new-feed-entries-discovered",
async ({ feedId, amount }: { feedId: number; amount: number }, thunkApi) => {
const root = thunkApi.getState().tree.rootCategory
if (!root) return
const feed = flattenCategoryTree(root)
.flatMap(c => c.feeds)
.some(f => f.id === feedId)
if (!feed) {
// feed not found in the tree, reload the tree completely
thunkApi.dispatch(reloadTree())
} else {
thunkApi.dispatch(
incrementUnreadCount({
feedId,
amount,
})
)
}
}
)