mirror of
https://github.com/aljazceru/claude-code-viewer.git
synced 2026-01-05 14:44:22 +01:00
refactor: add effect-ts and refactor codes
This commit is contained in:
@@ -5,11 +5,11 @@ import { useSetAtom } from "jotai";
|
||||
import type { FC, PropsWithChildren } from "react";
|
||||
import { projectDetailQuery, sessionDetailQuery } from "../../lib/api/queries";
|
||||
import { useServerEventListener } from "../../lib/sse/hook/useServerEventListener";
|
||||
import { aliveTasksAtom } from "../projects/[projectId]/sessions/[sessionId]/store/aliveTasksAtom";
|
||||
import { sessionProcessesAtom } from "../projects/[projectId]/sessions/[sessionId]/store/sessionProcessesAtom";
|
||||
|
||||
export const SSEEventListeners: FC<PropsWithChildren> = ({ children }) => {
|
||||
const queryClient = useQueryClient();
|
||||
const setAliveTasks = useSetAtom(aliveTasksAtom);
|
||||
const setSessionProcesses = useSetAtom(sessionProcessesAtom);
|
||||
|
||||
useServerEventListener("sessionListChanged", async (event) => {
|
||||
// invalidate session list
|
||||
@@ -25,8 +25,8 @@ export const SSEEventListeners: FC<PropsWithChildren> = ({ children }) => {
|
||||
});
|
||||
});
|
||||
|
||||
useServerEventListener("taskChanged", async ({ aliveTasks }) => {
|
||||
setAliveTasks(aliveTasks);
|
||||
useServerEventListener("sessionProcessChanged", async ({ processes }) => {
|
||||
setSessionProcesses(processes);
|
||||
});
|
||||
|
||||
return <>{children}</>;
|
||||
|
||||
18
src/app/components/SyncSessionProcess.tsx
Normal file
18
src/app/components/SyncSessionProcess.tsx
Normal file
@@ -0,0 +1,18 @@
|
||||
"use client";
|
||||
|
||||
import { useSetAtom } from "jotai";
|
||||
import { type FC, type PropsWithChildren, useEffect } from "react";
|
||||
import type { PublicSessionProcess } from "../../types/session-process";
|
||||
import { sessionProcessesAtom } from "../projects/[projectId]/sessions/[sessionId]/store/sessionProcessesAtom";
|
||||
|
||||
export const SyncSessionProcess: FC<
|
||||
PropsWithChildren<{ initProcesses: PublicSessionProcess[] }>
|
||||
> = ({ children, initProcesses }) => {
|
||||
const setSessionProcesses = useSetAtom(sessionProcessesAtom);
|
||||
|
||||
useEffect(() => {
|
||||
setSessionProcesses(initProcesses);
|
||||
}, [initProcesses, setSessionProcesses]);
|
||||
|
||||
return <>{children}</>;
|
||||
};
|
||||
Reference in New Issue
Block a user