26 lines
678 B
TypeScript
26 lines
678 B
TypeScript
import { useEffect } from "react";
|
|
import { useAppStore } from "@/components/state-provider";
|
|
import { getWebSocketClient } from "@/lib/ws/connection";
|
|
import type { KanbanState } from "@/lib/state/slices";
|
|
|
|
export function useTask(taskId: string | null) {
|
|
const task = useAppStore((state) =>
|
|
taskId
|
|
? (state.kanban.tasks.find((item: KanbanState["tasks"][number]) => item.id === taskId) ??
|
|
null)
|
|
: null,
|
|
);
|
|
|
|
useEffect(() => {
|
|
if (!taskId) return;
|
|
const client = getWebSocketClient();
|
|
if (!client) return;
|
|
const unsubscribe = client.subscribe(taskId);
|
|
return () => {
|
|
unsubscribe();
|
|
};
|
|
}, [taskId]);
|
|
|
|
return task;
|
|
}
|