fix: review round 2 — Clear watch progress clears only the resume point, big view focus by the way it arrived, dialog name, reason tooltip, backfill locks

This commit is contained in:
2026-11-01 18:26:33 +01:00
parent b3402d158f
commit 8dd2f0c015
37 changed files with 457 additions and 243 deletions
+10 -10
View File
@@ -25,7 +25,7 @@ import Tooltip from "../../components/ui/Tooltip";
import VideoCard from "../video/VideoCard";
import { VideoMenu } from "../video/VideoMenu";
import { announceVideoState } from "../video/stateNotice";
import { resetVideoState, writeVideoState, writeWatchLater } from "../video/videoWrites";
import { clearVideoProgress, writeVideoState, writeWatchLater } from "../video/videoWrites";
import { msg } from "../../lib/notifications";
/** Which list YouTube fills in — on the video's topic or with what trends in Hungary — is a mood,
@@ -54,15 +54,15 @@ export function RelatedVideos({
videoId,
onPlay,
onWrite,
onReset,
onCleared,
}: {
videoId: string;
/** `startAt` null resumes the video where it was left; a number (Restart's 0) starts there. */
onPlay: (v: Video, startAt: number | null) => void;
/** Each write this list makes, for the host's player session (see PlayerModal `onWrite`). */
onWrite?: (write: Promise<unknown>) => void;
/** A video's view was reset from its row: the host forgets where its session left it. */
onReset?: (id: string) => void;
/** A video's progress was cleared from its row: the host forgets where its session left it. */
onCleared?: (id: string) => void;
}) {
const { t } = useTranslation();
const qc = useQueryClient();
@@ -109,10 +109,10 @@ export function RelatedVideos({
});
};
const onResetState = (id: string) => {
onReset?.(id);
const seq = begin(id, { status: "new", position_seconds: 0 });
const write = resetVideoState(qc, id);
const onClearProgress = (id: string) => {
onCleared?.(id);
const seq = begin(id, { position_seconds: 0 });
const write = clearVideoProgress(qc, id);
onWrite?.(write);
write
.then(() => {
@@ -120,7 +120,7 @@ export function RelatedVideos({
void qc.invalidateQueries({ queryKey: qk.feed(), refetchType: "none" });
})
.catch((e: unknown) => {
notifyActionError(e, msg("errors.writeFailed.videoReset"));
notifyActionError(e, msg("errors.writeFailed.videoProgress"));
settle(seq);
});
};
@@ -250,7 +250,7 @@ export function RelatedVideos({
)}
</>
)}
<VideoMenu menu={menu} handlers={{ onState, onToggleSave, onResetState, onOpen: open }} />
<VideoMenu menu={menu} handlers={{ onState, onToggleSave, onClearProgress, onOpen: open }} />
</section>
);
}