mirror of
https://github.com/fosrl/pangolin.git
synced 2026-08-03 19:21:11 +02:00
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
"use client";
|
|
|
|
import AiProviderContext from "@app/contexts/aiProviderContext";
|
|
import type { AiProviderPublic } from "@server/routers/aiProvider/types";
|
|
import { useTranslations } from "next-intl";
|
|
import { useEffect, useState } from "react";
|
|
|
|
type AiProviderProviderProps = {
|
|
children: React.ReactNode;
|
|
provider: AiProviderPublic;
|
|
};
|
|
|
|
export function AiProviderProvider({
|
|
children,
|
|
provider: serverProvider
|
|
}: AiProviderProviderProps) {
|
|
const [provider, setProvider] = useState<AiProviderPublic>(serverProvider);
|
|
const t = useTranslations();
|
|
|
|
useEffect(() => {
|
|
setProvider(serverProvider);
|
|
}, [serverProvider]);
|
|
|
|
const updateProvider = (updated: Partial<AiProviderPublic>) => {
|
|
if (!provider) {
|
|
throw new Error(t("aiProviderErrorNoUpdate"));
|
|
}
|
|
|
|
setProvider((prev) => {
|
|
if (!prev) {
|
|
return prev;
|
|
}
|
|
return {
|
|
...prev,
|
|
...updated
|
|
};
|
|
});
|
|
};
|
|
|
|
return (
|
|
<AiProviderContext.Provider value={{ provider, updateProvider }}>
|
|
{children}
|
|
</AiProviderContext.Provider>
|
|
);
|
|
}
|
|
|
|
export default AiProviderProvider;
|