SotiproAlpha2 / src /contexts /LiveAPIContext.tsx
Ezmary's picture
Update src/contexts/LiveAPIContext.tsx
a306201 verified
raw
history blame
2.73 kB
/**
Copyright 2024 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// --- 👇 ایمپورت‌های لازم اضافه شد 👇 ---
import React, { createContext, FC, type ReactNode, useContext, useEffect } from "react"; // React و useEffect اضافه شد
import { useLiveAPI, type UseLiveAPIResults } from "../hooks/use-live-api"; // مسیر "../hooks/use-live-api" را بررسی کنید
import { LiveConfig } from "../multimodal-live-types"; // مسیر "../multimodal-live-types" را بررسی کنید
// --- 👆 پایان ایمپورت‌های اضافه شده 👆 ---
const LiveAPIContext = createContext<UseLiveAPIResults | undefined>(undefined);
// --- 👇 پراپرتی initialConfig به Props اضافه شد 👇 ---
export type LiveAPIProviderProps = {
children: ReactNode;
url?: string;
initialConfig?: LiveConfig; // این پراپرتی برای دریافت تنظیمات اولیه از App.tsx است
};
// --- 👆 پایان تغییر Props 👆 ---
export const LiveAPIProvider: FC<LiveAPIProviderProps> = ({
url = process.env.NODE_ENV === 'development'
? `${window.location.protocol === 'https:' ? 'wss:' : 'ws:'}//localhost:3001/ws` // مطمئن شوید پورت ۳۰۰۱ صحیح است
: `${window.location.protocol === 'https:' ? 'wss:' : 'ws:'}//${window.location.host}/ws`,
initialConfig, // <-- initialConfig از props گرفته شد
children,
}) => {
const liveAPI = useLiveAPI({ url });
// --- 👇 استفاده از useEffect برای اعمال initialConfig 👇 ---
useEffect(() => {
if (initialConfig && liveAPI.setConfig) {
console.log("Applying initial config from Provider:", initialConfig);
liveAPI.setConfig(initialConfig);
}
}, [initialConfig, liveAPI.setConfig]);
// --- 👆 پایان بخش useEffect 👆 ---
return (
<LiveAPIContext.Provider value={liveAPI}>
{children}
</LiveAPIContext.Provider>
);
};
export const useLiveAPIContext = () => {
const context = useContext(LiveAPIContext);
if (!context) {
throw new Error("useLiveAPIContext must be used within a LiveAPIProvider");
}
return context;
};