mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-01-20 10:08:06 +00:00
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import type {
|
|
BaseItemDto,
|
|
MediaStream,
|
|
} from "@jellyfin/sdk/lib/generated-client";
|
|
import { useCallback } from "react";
|
|
import useRouter from "@/hooks/useAppRouter";
|
|
import { tvSubtitleModalAtom } from "@/utils/atoms/tvSubtitleModal";
|
|
import { store } from "@/utils/store";
|
|
|
|
interface ShowSubtitleModalParams {
|
|
item: BaseItemDto;
|
|
mediaSourceId?: string | null;
|
|
subtitleTracks: MediaStream[];
|
|
currentSubtitleIndex: number;
|
|
onSubtitleIndexChange: (index: number) => void;
|
|
onServerSubtitleDownloaded?: () => void;
|
|
onLocalSubtitleDownloaded?: (path: string) => void;
|
|
refreshSubtitleTracks?: () => Promise<MediaStream[]>;
|
|
}
|
|
|
|
export const useTVSubtitleModal = () => {
|
|
const router = useRouter();
|
|
|
|
const showSubtitleModal = useCallback(
|
|
(params: ShowSubtitleModalParams) => {
|
|
store.set(tvSubtitleModalAtom, {
|
|
item: params.item,
|
|
mediaSourceId: params.mediaSourceId,
|
|
subtitleTracks: params.subtitleTracks,
|
|
currentSubtitleIndex: params.currentSubtitleIndex,
|
|
onSubtitleIndexChange: params.onSubtitleIndexChange,
|
|
onServerSubtitleDownloaded: params.onServerSubtitleDownloaded,
|
|
onLocalSubtitleDownloaded: params.onLocalSubtitleDownloaded,
|
|
refreshSubtitleTracks: params.refreshSubtitleTracks,
|
|
});
|
|
router.push("/(auth)/tv-subtitle-modal");
|
|
},
|
|
[router],
|
|
);
|
|
|
|
return { showSubtitleModal };
|
|
};
|