feat(webui): add initial webui with websocket chat flow
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import { createContext, useContext, type ReactNode } from "react";
|
||||
|
||||
import type { NanobotClient } from "@/lib/nanobot-client";
|
||||
|
||||
interface ClientContextValue {
|
||||
client: NanobotClient;
|
||||
token: string;
|
||||
modelName: string | null;
|
||||
}
|
||||
|
||||
const ClientContext = createContext<ClientContextValue | null>(null);
|
||||
|
||||
export function ClientProvider({
|
||||
client,
|
||||
token,
|
||||
modelName = null,
|
||||
children,
|
||||
}: {
|
||||
client: NanobotClient;
|
||||
token: string;
|
||||
modelName?: string | null;
|
||||
children: ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<ClientContext.Provider value={{ client, token, modelName }}>
|
||||
{children}
|
||||
</ClientContext.Provider>
|
||||
);
|
||||
}
|
||||
|
||||
export function useClient(): ClientContextValue {
|
||||
const ctx = useContext(ClientContext);
|
||||
if (!ctx) {
|
||||
throw new Error("useClient must be used within a ClientProvider");
|
||||
}
|
||||
return ctx;
|
||||
}
|
||||
Reference in New Issue
Block a user