Files
wehub-resource-sync 6ede33ccdb
Build and Push Docker Images / create_manifest (web, surfsense-web, , cpu) (push) Has been cancelled
Build and Push Docker Images / finalize_release (push) Has been cancelled
Obsidian Plugin Lint / lint (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64, , runner, false, cpu) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64, , runner, false, cpu) (push) Has been cancelled
Build and Push Docker Images / compute_version (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, , production, false, cpu) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, , production, false, cpu) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda126, production, true, cuda126) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda126, production, true, cuda126) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda, production, true, cuda) (push) Has been cancelled
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda, production, true, cuda) (push) Has been cancelled
Build and Push Docker Images / verify_digests (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend, , cpu) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda, cuda) (push) Has been cancelled
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda126, cuda126) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:33:44 +08:00

53 lines
1.6 KiB
TypeScript

"use client";
import { type QueryClient, useQuery } from "@tanstack/react-query";
import {
getThreadFull,
getThreadMessages,
type ThreadHistoryLoadResponse,
type ThreadRecord,
} from "@/lib/chat/thread-persistence";
import { cacheKeys } from "@/lib/query-client/cache-keys";
const THREAD_DETAIL_STALE_TIME_MS = 60 * 1000;
const THREAD_MESSAGES_STALE_TIME_MS = 30 * 1000;
function isValidThreadId(threadId: number | null | undefined): threadId is number {
return typeof threadId === "number" && threadId > 0;
}
export function useThreadDetail(threadId: number | null | undefined) {
return useQuery<ThreadRecord>({
queryKey: cacheKeys.threads.detail(threadId ?? 0),
queryFn: () => getThreadFull(threadId as number),
enabled: isValidThreadId(threadId),
staleTime: THREAD_DETAIL_STALE_TIME_MS,
});
}
export function useThreadMessages(threadId: number | null | undefined) {
return useQuery<ThreadHistoryLoadResponse>({
queryKey: cacheKeys.threads.messages(threadId ?? 0),
queryFn: () => getThreadMessages(threadId as number),
enabled: isValidThreadId(threadId),
staleTime: THREAD_MESSAGES_STALE_TIME_MS,
});
}
export function prefetchThreadData(queryClient: QueryClient, threadId: number): void {
if (!isValidThreadId(threadId)) return;
void Promise.all([
queryClient.prefetchQuery({
queryKey: cacheKeys.threads.detail(threadId),
queryFn: () => getThreadFull(threadId),
staleTime: THREAD_DETAIL_STALE_TIME_MS,
}),
queryClient.prefetchQuery({
queryKey: cacheKeys.threads.messages(threadId),
queryFn: () => getThreadMessages(threadId),
staleTime: THREAD_MESSAGES_STALE_TIME_MS,
}),
]);
}