move to captions view

This commit is contained in:
Pas 2025-11-26 12:33:24 -07:00
parent 19af760317
commit 64abb25560
4 changed files with 13 additions and 7 deletions

View file

@ -764,6 +764,7 @@
"SourceChoice": "Source Subtitles", "SourceChoice": "Source Subtitles",
"OpenSubtitlesChoice": "External Subtitles", "OpenSubtitlesChoice": "External Subtitles",
"loadingExternal": "Loading external subtitles...", "loadingExternal": "Loading external subtitles...",
"transcriptChoice": "Transcript",
"settings": { "settings": {
"backlink": "Custom subtitles", "backlink": "Custom subtitles",
"delay": "Subtitle delay", "delay": "Subtitle delay",

View file

@ -541,6 +541,12 @@ export function CaptionsView({
selected={selectedCaptionId === "pasted-caption"} selected={selectedCaptionId === "pasted-caption"}
/> />
{selectedCaptionId && (
<Menu.ChevronLink onClick={() => router.navigate("/transcript")}>
{t("player.menus.subtitles.transcriptChoice")}
</Menu.ChevronLink>
)}
<div className="h-1" /> <div className="h-1" />
{/* Search input */} {/* Search input */}

View file

@ -151,9 +151,6 @@ export function SettingsMenu({ id }: { id: string }) {
<Menu.ChevronLink onClick={() => router.navigate("/playback")}> <Menu.ChevronLink onClick={() => router.navigate("/playback")}>
{t("player.menus.settings.playbackItem")} {t("player.menus.settings.playbackItem")}
</Menu.ChevronLink> </Menu.ChevronLink>
<Menu.ChevronLink onClick={() => router.navigate("/transcript")}>
Transcript
</Menu.ChevronLink>
</Menu.Section> </Menu.Section>
</Menu.Card> </Menu.Card>
); );

View file

@ -1,5 +1,6 @@
import Fuse from "fuse.js"; import Fuse from "fuse.js";
import { useEffect, useMemo, useState } from "react"; import { useEffect, useMemo, useState } from "react";
import { useTranslation } from "react-i18next";
import { Menu } from "@/components/player/internals/ContextMenu"; import { Menu } from "@/components/player/internals/ContextMenu";
import { Input } from "@/components/player/internals/ContextMenu/Input"; import { Input } from "@/components/player/internals/ContextMenu/Input";
@ -18,6 +19,7 @@ import { durationExceedsHour, formatSeconds } from "@/utils/formatSeconds";
import { wordOverrides } from "../../Player"; import { wordOverrides } from "../../Player";
export function TranscriptView({ id }: { id: string }) { export function TranscriptView({ id }: { id: string }) {
const { t } = useTranslation();
const router = useOverlayRouter(id); const router = useOverlayRouter(id);
const display = usePlayerStore((s) => s.display); const display = usePlayerStore((s) => s.display);
const srtData = usePlayerStore((s) => s.caption.selected?.srtData); const srtData = usePlayerStore((s) => s.caption.selected?.srtData);
@ -171,11 +173,11 @@ export function TranscriptView({ id }: { id: string }) {
}; };
if (!didFirstScroll) { if (!didFirstScroll) {
const t = setTimeout(() => { const timeout = setTimeout(() => {
doScroll(); doScroll();
setDidFirstScroll(true); setDidFirstScroll(true);
}, 100); }, 100);
return () => clearTimeout(t); return () => clearTimeout(timeout);
} }
doScroll(); doScroll();
}, [scrollTargetKey, didFirstScroll]); }, [scrollTargetKey, didFirstScroll]);
@ -186,8 +188,8 @@ export function TranscriptView({ id }: { id: string }) {
return ( return (
<> <>
<Menu.BackLink onClick={() => router.navigate("/")}> <Menu.BackLink onClick={() => router.navigate("/captions")}>
Transcript {t("player.menus.subtitles.transcriptChoice")}
</Menu.BackLink> </Menu.BackLink>
<Menu.Section> <Menu.Section>
<div className="sticky top-0 z-10 -mx-3 px-3 py-2 mb-2"> <div className="sticky top-0 z-10 -mx-3 px-3 py-2 mb-2">