import { createContext, FC, useCallback, useContext, useEffect } from 'react'; import './providers/image-text-slides.provider'; import './providers/veo3.provider'; import { videosList } from '@gitroom/frontend/components/videos/video.wrapper'; import { useFetch } from '@gitroom/helpers/utils/custom.fetch'; import { useLaunchStore } from '@gitroom/frontend/components/new-launch/store'; const VideoFunctionWrapper = createContext({ identifier: '', }); export const useVideoFunction = () => { const { identifier } = useContext(VideoFunctionWrapper); const fetch = useFetch(); return useCallback( async (funcName: string, params: any) => { return ( await fetch(`/media/video/function`, { method: 'POST', body: JSON.stringify({ identifier, functionName: funcName, params }), headers: { 'Content-Type': 'application/json', }, }) ).json(); }, [identifier] ); }; export const VideoWrapper: FC<{ identifier: string }> = (props) => { const setActivateExitButton = useLaunchStore((e) => e.setActivateExitButton); useEffect(() => { setActivateExitButton(false); return () => { setActivateExitButton(true); }; }, []); const { identifier } = props; const Component = videosList.find( (v) => v.identifier === identifier )?.Component; if (!Component) { return null; } return ( ); };