1import { useAtomValue } from "@effect/atom-react";
2import { useMemo } from "react";
3import { buildPendingNewTasks, type PendingNewTask } from "./pending-new-tasks-model";
4import { flattenQueuedThreadMessages } from "./thread-outbox-model";
5import { composerDraftsAtom } from "./use-composer-drafts";
6import { useThreadOutboxMessages } from "./use-thread-outbox";
7
8export type {
9 PendingDraftTask,
10 PendingNewTask,
11 PendingQueuedTask,
12} from "./pending-new-tasks-model";
13
14export function usePendingNewTasks(): ReadonlyArray<PendingNewTask> {
15 const queuedMessagesByThreadKey = useThreadOutboxMessages();
16 const drafts = useAtomValue(composerDraftsAtom);
17 return useMemo(
18 () =>
19 buildPendingNewTasks({
20 queuedMessages: flattenQueuedThreadMessages(queuedMessagesByThreadKey),
21 drafts,
22 }),
23 [queuedMessagesByThreadKey, drafts],
24 );
25}