Skip to content

Commit 8298d47

Browse files
authored
πŸ“¦ NEW: setThreadId function in usePipe (#106)
* πŸ“¦ NEW: `setThreadId` function in usePipe * πŸ› FIX: thread id type
1 parent d7952c4 commit 8298d47

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

β€Žpackages/core/src/react/use-pipe.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ interface UsePipeOptions {
2424
}
2525

2626
const uuidSchema = z.string().uuid();
27+
const externalThreadIdSchema = uuidSchema.optional();
2728

2829
export function usePipe({
2930
apiRoute = '/langbase/pipes/run-stream',
@@ -41,7 +42,9 @@ export function usePipe({
4142
const [error, setError] = useState<Error | null>(null);
4243

4344
const abortControllerRef = useRef<AbortController | null>(null);
44-
const threadIdRef = useRef<string | null>(initialThreadId || null);
45+
const threadIdRef = useRef<string | undefined>(
46+
initialThreadId || undefined,
47+
);
4548
const messagesRef = useRef<Message[]>(initialMessages);
4649
const isFirstRequestRef = useRef<boolean>(true);
4750

@@ -87,6 +90,17 @@ export function usePipe({
8790
[updateMessages, onResponse, onFinish],
8891
);
8992

93+
const setThreadId = useCallback((newThreadId: string | undefined) => {
94+
const isValidThreadId =
95+
externalThreadIdSchema.safeParse(newThreadId).success;
96+
97+
if (isValidThreadId) {
98+
threadIdRef.current = newThreadId;
99+
} else {
100+
throw new Error('Invalid thread ID');
101+
}
102+
}, []);
103+
90104
const getMessagesToSend = useCallback(
91105
(updatedMessages: Message[]): [Message[], boolean] => {
92106
const isInitialRequest = isFirstRequestRef.current;
@@ -264,6 +278,7 @@ export function usePipe({
264278
threadId: threadIdRef.current,
265279
sendMessage,
266280
setInput,
281+
setThreadId,
267282
}),
268283
[
269284
messages,

0 commit comments

Comments
Β (0)