postio / apps /frontend /src /components /videos /video.render.component.tsx
Leon4gr45's picture
Upload folder using huggingface_hub (part 7)
ec4551b verified
Raw
History Blame Contribute Delete
1.54 kB
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 (
<VideoFunctionWrapper.Provider value={{ identifier }}>
<Component />
</VideoFunctionWrapper.Provider>
);
};