fix double click to seek build

This commit is contained in:
Pas 2025-10-10 13:56:21 -06:00
parent ca921612f0
commit da67d85760
8 changed files with 57 additions and 43 deletions

View file

@ -27,8 +27,8 @@ export interface SettingsInput {
enableLowPerformanceMode?: boolean;
enableNativeSubtitles?: boolean;
enableHoldToBoost?: boolean;
enableDoubleClickToSeek?: boolean;
manualSourceSelection?: boolean;
enableDoubleClickToSeek?: boolean;
}
export interface SettingsResponse {
@ -54,8 +54,8 @@ export interface SettingsResponse {
enableLowPerformanceMode?: boolean;
enableNativeSubtitles?: boolean;
enableHoldToBoost?: boolean;
enableDoubleClickToSeek?: boolean;
manualSourceSelection?: boolean;
enableDoubleClickToSeek?: boolean;
}
export function updateSettings(

View file

@ -6,12 +6,16 @@ export function Seek(props: { direction: SeekDirection }) {
return (
<div
className={`pointer-events-none flex h-20 w-20 items-center justify-center rounded-full bg-black bg-opacity-50 text-white ${
props.direction === "backward" ? "animate-seek-left" : "animate-seek-right"
props.direction === "backward"
? "animate-seek-left"
: "animate-seek-right"
}`}
>
<Icon
icon={
props.direction === "backward" ? Icons.SKIP_BACKWARD : Icons.SKIP_FORWARD
props.direction === "backward"
? Icons.SKIP_BACKWARD
: Icons.SKIP_FORWARD
}
className="text-3xl"
/>

View file

@ -65,6 +65,9 @@ export function useAuthData() {
const setEnableHoldToBoost = usePreferencesStore(
(s) => s.setEnableHoldToBoost,
);
const setEnableDoubleClickToSeek = usePreferencesStore(
(s) => s.setEnableDoubleClickToSeek,
);
const login = useCallback(
async (
@ -192,6 +195,10 @@ export function useAuthData() {
if (settings.enableHoldToBoost !== undefined) {
setEnableHoldToBoost(settings.enableHoldToBoost);
}
if (settings.enableDoubleClickToSeek !== undefined) {
setEnableDoubleClickToSeek(settings.enableDoubleClickToSeek);
}
},
[
replaceBookmarks,
@ -215,6 +222,7 @@ export function useAuthData() {
setEnableLowPerformanceMode,
setEnableNativeSubtitles,
setEnableHoldToBoost,
setEnableDoubleClickToSeek,
],
);

View file

@ -66,9 +66,9 @@ export function useSettingsState(
forceCompactEpisodeView: boolean,
enableLowPerformanceMode: boolean,
enableHoldToBoost: boolean,
enableDoubleClickToSeek: boolean,
homeSectionOrder: string[],
manualSourceSelection: boolean,
enableDoubleClickToSeek: boolean,
) {
const [proxyUrlsState, setProxyUrls, resetProxyUrls, proxyUrlsChanged] =
useDerived(proxyUrls);
@ -184,12 +184,6 @@ export function useSettingsState(
resetEnableHoldToBoost,
enableHoldToBoostChanged,
] = useDerived(enableHoldToBoost);
const [
enableDoubleClickToSeekState,
setEnableDoubleClickToSeekState,
resetEnableDoubleClickToSeek,
enableDoubleClickToSeekChanged,
] = useDerived(enableDoubleClickToSeek);
const [
homeSectionOrderState,
setHomeSectionOrderState,
@ -202,6 +196,12 @@ export function useSettingsState(
resetManualSourceSelection,
manualSourceSelectionChanged,
] = useDerived(manualSourceSelection);
const [
enableDoubleClickToSeekState,
setEnableDoubleClickToSeekState,
resetEnableDoubleClickToSeek,
enableDoubleClickToSeekChanged,
] = useDerived(enableDoubleClickToSeek);
function reset() {
resetTheme();
@ -228,9 +228,9 @@ export function useSettingsState(
resetForceCompactEpisodeView();
resetEnableLowPerformanceMode();
resetEnableHoldToBoost();
resetEnableDoubleClickToSeek();
resetHomeSectionOrder();
resetManualSourceSelection();
resetEnableDoubleClickToSeek();
}
const changed =
@ -257,9 +257,9 @@ export function useSettingsState(
forceCompactEpisodeViewChanged ||
enableLowPerformanceModeChanged ||
enableHoldToBoostChanged ||
enableDoubleClickToSeekChanged ||
homeSectionOrderChanged ||
manualSourceSelectionChanged;
manualSourceSelectionChanged ||
enableDoubleClickToSeekChanged;
return {
reset,
@ -379,11 +379,6 @@ export function useSettingsState(
set: setEnableHoldToBoostState,
changed: enableHoldToBoostChanged,
},
enableDoubleClickToSeek: {
state: enableDoubleClickToSeekState,
set: setEnableDoubleClickToSeekState,
changed: enableDoubleClickToSeekChanged,
},
homeSectionOrder: {
state: homeSectionOrderState,
set: setHomeSectionOrderState,
@ -394,5 +389,10 @@ export function useSettingsState(
set: setManualSourceSelectionState,
changed: manualSourceSelectionChanged,
},
enableDoubleClickToSeek: {
state: enableDoubleClickToSeekState,
set: setEnableDoubleClickToSeekState,
changed: enableDoubleClickToSeekChanged,
},
};
}

View file

@ -197,13 +197,6 @@ export function SettingsPage() {
(s) => s.setEnableHoldToBoost,
);
const enableDoubleClickToSeek = usePreferencesStore(
(s) => s.enableDoubleClickToSeek,
);
const setEnableDoubleClickToSeek = usePreferencesStore(
(s) => s.setEnableDoubleClickToSeek,
);
const homeSectionOrder = usePreferencesStore((s) => s.homeSectionOrder);
const setHomeSectionOrder = usePreferencesStore((s) => s.setHomeSectionOrder);
@ -214,6 +207,13 @@ export function SettingsPage() {
(s) => s.setManualSourceSelection,
);
const enableDoubleClickToSeek = usePreferencesStore(
(s) => s.enableDoubleClickToSeek,
);
const setEnableDoubleClickToSeek = usePreferencesStore(
(s) => s.setEnableDoubleClickToSeek,
);
const account = useAuthStore((s) => s.account);
const updateProfile = useAuthStore((s) => s.setAccountProfile);
const updateDeviceName = useAuthStore((s) => s.updateDeviceName);
@ -266,9 +266,9 @@ export function SettingsPage() {
forceCompactEpisodeView,
enableLowPerformanceMode,
enableHoldToBoost,
enableDoubleClickToSeek,
homeSectionOrder,
manualSourceSelection,
enableDoubleClickToSeek,
);
const availableSources = useMemo(() => {
@ -328,8 +328,8 @@ export function SettingsPage() {
state.forceCompactEpisodeView.changed ||
state.enableLowPerformanceMode.changed ||
state.enableHoldToBoost.changed ||
state.enableDoubleClickToSeek.changed ||
state.manualSourceSelection.changed
state.manualSourceSelection.changed ||
state.enableDoubleClickToSeek
) {
await updateSettings(backendUrl, account, {
applicationLanguage: state.appLanguage.state,
@ -351,8 +351,8 @@ export function SettingsPage() {
forceCompactEpisodeView: state.forceCompactEpisodeView.state,
enableLowPerformanceMode: state.enableLowPerformanceMode.state,
enableHoldToBoost: state.enableHoldToBoost.state,
enableDoubleClickToSeek: state.enableDoubleClickToSeek.state,
manualSourceSelection: state.manualSourceSelection.state,
enableDoubleClickToSeek: state.enableDoubleClickToSeek.state,
});
}
if (state.deviceName.changed) {
@ -393,9 +393,9 @@ export function SettingsPage() {
setForceCompactEpisodeView(state.forceCompactEpisodeView.state);
setEnableLowPerformanceMode(state.enableLowPerformanceMode.state);
setEnableHoldToBoost(state.enableHoldToBoost.state);
setEnableDoubleClickToSeek(state.enableDoubleClickToSeek.state);
setHomeSectionOrder(state.homeSectionOrder.state);
setManualSourceSelection(state.manualSourceSelection.state);
setEnableDoubleClickToSeek(state.enableDoubleClickToSeek.state);
if (state.profile.state) {
updateProfile(state.profile.state);
@ -442,6 +442,7 @@ export function SettingsPage() {
setEnableHoldToBoost,
setHomeSectionOrder,
setManualSourceSelection,
setEnableDoubleClickToSeek,
]);
return (
<SubPageLayout>
@ -494,10 +495,10 @@ export function SettingsPage() {
setEnableLowPerformanceMode={state.enableLowPerformanceMode.set}
enableHoldToBoost={state.enableHoldToBoost.state}
setEnableHoldToBoost={state.enableHoldToBoost.set}
enableDoubleClickToSeek={state.enableDoubleClickToSeek.state}
setEnableDoubleClickToSeek={state.enableDoubleClickToSeek.set}
manualSourceSelection={state.manualSourceSelection.state}
setManualSourceSelection={state.manualSourceSelection.set}
enableDoubleClickToSeek={state.enableDoubleClickToSeek.state}
setEnableDoubleClickToSeek={state.enableDoubleClickToSeek.set}
/>
</div>
<div id="settings-appearance" className="mt-28">

View file

@ -56,6 +56,7 @@ export function VerifyPassphrase(props: VerifyPassphraseProps) {
febboxKey: store.febboxKey,
enableLowPerformanceMode: store.enableLowPerformanceMode,
enableNativeSubtitles: store.enableNativeSubtitles,
enableDoubleClickToSeek: store.enableDoubleClickToSeek,
}));
const backendUrl = useBackendUrl();

View file

@ -31,10 +31,10 @@ export function PreferencesPart(props: {
setEnableLowPerformanceMode: (v: boolean) => void;
enableHoldToBoost: boolean;
setEnableHoldToBoost: (v: boolean) => void;
enableDoubleClickToSeek: boolean;
setEnableDoubleClickToSeek: (v: boolean) => void;
manualSourceSelection: boolean;
setManualSourceSelection: (v: boolean) => void;
enableDoubleClickToSeek: boolean;
setEnableDoubleClickToSeek: (v: boolean) => void;
}) {
const { t } = useTranslation();
const sorted = sortLangCodes(appLanguageOptions.map((item) => item.code));

View file

@ -22,9 +22,9 @@ export interface PreferencesStore {
enableLowPerformanceMode: boolean;
enableNativeSubtitles: boolean;
enableHoldToBoost: boolean;
enableDoubleClickToSeek: boolean;
homeSectionOrder: string[];
manualSourceSelection: boolean;
enableDoubleClickToSeek: boolean;
setEnableThumbnails(v: boolean): void;
setEnableAutoplay(v: boolean): void;
@ -45,9 +45,9 @@ export interface PreferencesStore {
setEnableLowPerformanceMode(v: boolean): void;
setEnableNativeSubtitles(v: boolean): void;
setEnableHoldToBoost(v: boolean): void;
setEnableDoubleClickToSeek(v: boolean): void;
setHomeSectionOrder(v: string[]): void;
setManualSourceSelection(v: boolean): void;
setEnableDoubleClickToSeek(v: boolean): void;
}
export const usePreferencesStore = create(
@ -72,9 +72,9 @@ export const usePreferencesStore = create(
enableLowPerformanceMode: false,
enableNativeSubtitles: false,
enableHoldToBoost: true,
enableDoubleClickToSeek: false,
homeSectionOrder: ["watching", "bookmarks"],
manualSourceSelection: false,
enableDoubleClickToSeek: false,
setEnableThumbnails(v) {
set((s) => {
s.enableThumbnails = v;
@ -170,11 +170,6 @@ export const usePreferencesStore = create(
s.enableHoldToBoost = v;
});
},
setEnableDoubleClickToSeek(v) {
set((s) => {
s.enableDoubleClickToSeek = v;
});
},
setHomeSectionOrder(v) {
set((s) => {
s.homeSectionOrder = v;
@ -185,6 +180,11 @@ export const usePreferencesStore = create(
s.manualSourceSelection = v;
});
},
setEnableDoubleClickToSeek(v) {
set((s) => {
s.enableDoubleClickToSeek = v;
});
},
})),
{
name: "__MW::preferences",