23 lines
655 B
TypeScript
23 lines
655 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;
|
|
}
|