mirror of
https://github.com/p-stream/p-stream.git
synced 2026-04-21 10:12:17 +00:00
fix double click to seek build
This commit is contained in:
parent
ca921612f0
commit
da67d85760
8 changed files with 57 additions and 43 deletions
|
|
@ -27,8 +27,8 @@ export interface SettingsInput {
|
||||||
enableLowPerformanceMode?: boolean;
|
enableLowPerformanceMode?: boolean;
|
||||||
enableNativeSubtitles?: boolean;
|
enableNativeSubtitles?: boolean;
|
||||||
enableHoldToBoost?: boolean;
|
enableHoldToBoost?: boolean;
|
||||||
enableDoubleClickToSeek?: boolean;
|
|
||||||
manualSourceSelection?: boolean;
|
manualSourceSelection?: boolean;
|
||||||
|
enableDoubleClickToSeek?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SettingsResponse {
|
export interface SettingsResponse {
|
||||||
|
|
@ -54,8 +54,8 @@ export interface SettingsResponse {
|
||||||
enableLowPerformanceMode?: boolean;
|
enableLowPerformanceMode?: boolean;
|
||||||
enableNativeSubtitles?: boolean;
|
enableNativeSubtitles?: boolean;
|
||||||
enableHoldToBoost?: boolean;
|
enableHoldToBoost?: boolean;
|
||||||
enableDoubleClickToSeek?: boolean;
|
|
||||||
manualSourceSelection?: boolean;
|
manualSourceSelection?: boolean;
|
||||||
|
enableDoubleClickToSeek?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateSettings(
|
export function updateSettings(
|
||||||
|
|
|
||||||
|
|
@ -6,12 +6,16 @@ export function Seek(props: { direction: SeekDirection }) {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={`pointer-events-none flex h-20 w-20 items-center justify-center rounded-full bg-black bg-opacity-50 text-white ${
|
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
|
||||||
icon={
|
icon={
|
||||||
props.direction === "backward" ? Icons.SKIP_BACKWARD : Icons.SKIP_FORWARD
|
props.direction === "backward"
|
||||||
|
? Icons.SKIP_BACKWARD
|
||||||
|
: Icons.SKIP_FORWARD
|
||||||
}
|
}
|
||||||
className="text-3xl"
|
className="text-3xl"
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,9 @@ export function useAuthData() {
|
||||||
const setEnableHoldToBoost = usePreferencesStore(
|
const setEnableHoldToBoost = usePreferencesStore(
|
||||||
(s) => s.setEnableHoldToBoost,
|
(s) => s.setEnableHoldToBoost,
|
||||||
);
|
);
|
||||||
|
const setEnableDoubleClickToSeek = usePreferencesStore(
|
||||||
|
(s) => s.setEnableDoubleClickToSeek,
|
||||||
|
);
|
||||||
|
|
||||||
const login = useCallback(
|
const login = useCallback(
|
||||||
async (
|
async (
|
||||||
|
|
@ -192,6 +195,10 @@ export function useAuthData() {
|
||||||
if (settings.enableHoldToBoost !== undefined) {
|
if (settings.enableHoldToBoost !== undefined) {
|
||||||
setEnableHoldToBoost(settings.enableHoldToBoost);
|
setEnableHoldToBoost(settings.enableHoldToBoost);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (settings.enableDoubleClickToSeek !== undefined) {
|
||||||
|
setEnableDoubleClickToSeek(settings.enableDoubleClickToSeek);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
replaceBookmarks,
|
replaceBookmarks,
|
||||||
|
|
@ -215,6 +222,7 @@ export function useAuthData() {
|
||||||
setEnableLowPerformanceMode,
|
setEnableLowPerformanceMode,
|
||||||
setEnableNativeSubtitles,
|
setEnableNativeSubtitles,
|
||||||
setEnableHoldToBoost,
|
setEnableHoldToBoost,
|
||||||
|
setEnableDoubleClickToSeek,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,9 +66,9 @@ export function useSettingsState(
|
||||||
forceCompactEpisodeView: boolean,
|
forceCompactEpisodeView: boolean,
|
||||||
enableLowPerformanceMode: boolean,
|
enableLowPerformanceMode: boolean,
|
||||||
enableHoldToBoost: boolean,
|
enableHoldToBoost: boolean,
|
||||||
enableDoubleClickToSeek: boolean,
|
|
||||||
homeSectionOrder: string[],
|
homeSectionOrder: string[],
|
||||||
manualSourceSelection: boolean,
|
manualSourceSelection: boolean,
|
||||||
|
enableDoubleClickToSeek: boolean,
|
||||||
) {
|
) {
|
||||||
const [proxyUrlsState, setProxyUrls, resetProxyUrls, proxyUrlsChanged] =
|
const [proxyUrlsState, setProxyUrls, resetProxyUrls, proxyUrlsChanged] =
|
||||||
useDerived(proxyUrls);
|
useDerived(proxyUrls);
|
||||||
|
|
@ -184,12 +184,6 @@ export function useSettingsState(
|
||||||
resetEnableHoldToBoost,
|
resetEnableHoldToBoost,
|
||||||
enableHoldToBoostChanged,
|
enableHoldToBoostChanged,
|
||||||
] = useDerived(enableHoldToBoost);
|
] = useDerived(enableHoldToBoost);
|
||||||
const [
|
|
||||||
enableDoubleClickToSeekState,
|
|
||||||
setEnableDoubleClickToSeekState,
|
|
||||||
resetEnableDoubleClickToSeek,
|
|
||||||
enableDoubleClickToSeekChanged,
|
|
||||||
] = useDerived(enableDoubleClickToSeek);
|
|
||||||
const [
|
const [
|
||||||
homeSectionOrderState,
|
homeSectionOrderState,
|
||||||
setHomeSectionOrderState,
|
setHomeSectionOrderState,
|
||||||
|
|
@ -202,6 +196,12 @@ export function useSettingsState(
|
||||||
resetManualSourceSelection,
|
resetManualSourceSelection,
|
||||||
manualSourceSelectionChanged,
|
manualSourceSelectionChanged,
|
||||||
] = useDerived(manualSourceSelection);
|
] = useDerived(manualSourceSelection);
|
||||||
|
const [
|
||||||
|
enableDoubleClickToSeekState,
|
||||||
|
setEnableDoubleClickToSeekState,
|
||||||
|
resetEnableDoubleClickToSeek,
|
||||||
|
enableDoubleClickToSeekChanged,
|
||||||
|
] = useDerived(enableDoubleClickToSeek);
|
||||||
|
|
||||||
function reset() {
|
function reset() {
|
||||||
resetTheme();
|
resetTheme();
|
||||||
|
|
@ -228,9 +228,9 @@ export function useSettingsState(
|
||||||
resetForceCompactEpisodeView();
|
resetForceCompactEpisodeView();
|
||||||
resetEnableLowPerformanceMode();
|
resetEnableLowPerformanceMode();
|
||||||
resetEnableHoldToBoost();
|
resetEnableHoldToBoost();
|
||||||
resetEnableDoubleClickToSeek();
|
|
||||||
resetHomeSectionOrder();
|
resetHomeSectionOrder();
|
||||||
resetManualSourceSelection();
|
resetManualSourceSelection();
|
||||||
|
resetEnableDoubleClickToSeek();
|
||||||
}
|
}
|
||||||
|
|
||||||
const changed =
|
const changed =
|
||||||
|
|
@ -257,9 +257,9 @@ export function useSettingsState(
|
||||||
forceCompactEpisodeViewChanged ||
|
forceCompactEpisodeViewChanged ||
|
||||||
enableLowPerformanceModeChanged ||
|
enableLowPerformanceModeChanged ||
|
||||||
enableHoldToBoostChanged ||
|
enableHoldToBoostChanged ||
|
||||||
enableDoubleClickToSeekChanged ||
|
|
||||||
homeSectionOrderChanged ||
|
homeSectionOrderChanged ||
|
||||||
manualSourceSelectionChanged;
|
manualSourceSelectionChanged ||
|
||||||
|
enableDoubleClickToSeekChanged;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
reset,
|
reset,
|
||||||
|
|
@ -379,11 +379,6 @@ export function useSettingsState(
|
||||||
set: setEnableHoldToBoostState,
|
set: setEnableHoldToBoostState,
|
||||||
changed: enableHoldToBoostChanged,
|
changed: enableHoldToBoostChanged,
|
||||||
},
|
},
|
||||||
enableDoubleClickToSeek: {
|
|
||||||
state: enableDoubleClickToSeekState,
|
|
||||||
set: setEnableDoubleClickToSeekState,
|
|
||||||
changed: enableDoubleClickToSeekChanged,
|
|
||||||
},
|
|
||||||
homeSectionOrder: {
|
homeSectionOrder: {
|
||||||
state: homeSectionOrderState,
|
state: homeSectionOrderState,
|
||||||
set: setHomeSectionOrderState,
|
set: setHomeSectionOrderState,
|
||||||
|
|
@ -394,5 +389,10 @@ export function useSettingsState(
|
||||||
set: setManualSourceSelectionState,
|
set: setManualSourceSelectionState,
|
||||||
changed: manualSourceSelectionChanged,
|
changed: manualSourceSelectionChanged,
|
||||||
},
|
},
|
||||||
|
enableDoubleClickToSeek: {
|
||||||
|
state: enableDoubleClickToSeekState,
|
||||||
|
set: setEnableDoubleClickToSeekState,
|
||||||
|
changed: enableDoubleClickToSeekChanged,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -197,13 +197,6 @@ export function SettingsPage() {
|
||||||
(s) => s.setEnableHoldToBoost,
|
(s) => s.setEnableHoldToBoost,
|
||||||
);
|
);
|
||||||
|
|
||||||
const enableDoubleClickToSeek = usePreferencesStore(
|
|
||||||
(s) => s.enableDoubleClickToSeek,
|
|
||||||
);
|
|
||||||
const setEnableDoubleClickToSeek = usePreferencesStore(
|
|
||||||
(s) => s.setEnableDoubleClickToSeek,
|
|
||||||
);
|
|
||||||
|
|
||||||
const homeSectionOrder = usePreferencesStore((s) => s.homeSectionOrder);
|
const homeSectionOrder = usePreferencesStore((s) => s.homeSectionOrder);
|
||||||
const setHomeSectionOrder = usePreferencesStore((s) => s.setHomeSectionOrder);
|
const setHomeSectionOrder = usePreferencesStore((s) => s.setHomeSectionOrder);
|
||||||
|
|
||||||
|
|
@ -214,6 +207,13 @@ export function SettingsPage() {
|
||||||
(s) => s.setManualSourceSelection,
|
(s) => s.setManualSourceSelection,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const enableDoubleClickToSeek = usePreferencesStore(
|
||||||
|
(s) => s.enableDoubleClickToSeek,
|
||||||
|
);
|
||||||
|
const setEnableDoubleClickToSeek = usePreferencesStore(
|
||||||
|
(s) => s.setEnableDoubleClickToSeek,
|
||||||
|
);
|
||||||
|
|
||||||
const account = useAuthStore((s) => s.account);
|
const account = useAuthStore((s) => s.account);
|
||||||
const updateProfile = useAuthStore((s) => s.setAccountProfile);
|
const updateProfile = useAuthStore((s) => s.setAccountProfile);
|
||||||
const updateDeviceName = useAuthStore((s) => s.updateDeviceName);
|
const updateDeviceName = useAuthStore((s) => s.updateDeviceName);
|
||||||
|
|
@ -266,9 +266,9 @@ export function SettingsPage() {
|
||||||
forceCompactEpisodeView,
|
forceCompactEpisodeView,
|
||||||
enableLowPerformanceMode,
|
enableLowPerformanceMode,
|
||||||
enableHoldToBoost,
|
enableHoldToBoost,
|
||||||
enableDoubleClickToSeek,
|
|
||||||
homeSectionOrder,
|
homeSectionOrder,
|
||||||
manualSourceSelection,
|
manualSourceSelection,
|
||||||
|
enableDoubleClickToSeek,
|
||||||
);
|
);
|
||||||
|
|
||||||
const availableSources = useMemo(() => {
|
const availableSources = useMemo(() => {
|
||||||
|
|
@ -328,8 +328,8 @@ export function SettingsPage() {
|
||||||
state.forceCompactEpisodeView.changed ||
|
state.forceCompactEpisodeView.changed ||
|
||||||
state.enableLowPerformanceMode.changed ||
|
state.enableLowPerformanceMode.changed ||
|
||||||
state.enableHoldToBoost.changed ||
|
state.enableHoldToBoost.changed ||
|
||||||
state.enableDoubleClickToSeek.changed ||
|
state.manualSourceSelection.changed ||
|
||||||
state.manualSourceSelection.changed
|
state.enableDoubleClickToSeek
|
||||||
) {
|
) {
|
||||||
await updateSettings(backendUrl, account, {
|
await updateSettings(backendUrl, account, {
|
||||||
applicationLanguage: state.appLanguage.state,
|
applicationLanguage: state.appLanguage.state,
|
||||||
|
|
@ -351,8 +351,8 @@ export function SettingsPage() {
|
||||||
forceCompactEpisodeView: state.forceCompactEpisodeView.state,
|
forceCompactEpisodeView: state.forceCompactEpisodeView.state,
|
||||||
enableLowPerformanceMode: state.enableLowPerformanceMode.state,
|
enableLowPerformanceMode: state.enableLowPerformanceMode.state,
|
||||||
enableHoldToBoost: state.enableHoldToBoost.state,
|
enableHoldToBoost: state.enableHoldToBoost.state,
|
||||||
enableDoubleClickToSeek: state.enableDoubleClickToSeek.state,
|
|
||||||
manualSourceSelection: state.manualSourceSelection.state,
|
manualSourceSelection: state.manualSourceSelection.state,
|
||||||
|
enableDoubleClickToSeek: state.enableDoubleClickToSeek.state,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (state.deviceName.changed) {
|
if (state.deviceName.changed) {
|
||||||
|
|
@ -393,9 +393,9 @@ export function SettingsPage() {
|
||||||
setForceCompactEpisodeView(state.forceCompactEpisodeView.state);
|
setForceCompactEpisodeView(state.forceCompactEpisodeView.state);
|
||||||
setEnableLowPerformanceMode(state.enableLowPerformanceMode.state);
|
setEnableLowPerformanceMode(state.enableLowPerformanceMode.state);
|
||||||
setEnableHoldToBoost(state.enableHoldToBoost.state);
|
setEnableHoldToBoost(state.enableHoldToBoost.state);
|
||||||
setEnableDoubleClickToSeek(state.enableDoubleClickToSeek.state);
|
|
||||||
setHomeSectionOrder(state.homeSectionOrder.state);
|
setHomeSectionOrder(state.homeSectionOrder.state);
|
||||||
setManualSourceSelection(state.manualSourceSelection.state);
|
setManualSourceSelection(state.manualSourceSelection.state);
|
||||||
|
setEnableDoubleClickToSeek(state.enableDoubleClickToSeek.state);
|
||||||
|
|
||||||
if (state.profile.state) {
|
if (state.profile.state) {
|
||||||
updateProfile(state.profile.state);
|
updateProfile(state.profile.state);
|
||||||
|
|
@ -442,6 +442,7 @@ export function SettingsPage() {
|
||||||
setEnableHoldToBoost,
|
setEnableHoldToBoost,
|
||||||
setHomeSectionOrder,
|
setHomeSectionOrder,
|
||||||
setManualSourceSelection,
|
setManualSourceSelection,
|
||||||
|
setEnableDoubleClickToSeek,
|
||||||
]);
|
]);
|
||||||
return (
|
return (
|
||||||
<SubPageLayout>
|
<SubPageLayout>
|
||||||
|
|
@ -494,10 +495,10 @@ export function SettingsPage() {
|
||||||
setEnableLowPerformanceMode={state.enableLowPerformanceMode.set}
|
setEnableLowPerformanceMode={state.enableLowPerformanceMode.set}
|
||||||
enableHoldToBoost={state.enableHoldToBoost.state}
|
enableHoldToBoost={state.enableHoldToBoost.state}
|
||||||
setEnableHoldToBoost={state.enableHoldToBoost.set}
|
setEnableHoldToBoost={state.enableHoldToBoost.set}
|
||||||
enableDoubleClickToSeek={state.enableDoubleClickToSeek.state}
|
|
||||||
setEnableDoubleClickToSeek={state.enableDoubleClickToSeek.set}
|
|
||||||
manualSourceSelection={state.manualSourceSelection.state}
|
manualSourceSelection={state.manualSourceSelection.state}
|
||||||
setManualSourceSelection={state.manualSourceSelection.set}
|
setManualSourceSelection={state.manualSourceSelection.set}
|
||||||
|
enableDoubleClickToSeek={state.enableDoubleClickToSeek.state}
|
||||||
|
setEnableDoubleClickToSeek={state.enableDoubleClickToSeek.set}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div id="settings-appearance" className="mt-28">
|
<div id="settings-appearance" className="mt-28">
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ export function VerifyPassphrase(props: VerifyPassphraseProps) {
|
||||||
febboxKey: store.febboxKey,
|
febboxKey: store.febboxKey,
|
||||||
enableLowPerformanceMode: store.enableLowPerformanceMode,
|
enableLowPerformanceMode: store.enableLowPerformanceMode,
|
||||||
enableNativeSubtitles: store.enableNativeSubtitles,
|
enableNativeSubtitles: store.enableNativeSubtitles,
|
||||||
|
enableDoubleClickToSeek: store.enableDoubleClickToSeek,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const backendUrl = useBackendUrl();
|
const backendUrl = useBackendUrl();
|
||||||
|
|
|
||||||
|
|
@ -31,10 +31,10 @@ export function PreferencesPart(props: {
|
||||||
setEnableLowPerformanceMode: (v: boolean) => void;
|
setEnableLowPerformanceMode: (v: boolean) => void;
|
||||||
enableHoldToBoost: boolean;
|
enableHoldToBoost: boolean;
|
||||||
setEnableHoldToBoost: (v: boolean) => void;
|
setEnableHoldToBoost: (v: boolean) => void;
|
||||||
enableDoubleClickToSeek: boolean;
|
|
||||||
setEnableDoubleClickToSeek: (v: boolean) => void;
|
|
||||||
manualSourceSelection: boolean;
|
manualSourceSelection: boolean;
|
||||||
setManualSourceSelection: (v: boolean) => void;
|
setManualSourceSelection: (v: boolean) => void;
|
||||||
|
enableDoubleClickToSeek: boolean;
|
||||||
|
setEnableDoubleClickToSeek: (v: boolean) => void;
|
||||||
}) {
|
}) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const sorted = sortLangCodes(appLanguageOptions.map((item) => item.code));
|
const sorted = sortLangCodes(appLanguageOptions.map((item) => item.code));
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,9 @@ export interface PreferencesStore {
|
||||||
enableLowPerformanceMode: boolean;
|
enableLowPerformanceMode: boolean;
|
||||||
enableNativeSubtitles: boolean;
|
enableNativeSubtitles: boolean;
|
||||||
enableHoldToBoost: boolean;
|
enableHoldToBoost: boolean;
|
||||||
enableDoubleClickToSeek: boolean;
|
|
||||||
homeSectionOrder: string[];
|
homeSectionOrder: string[];
|
||||||
manualSourceSelection: boolean;
|
manualSourceSelection: boolean;
|
||||||
|
enableDoubleClickToSeek: boolean;
|
||||||
|
|
||||||
setEnableThumbnails(v: boolean): void;
|
setEnableThumbnails(v: boolean): void;
|
||||||
setEnableAutoplay(v: boolean): void;
|
setEnableAutoplay(v: boolean): void;
|
||||||
|
|
@ -45,9 +45,9 @@ export interface PreferencesStore {
|
||||||
setEnableLowPerformanceMode(v: boolean): void;
|
setEnableLowPerformanceMode(v: boolean): void;
|
||||||
setEnableNativeSubtitles(v: boolean): void;
|
setEnableNativeSubtitles(v: boolean): void;
|
||||||
setEnableHoldToBoost(v: boolean): void;
|
setEnableHoldToBoost(v: boolean): void;
|
||||||
setEnableDoubleClickToSeek(v: boolean): void;
|
|
||||||
setHomeSectionOrder(v: string[]): void;
|
setHomeSectionOrder(v: string[]): void;
|
||||||
setManualSourceSelection(v: boolean): void;
|
setManualSourceSelection(v: boolean): void;
|
||||||
|
setEnableDoubleClickToSeek(v: boolean): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const usePreferencesStore = create(
|
export const usePreferencesStore = create(
|
||||||
|
|
@ -72,9 +72,9 @@ export const usePreferencesStore = create(
|
||||||
enableLowPerformanceMode: false,
|
enableLowPerformanceMode: false,
|
||||||
enableNativeSubtitles: false,
|
enableNativeSubtitles: false,
|
||||||
enableHoldToBoost: true,
|
enableHoldToBoost: true,
|
||||||
enableDoubleClickToSeek: false,
|
|
||||||
homeSectionOrder: ["watching", "bookmarks"],
|
homeSectionOrder: ["watching", "bookmarks"],
|
||||||
manualSourceSelection: false,
|
manualSourceSelection: false,
|
||||||
|
enableDoubleClickToSeek: false,
|
||||||
setEnableThumbnails(v) {
|
setEnableThumbnails(v) {
|
||||||
set((s) => {
|
set((s) => {
|
||||||
s.enableThumbnails = v;
|
s.enableThumbnails = v;
|
||||||
|
|
@ -170,11 +170,6 @@ export const usePreferencesStore = create(
|
||||||
s.enableHoldToBoost = v;
|
s.enableHoldToBoost = v;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
setEnableDoubleClickToSeek(v) {
|
|
||||||
set((s) => {
|
|
||||||
s.enableDoubleClickToSeek = v;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
setHomeSectionOrder(v) {
|
setHomeSectionOrder(v) {
|
||||||
set((s) => {
|
set((s) => {
|
||||||
s.homeSectionOrder = v;
|
s.homeSectionOrder = v;
|
||||||
|
|
@ -185,6 +180,11 @@ export const usePreferencesStore = create(
|
||||||
s.manualSourceSelection = v;
|
s.manualSourceSelection = v;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
setEnableDoubleClickToSeek(v) {
|
||||||
|
set((s) => {
|
||||||
|
s.enableDoubleClickToSeek = v;
|
||||||
|
});
|
||||||
|
},
|
||||||
})),
|
})),
|
||||||
{
|
{
|
||||||
name: "__MW::preferences",
|
name: "__MW::preferences",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue