Files
SubMiner/src/main/runtime/overlay-visibility-actions.ts
T
sudacode 127e1ea88e fix(jellyfin): subtitle timing, resume progress, and overlay sync
- Add per-stream subtitle delay persistence and auto timeline-offset correction
- Strip server-selected subtitle stream from mpv load URL; suppress plugin subtitle rearm and auto-start during app-managed preload
- Fix resume position lost when mpv resets on stop; use last known position for final progress/stopped reports
- Keep Play vs Resume distinct to avoid early seek race on normal play
- Fix discovery resume when remote play sends StartPositionTicks=0 despite saved progress
- Deduplicate show/hide overlay commands using recorded visibility state
- Rewrite docs-site Jellyfin page around cast-to-device UX
2026-05-24 03:11:05 -07:00

35 lines
1.1 KiB
TypeScript

export function createSetVisibleOverlayVisibleHandler(deps: {
getVisibleOverlayVisible?: () => boolean;
setVisibleOverlayVisibleCore: (options: {
visible: boolean;
setVisibleOverlayVisibleState: (visible: boolean) => void;
updateVisibleOverlayVisibility: () => void;
}) => void;
setVisibleOverlayVisibleState: (visible: boolean) => void;
updateVisibleOverlayVisibility: () => void;
onVisibleOverlayEnabled?: () => void;
}) {
return (visible: boolean): void => {
if (deps.getVisibleOverlayVisible?.() === visible) {
return;
}
if (visible) {
deps.onVisibleOverlayEnabled?.();
}
deps.setVisibleOverlayVisibleCore({
visible,
setVisibleOverlayVisibleState: deps.setVisibleOverlayVisibleState,
updateVisibleOverlayVisibility: deps.updateVisibleOverlayVisibility,
});
};
}
export function createToggleVisibleOverlayHandler(deps: {
getVisibleOverlayVisible: () => boolean;
setVisibleOverlayVisible: (visible: boolean) => void;
}) {
return (): void => {
deps.setVisibleOverlayVisible(!deps.getVisibleOverlayVisible());
};
}