33 lines
946 B
TypeScript
33 lines
946 B
TypeScript
"use client";
|
|
|
|
import { useParams, usePathname, useSearchParams } from "next/navigation";
|
|
import { useEffect, useState } from "react";
|
|
|
|
import { uuid } from "@/core/utils/uuid";
|
|
|
|
export function useThreadChat() {
|
|
const { thread_id: threadIdFromPath } = useParams<{ thread_id: string }>();
|
|
const pathname = usePathname();
|
|
|
|
const searchParams = useSearchParams();
|
|
const [threadId, setThreadId] = useState(() => {
|
|
return threadIdFromPath === "new" ? uuid() : threadIdFromPath;
|
|
});
|
|
|
|
const [isNewThread, setIsNewThread] = useState(
|
|
() => threadIdFromPath === "new",
|
|
);
|
|
|
|
useEffect(() => {
|
|
if (pathname.endsWith("/new")) {
|
|
setIsNewThread(true);
|
|
setThreadId(uuid());
|
|
return;
|
|
}
|
|
setIsNewThread(false);
|
|
setThreadId(threadIdFromPath);
|
|
}, [pathname, threadIdFromPath]);
|
|
const isMock = searchParams.get("mock") === "true";
|
|
return { threadId, setThreadId, isNewThread, setIsNewThread, isMock };
|
|
}
|