From 7fe4524415a21cb8ef170301f6032dc535aaddc3 Mon Sep 17 00:00:00 2001 From: icarus Date: Sun, 12 Oct 2025 02:10:00 +0800 Subject: [PATCH] feat(hooks): add useVideos hook for video management Implement custom hook to handle video operations including add, update, remove and set videos --- src/renderer/src/hooks/useVideos.ts | 53 +++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/renderer/src/hooks/useVideos.ts diff --git a/src/renderer/src/hooks/useVideos.ts b/src/renderer/src/hooks/useVideos.ts new file mode 100644 index 0000000000..a816a9f091 --- /dev/null +++ b/src/renderer/src/hooks/useVideos.ts @@ -0,0 +1,53 @@ +import { useAppDispatch, useAppSelector } from '@renderer/store' +import { addVideoAction, removeVideoAction, setVideosAction, updateVideoAction } from '@renderer/store/video' +import { Video } from '@renderer/types/video' +import { useCallback, useEffect } from 'react' + +export const useVideos = (providerId: string) => { + const videos = useAppSelector((state) => state.video.videoMap[providerId]) + const dispatch = useAppDispatch() + + const addVideo = useCallback( + (video: Video) => { + if (videos && videos.every((v) => v.id !== video.id)) { + dispatch(addVideoAction({ providerId, video })) + } + }, + [dispatch, providerId, videos] + ) + + const updateVideo = useCallback( + (update: Partial