mirror of
https://github.com/p-stream/p-stream.git
synced 2026-01-11 20:10:32 +00:00
remove DisabledSources and DisableEmbeds since it doesnt work
This commit is contained in:
parent
342219b461
commit
b82c945b05
15 changed files with 16 additions and 171 deletions
|
|
@ -26,10 +26,8 @@ export interface SettingsInput {
|
|||
enableSourceOrder?: boolean;
|
||||
lastSuccessfulSource?: string | null;
|
||||
enableLastSuccessfulSource?: boolean;
|
||||
disabledSources?: string[] | null;
|
||||
embedOrder?: string[] | null;
|
||||
enableEmbedOrder?: boolean;
|
||||
disabledEmbeds?: string[] | null;
|
||||
proxyTmdb?: boolean;
|
||||
enableLowPerformanceMode?: boolean;
|
||||
enableNativeSubtitles?: boolean;
|
||||
|
|
@ -63,10 +61,8 @@ export interface SettingsResponse {
|
|||
enableSourceOrder?: boolean;
|
||||
lastSuccessfulSource?: string | null;
|
||||
enableLastSuccessfulSource?: boolean;
|
||||
disabledSources?: string[] | null;
|
||||
embedOrder?: string[] | null;
|
||||
enableEmbedOrder?: boolean;
|
||||
disabledEmbeds?: string[] | null;
|
||||
proxyTmdb?: boolean;
|
||||
enableLowPerformanceMode?: boolean;
|
||||
enableNativeSubtitles?: boolean;
|
||||
|
|
|
|||
|
|
@ -164,14 +164,12 @@ export function SourceSelectionView({
|
|||
const enableLastSuccessfulSource = usePreferencesStore(
|
||||
(s) => s.enableLastSuccessfulSource,
|
||||
);
|
||||
const disabledSources = usePreferencesStore((s) => s.disabledSources);
|
||||
|
||||
const sources = useMemo(() => {
|
||||
if (!metaType) return [];
|
||||
const allSources = getCachedMetadata()
|
||||
.filter((v) => v.type === "source")
|
||||
.filter((v) => v.mediaTypes?.includes(metaType))
|
||||
.filter((v) => !(disabledSources || []).includes(v.id));
|
||||
.filter((v) => v.mediaTypes?.includes(metaType));
|
||||
|
||||
if (!enableSourceOrder || preferredSourceOrder.length === 0) {
|
||||
// Even without custom source order, prioritize last successful source if enabled
|
||||
|
|
@ -219,7 +217,6 @@ export function SourceSelectionView({
|
|||
metaType,
|
||||
preferredSourceOrder,
|
||||
enableSourceOrder,
|
||||
disabledSources,
|
||||
lastSuccessfulSource,
|
||||
enableLastSuccessfulSource,
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -65,10 +65,8 @@ export function useAuthData() {
|
|||
const setEnableLastSuccessfulSource = usePreferencesStore(
|
||||
(s) => s.setEnableLastSuccessfulSource,
|
||||
);
|
||||
const setDisabledSources = usePreferencesStore((s) => s.setDisabledSources);
|
||||
const setEmbedOrder = usePreferencesStore((s) => s.setEmbedOrder);
|
||||
const setEnableEmbedOrder = usePreferencesStore((s) => s.setEnableEmbedOrder);
|
||||
const setDisabledEmbeds = usePreferencesStore((s) => s.setDisabledEmbeds);
|
||||
|
||||
const setProxyTmdb = usePreferencesStore((s) => s.setProxyTmdb);
|
||||
|
||||
|
|
@ -218,10 +216,6 @@ export function useAuthData() {
|
|||
setEnableLastSuccessfulSource(settings.enableLastSuccessfulSource);
|
||||
}
|
||||
|
||||
if (settings.disabledSources !== undefined) {
|
||||
setDisabledSources(settings.disabledSources ?? []);
|
||||
}
|
||||
|
||||
if (settings.embedOrder !== undefined) {
|
||||
setEmbedOrder(settings.embedOrder ?? []);
|
||||
}
|
||||
|
|
@ -230,10 +224,6 @@ export function useAuthData() {
|
|||
setEnableEmbedOrder(settings.enableEmbedOrder);
|
||||
}
|
||||
|
||||
if (settings.disabledEmbeds !== undefined) {
|
||||
setDisabledEmbeds(settings.disabledEmbeds ?? []);
|
||||
}
|
||||
|
||||
if (settings.proxyTmdb !== undefined) {
|
||||
setProxyTmdb(settings.proxyTmdb);
|
||||
}
|
||||
|
|
@ -310,10 +300,8 @@ export function useAuthData() {
|
|||
setEnableSourceOrder,
|
||||
setLastSuccessfulSource,
|
||||
setEnableLastSuccessfulSource,
|
||||
setDisabledSources,
|
||||
setEmbedOrder,
|
||||
setEnableEmbedOrder,
|
||||
setDisabledEmbeds,
|
||||
setProxyTmdb,
|
||||
setFebboxKey,
|
||||
setdebridToken,
|
||||
|
|
|
|||
|
|
@ -131,19 +131,11 @@ export function useMigration() {
|
|||
enableSourceOrder: preferences.enableSourceOrder,
|
||||
lastSuccessfulSource: preferences.lastSuccessfulSource,
|
||||
enableLastSuccessfulSource: preferences.enableLastSuccessfulSource,
|
||||
disabledSources:
|
||||
preferences.disabledSources.length > 0
|
||||
? preferences.disabledSources
|
||||
: undefined,
|
||||
embedOrder:
|
||||
preferences.embedOrder.length > 0
|
||||
? preferences.embedOrder
|
||||
: undefined,
|
||||
enableEmbedOrder: preferences.enableEmbedOrder,
|
||||
disabledEmbeds:
|
||||
preferences.disabledEmbeds.length > 0
|
||||
? preferences.disabledEmbeds
|
||||
: undefined,
|
||||
proxyTmdb: preferences.proxyTmdb,
|
||||
enableLowPerformanceMode: preferences.enableLowPerformanceMode,
|
||||
enableNativeSubtitles: preferences.enableNativeSubtitles,
|
||||
|
|
|
|||
|
|
@ -12,42 +12,29 @@ export function useEmbedOrderState() {
|
|||
// Get current values from store
|
||||
const embedOrder = usePreferencesStore((s) => s.embedOrder);
|
||||
const enableEmbedOrder = usePreferencesStore((s) => s.enableEmbedOrder);
|
||||
const disabledEmbeds = usePreferencesStore((s) => s.disabledEmbeds);
|
||||
|
||||
// Local state for tracking changes
|
||||
const [localEmbedOrder, setLocalEmbedOrder] = useState(embedOrder);
|
||||
const [localEnableEmbedOrder, setLocalEnableEmbedOrder] =
|
||||
useState(enableEmbedOrder);
|
||||
const [localDisabledEmbeds, setLocalDisabledEmbeds] =
|
||||
useState(disabledEmbeds);
|
||||
|
||||
// Store setters
|
||||
const setEmbedOrder = usePreferencesStore((s) => s.setEmbedOrder);
|
||||
const setEnableEmbedOrder = usePreferencesStore((s) => s.setEnableEmbedOrder);
|
||||
const setDisabledEmbeds = usePreferencesStore((s) => s.setDisabledEmbeds);
|
||||
|
||||
// Check if any changes have been made
|
||||
const hasChanges = useMemo(() => {
|
||||
return (
|
||||
JSON.stringify(localEmbedOrder) !== JSON.stringify(embedOrder) ||
|
||||
localEnableEmbedOrder !== enableEmbedOrder ||
|
||||
JSON.stringify(localDisabledEmbeds) !== JSON.stringify(disabledEmbeds)
|
||||
localEnableEmbedOrder !== enableEmbedOrder
|
||||
);
|
||||
}, [
|
||||
localEmbedOrder,
|
||||
embedOrder,
|
||||
localEnableEmbedOrder,
|
||||
enableEmbedOrder,
|
||||
localDisabledEmbeds,
|
||||
disabledEmbeds,
|
||||
]);
|
||||
}, [localEmbedOrder, embedOrder, localEnableEmbedOrder, enableEmbedOrder]);
|
||||
|
||||
// Reset local state to match store
|
||||
const reset = useCallback(() => {
|
||||
setLocalEmbedOrder(embedOrder);
|
||||
setLocalEnableEmbedOrder(enableEmbedOrder);
|
||||
setLocalDisabledEmbeds(disabledEmbeds);
|
||||
}, [embedOrder, enableEmbedOrder, disabledEmbeds]);
|
||||
}, [embedOrder, enableEmbedOrder]);
|
||||
|
||||
// Save changes to backend and update store
|
||||
const saveChanges = useCallback(async () => {
|
||||
|
|
@ -57,13 +44,11 @@ export function useEmbedOrderState() {
|
|||
await updateSettings(backendUrl, account, {
|
||||
embedOrder: localEmbedOrder,
|
||||
enableEmbedOrder: localEnableEmbedOrder,
|
||||
disabledEmbeds: localDisabledEmbeds,
|
||||
});
|
||||
|
||||
// Update the store with the new values
|
||||
setEmbedOrder(localEmbedOrder);
|
||||
setEnableEmbedOrder(localEnableEmbedOrder);
|
||||
setDisabledEmbeds(localDisabledEmbeds);
|
||||
} catch (error) {
|
||||
console.error("Failed to save embed order settings:", error);
|
||||
throw error;
|
||||
|
|
@ -73,29 +58,24 @@ export function useEmbedOrderState() {
|
|||
backendUrl,
|
||||
localEmbedOrder,
|
||||
localEnableEmbedOrder,
|
||||
localDisabledEmbeds,
|
||||
setEmbedOrder,
|
||||
setEnableEmbedOrder,
|
||||
setDisabledEmbeds,
|
||||
]);
|
||||
|
||||
// Update local state when store changes
|
||||
useEffect(() => {
|
||||
setLocalEmbedOrder(embedOrder);
|
||||
setLocalEnableEmbedOrder(enableEmbedOrder);
|
||||
setLocalDisabledEmbeds(disabledEmbeds);
|
||||
}, [embedOrder, enableEmbedOrder, disabledEmbeds]);
|
||||
}, [embedOrder, enableEmbedOrder]);
|
||||
|
||||
return {
|
||||
// Current values
|
||||
embedOrder: localEmbedOrder,
|
||||
enableEmbedOrder: localEnableEmbedOrder,
|
||||
disabledEmbeds: localDisabledEmbeds,
|
||||
|
||||
// Setters
|
||||
setEmbedOrder: setLocalEmbedOrder,
|
||||
setEnableEmbedOrder: setLocalEnableEmbedOrder,
|
||||
setDisabledEmbeds: setLocalDisabledEmbeds,
|
||||
|
||||
// State management
|
||||
hasChanges,
|
||||
|
|
|
|||
|
|
@ -163,10 +163,8 @@ export function useScrape() {
|
|||
const enableLastSuccessfulSource = usePreferencesStore(
|
||||
(s) => s.enableLastSuccessfulSource,
|
||||
);
|
||||
const disabledSources = usePreferencesStore((s) => s.disabledSources);
|
||||
const preferredEmbedOrder = usePreferencesStore((s) => s.embedOrder);
|
||||
const enableEmbedOrder = usePreferencesStore((s) => s.enableEmbedOrder);
|
||||
const disabledEmbeds = usePreferencesStore((s) => s.disabledEmbeds);
|
||||
|
||||
const startScraping = useCallback(
|
||||
async (media: ScrapeMedia, startFromSourceId?: string) => {
|
||||
|
|
@ -194,13 +192,9 @@ export function useScrape() {
|
|||
? playerState.failedEmbedsPerMedia[mediaKey] || {}
|
||||
: {};
|
||||
|
||||
// Start with all available sources (filtered by disabled and failed ones)
|
||||
// Start with all available sources (filtered by failed ones only)
|
||||
let baseSourceOrder = allSources
|
||||
.filter(
|
||||
(source) =>
|
||||
!(disabledSources || []).includes(source.id) &&
|
||||
!failedSources.includes(source.id),
|
||||
)
|
||||
.filter((source) => !failedSources.includes(source.id))
|
||||
.map((source) => source.id);
|
||||
|
||||
// Apply custom source ordering if enabled
|
||||
|
|
@ -244,12 +238,10 @@ export function useScrape() {
|
|||
// Collect all failed embed IDs across all sources for current media
|
||||
const allFailedEmbedIds = Object.values(failedEmbeds).flat();
|
||||
|
||||
// Filter out disabled and failed embeds from the embed order
|
||||
// Filter out failed embeds from the embed order
|
||||
const filteredEmbedOrder = enableEmbedOrder
|
||||
? (preferredEmbedOrder || []).filter(
|
||||
(id) =>
|
||||
!(disabledEmbeds || []).includes(id) &&
|
||||
!allFailedEmbedIds.includes(id),
|
||||
(id) => !allFailedEmbedIds.includes(id),
|
||||
)
|
||||
: undefined;
|
||||
|
||||
|
|
@ -304,10 +296,8 @@ export function useScrape() {
|
|||
enableSourceOrder,
|
||||
lastSuccessfulSource,
|
||||
enableLastSuccessfulSource,
|
||||
disabledSources,
|
||||
preferredEmbedOrder,
|
||||
enableEmbedOrder,
|
||||
disabledEmbeds,
|
||||
],
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -64,10 +64,8 @@ export function useSettingsState(
|
|||
enableSourceOrder: boolean,
|
||||
lastSuccessfulSource: string | null,
|
||||
enableLastSuccessfulSource: boolean,
|
||||
disabledSources: string[],
|
||||
embedOrder: string[],
|
||||
enableEmbedOrder: boolean,
|
||||
disabledEmbeds: string[],
|
||||
proxyTmdb: boolean,
|
||||
enableSkipCredits: boolean,
|
||||
enableImageLogos: boolean,
|
||||
|
|
@ -190,12 +188,6 @@ export function useSettingsState(
|
|||
resetEnableLastSuccessfulSource,
|
||||
enableLastSuccessfulSourceChanged,
|
||||
] = useDerived(enableLastSuccessfulSource);
|
||||
const [
|
||||
disabledSourcesState,
|
||||
setDisabledSourcesState,
|
||||
resetDisabledSources,
|
||||
disabledSourcesChanged,
|
||||
] = useDerived(disabledSources);
|
||||
const [
|
||||
embedOrderState,
|
||||
setEmbedOrderState,
|
||||
|
|
@ -208,12 +200,6 @@ export function useSettingsState(
|
|||
resetEnableEmbedOrder,
|
||||
enableEmbedOrderChanged,
|
||||
] = useDerived(enableEmbedOrder);
|
||||
const [
|
||||
disabledEmbedsState,
|
||||
setDisabledEmbedsState,
|
||||
resetDisabledEmbeds,
|
||||
disabledEmbedsChanged,
|
||||
] = useDerived(disabledEmbeds);
|
||||
const [proxyTmdbState, setProxyTmdbState, resetProxyTmdb, proxyTmdbChanged] =
|
||||
useDerived(proxyTmdb);
|
||||
const [
|
||||
|
|
@ -300,10 +286,8 @@ export function useSettingsState(
|
|||
resetEnableSourceOrder();
|
||||
resetLastSuccessfulSource();
|
||||
resetEnableLastSuccessfulSource();
|
||||
resetDisabledSources();
|
||||
resetEmbedOrder();
|
||||
resetEnableEmbedOrder();
|
||||
resetDisabledEmbeds();
|
||||
resetProxyTmdb();
|
||||
resetEnableCarouselView();
|
||||
resetEnableMinimalCards();
|
||||
|
|
@ -340,10 +324,8 @@ export function useSettingsState(
|
|||
enableSourceOrderChanged ||
|
||||
lastSuccessfulSourceChanged ||
|
||||
enableLastSuccessfulSourceChanged ||
|
||||
disabledSourcesChanged ||
|
||||
embedOrderChanged ||
|
||||
enableEmbedOrderChanged ||
|
||||
disabledEmbedsChanged ||
|
||||
proxyTmdbChanged ||
|
||||
enableCarouselViewChanged ||
|
||||
enableMinimalCardsChanged ||
|
||||
|
|
@ -474,11 +456,6 @@ export function useSettingsState(
|
|||
set: setProxyTmdbState,
|
||||
changed: proxyTmdbChanged,
|
||||
},
|
||||
disabledSources: {
|
||||
state: disabledSourcesState,
|
||||
set: setDisabledSourcesState,
|
||||
changed: disabledSourcesChanged,
|
||||
},
|
||||
embedOrder: {
|
||||
state: embedOrderState,
|
||||
set: setEmbedOrderState,
|
||||
|
|
@ -489,11 +466,6 @@ export function useSettingsState(
|
|||
set: setEnableEmbedOrderState,
|
||||
changed: enableEmbedOrderChanged,
|
||||
},
|
||||
disabledEmbeds: {
|
||||
state: disabledEmbedsState,
|
||||
set: setDisabledEmbedsState,
|
||||
changed: disabledEmbedsChanged,
|
||||
},
|
||||
enableCarouselView: {
|
||||
state: enableCarouselViewState,
|
||||
set: setEnableCarouselViewState,
|
||||
|
|
|
|||
|
|
@ -413,9 +413,6 @@ export function SettingsPage() {
|
|||
(s) => s.setEnableLastSuccessfulSource,
|
||||
);
|
||||
|
||||
const disabledSources = usePreferencesStore((s) => s.disabledSources);
|
||||
const setDisabledSources = usePreferencesStore((s) => s.setDisabledSources);
|
||||
|
||||
// These are commented because the EmbedOrderPart is on the admin page and not on the settings page.
|
||||
const embedOrder = usePreferencesStore((s) => s.embedOrder);
|
||||
// const setEmbedOrder = usePreferencesStore((s) => s.setEmbedOrder);
|
||||
|
|
@ -423,7 +420,6 @@ export function SettingsPage() {
|
|||
const enableEmbedOrder = usePreferencesStore((s) => s.enableEmbedOrder);
|
||||
// const setEnableEmbedOrder = usePreferencesStore((s) => s.setEnableEmbedOrder);
|
||||
|
||||
const disabledEmbeds = usePreferencesStore((s) => s.disabledEmbeds);
|
||||
// const setDisabledEmbeds = usePreferencesStore((s) => s.setDisabledEmbeds);
|
||||
|
||||
const enableDiscover = usePreferencesStore((s) => s.enableDiscover);
|
||||
|
|
@ -560,10 +556,8 @@ export function SettingsPage() {
|
|||
enableSourceOrder,
|
||||
lastSuccessfulSource,
|
||||
enableLastSuccessfulSource,
|
||||
disabledSources,
|
||||
embedOrder,
|
||||
enableEmbedOrder,
|
||||
disabledEmbeds,
|
||||
proxyTmdb,
|
||||
enableSkipCredits,
|
||||
enableImageLogos,
|
||||
|
|
@ -634,7 +628,6 @@ export function SettingsPage() {
|
|||
state.enableSourceOrder.changed ||
|
||||
state.lastSuccessfulSource.changed ||
|
||||
state.enableLastSuccessfulSource.changed ||
|
||||
state.disabledSources.changed ||
|
||||
state.proxyTmdb.changed ||
|
||||
state.enableCarouselView.changed ||
|
||||
state.enableMinimalCards.changed ||
|
||||
|
|
@ -664,7 +657,6 @@ export function SettingsPage() {
|
|||
enableSourceOrder: state.enableSourceOrder.state,
|
||||
lastSuccessfulSource: state.lastSuccessfulSource.state,
|
||||
enableLastSuccessfulSource: state.enableLastSuccessfulSource.state,
|
||||
disabledSources: state.disabledSources.state,
|
||||
proxyTmdb: state.proxyTmdb.state,
|
||||
enableCarouselView: state.enableCarouselView.state,
|
||||
enableMinimalCards: state.enableMinimalCards.state,
|
||||
|
|
@ -713,7 +705,6 @@ export function SettingsPage() {
|
|||
setEnableSourceOrder(state.enableSourceOrder.state);
|
||||
setLastSuccessfulSource(state.lastSuccessfulSource.state);
|
||||
setEnableLastSuccessfulSource(state.enableLastSuccessfulSource.state);
|
||||
setDisabledSources(state.disabledSources.state);
|
||||
setAppLanguage(state.appLanguage.state);
|
||||
setTheme(state.theme.state);
|
||||
setSubStyling(state.subtitleStyling.state);
|
||||
|
|
@ -768,7 +759,6 @@ export function SettingsPage() {
|
|||
setEnableSourceOrder,
|
||||
setLastSuccessfulSource,
|
||||
setEnableLastSuccessfulSource,
|
||||
setDisabledSources,
|
||||
setAppLanguage,
|
||||
setTheme,
|
||||
setSubStyling,
|
||||
|
|
@ -859,8 +849,6 @@ export function SettingsPage() {
|
|||
setEnableLastSuccessfulSource={
|
||||
state.enableLastSuccessfulSource.set
|
||||
}
|
||||
disabledSources={state.disabledSources.state}
|
||||
setDisabledSources={state.disabledSources.set}
|
||||
enableLowPerformanceMode={state.enableLowPerformanceMode.state}
|
||||
setEnableLowPerformanceMode={state.enableLowPerformanceMode.set}
|
||||
enableHoldToBoost={state.enableHoldToBoost.state}
|
||||
|
|
|
|||
|
|
@ -47,8 +47,6 @@ export function AdminPage() {
|
|||
setEmbedOrder={embedOrderState.setEmbedOrder}
|
||||
enableEmbedOrder={embedOrderState.enableEmbedOrder}
|
||||
setEnableEmbedOrder={embedOrderState.setEnableEmbedOrder}
|
||||
disabledEmbeds={embedOrderState.disabledEmbeds}
|
||||
setDisabledEmbeds={embedOrderState.setDisabledEmbeds}
|
||||
/>
|
||||
{/* <ProgressCleanupPart /> */}
|
||||
</ThinContainer>
|
||||
|
|
|
|||
|
|
@ -375,11 +375,6 @@ export function MigrationUploadPage() {
|
|||
uploadedData.settings.enableLastSuccessfulSource,
|
||||
);
|
||||
}
|
||||
if (uploadedData.settings.disabledSources !== undefined) {
|
||||
preferencesStore.setDisabledSources(
|
||||
uploadedData.settings.disabledSources,
|
||||
);
|
||||
}
|
||||
if (uploadedData.settings.embedOrder !== undefined) {
|
||||
preferencesStore.setEmbedOrder(uploadedData.settings.embedOrder);
|
||||
}
|
||||
|
|
@ -388,11 +383,6 @@ export function MigrationUploadPage() {
|
|||
uploadedData.settings.enableEmbedOrder,
|
||||
);
|
||||
}
|
||||
if (uploadedData.settings.disabledEmbeds !== undefined) {
|
||||
preferencesStore.setDisabledEmbeds(
|
||||
uploadedData.settings.disabledEmbeds,
|
||||
);
|
||||
}
|
||||
if (uploadedData.settings.proxyTmdb !== undefined) {
|
||||
preferencesStore.setProxyTmdb(uploadedData.settings.proxyTmdb);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { useNavigate } from "react-router-dom";
|
|||
import { getAllProviders, getProviders } from "@/backend/providers/providers";
|
||||
import { Button } from "@/components/buttons/Button";
|
||||
import { Toggle } from "@/components/buttons/Toggle";
|
||||
import { SortableListWithToggles } from "@/components/form/SortableListWithToggles";
|
||||
import { SortableList } from "@/components/form/SortableList";
|
||||
import { Heading2 } from "@/components/utils/Text";
|
||||
|
||||
interface EmbedOrderPartProps {
|
||||
|
|
@ -13,8 +13,6 @@ interface EmbedOrderPartProps {
|
|||
setEmbedOrder: (order: string[]) => void;
|
||||
enableEmbedOrder: boolean;
|
||||
setEnableEmbedOrder: (enabled: boolean) => void;
|
||||
disabledEmbeds: string[];
|
||||
setDisabledEmbeds: (disabled: string[]) => void;
|
||||
}
|
||||
|
||||
export function EmbedOrderPart({
|
||||
|
|
@ -22,8 +20,6 @@ export function EmbedOrderPart({
|
|||
setEmbedOrder,
|
||||
enableEmbedOrder,
|
||||
setEnableEmbedOrder,
|
||||
disabledEmbeds,
|
||||
setDisabledEmbeds,
|
||||
}: EmbedOrderPartProps) {
|
||||
const { t } = useTranslation();
|
||||
const navigate = useNavigate();
|
||||
|
|
@ -39,7 +35,6 @@ export function EmbedOrderPart({
|
|||
id: e.id,
|
||||
name: e.name || e.id,
|
||||
disabled: !currentDeviceEmbeds.find((embed) => embed.id === e.id),
|
||||
enabled: !disabledEmbeds.includes(e.id),
|
||||
}));
|
||||
}
|
||||
|
||||
|
|
@ -48,16 +43,8 @@ export function EmbedOrderPart({
|
|||
id,
|
||||
name: allEmbeds.find((e) => e.id === id)?.name || id,
|
||||
disabled: !currentDeviceEmbeds.find((e) => e.id === id),
|
||||
enabled: !disabledEmbeds.includes(id),
|
||||
}));
|
||||
}, [embedOrder, allEmbeds, disabledEmbeds]);
|
||||
|
||||
const handleEmbedToggle = (embedId: string) => {
|
||||
const newDisabledEmbeds = disabledEmbeds.includes(embedId)
|
||||
? disabledEmbeds.filter((id) => id !== embedId)
|
||||
: [...disabledEmbeds, embedId];
|
||||
setDisabledEmbeds(newDisabledEmbeds);
|
||||
};
|
||||
}, [embedOrder, allEmbeds]);
|
||||
|
||||
return (
|
||||
<div className="space-y-6">
|
||||
|
|
@ -91,10 +78,9 @@ export function EmbedOrderPart({
|
|||
|
||||
{enableEmbedOrder && (
|
||||
<div className="w-full flex flex-col gap-4">
|
||||
<SortableListWithToggles
|
||||
<SortableList
|
||||
items={embedItems}
|
||||
setItems={(items) => setEmbedOrder(items.map((item) => item.id))}
|
||||
onToggle={handleEmbedToggle}
|
||||
/>
|
||||
<Button
|
||||
className="max-w-[25rem]"
|
||||
|
|
|
|||
|
|
@ -53,10 +53,8 @@ export function VerifyPassphrase(props: VerifyPassphraseProps) {
|
|||
forceCompactEpisodeView: store.forceCompactEpisodeView,
|
||||
sourceOrder: store.sourceOrder,
|
||||
enableSourceOrder: store.enableSourceOrder,
|
||||
disabledSources: store.disabledSources,
|
||||
embedOrder: store.embedOrder,
|
||||
enableEmbedOrder: store.enableEmbedOrder,
|
||||
disabledEmbeds: store.disabledEmbeds,
|
||||
proxyTmdb: store.proxyTmdb,
|
||||
febboxKey: store.febboxKey,
|
||||
debridToken: store.debridToken,
|
||||
|
|
|
|||
|
|
@ -153,15 +153,13 @@ export function SourceSelectPart(props: { media: ScrapeMedia }) {
|
|||
const enableLastSuccessfulSource = usePreferencesStore(
|
||||
(s) => s.enableLastSuccessfulSource,
|
||||
);
|
||||
const disabledSources = usePreferencesStore((s) => s.disabledSources);
|
||||
|
||||
const sources = useMemo(() => {
|
||||
const metaType = props.media.type;
|
||||
if (!metaType) return [];
|
||||
const allSources = getCachedMetadata()
|
||||
.filter((v) => v.type === "source")
|
||||
.filter((v) => v.mediaTypes?.includes(metaType))
|
||||
.filter((v) => !(disabledSources || []).includes(v.id));
|
||||
.filter((v) => v.mediaTypes?.includes(metaType));
|
||||
|
||||
if (!enableSourceOrder || preferredSourceOrder.length === 0) {
|
||||
// Even without custom source order, prioritize last successful source if enabled
|
||||
|
|
@ -209,7 +207,6 @@ export function SourceSelectPart(props: { media: ScrapeMedia }) {
|
|||
props.media.type,
|
||||
preferredSourceOrder,
|
||||
enableSourceOrder,
|
||||
disabledSources,
|
||||
lastSuccessfulSource,
|
||||
enableLastSuccessfulSource,
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { Button } from "@/components/buttons/Button";
|
|||
import { Toggle } from "@/components/buttons/Toggle";
|
||||
import { FlagIcon } from "@/components/FlagIcon";
|
||||
import { Dropdown } from "@/components/form/Dropdown";
|
||||
import { SortableListWithToggles } from "@/components/form/SortableListWithToggles";
|
||||
import { SortableList } from "@/components/form/SortableList";
|
||||
import { Heading1 } from "@/components/utils/Text";
|
||||
import { appLanguageOptions } from "@/setup/i18n";
|
||||
import { useOverlayStack } from "@/stores/interface/overlayStack";
|
||||
|
|
@ -30,8 +30,6 @@ export function PreferencesPart(props: {
|
|||
setenableSourceOrder: (v: boolean) => void;
|
||||
enableLastSuccessfulSource: boolean;
|
||||
setEnableLastSuccessfulSource: (v: boolean) => void;
|
||||
disabledSources: string[];
|
||||
setDisabledSources: (v: string[]) => void;
|
||||
enableLowPerformanceMode: boolean;
|
||||
setEnableLowPerformanceMode: (v: boolean) => void;
|
||||
enableHoldToBoost: boolean;
|
||||
|
|
@ -69,9 +67,8 @@ export function PreferencesPart(props: {
|
|||
id,
|
||||
name: allSources.find((s) => s.id === id)?.name || id,
|
||||
disabled: !currentDeviceSources.find((s) => s.id === id),
|
||||
enabled: !props.disabledSources.includes(id),
|
||||
}));
|
||||
}, [props.sourceOrder, props.disabledSources, allSources]);
|
||||
}, [props.sourceOrder, allSources]);
|
||||
|
||||
const navigate = useNavigate();
|
||||
|
||||
|
|
@ -79,13 +76,6 @@ export function PreferencesPart(props: {
|
|||
props.setEnableLowPerformanceMode(!props.enableLowPerformanceMode);
|
||||
};
|
||||
|
||||
const handleSourceToggle = (sourceId: string) => {
|
||||
const newDisabledSources = props.disabledSources.includes(sourceId)
|
||||
? props.disabledSources.filter((id) => id !== sourceId)
|
||||
: [...props.disabledSources, sourceId];
|
||||
props.setDisabledSources(newDisabledSources);
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="space-y-12">
|
||||
<Heading1 border>{t("settings.preferences.title")}</Heading1>
|
||||
|
|
@ -366,12 +356,11 @@ export function PreferencesPart(props: {
|
|||
|
||||
{props.enableSourceOrder && (
|
||||
<div className="w-full flex flex-col gap-4">
|
||||
<SortableListWithToggles
|
||||
<SortableList
|
||||
items={sourceItems}
|
||||
setItems={(items) =>
|
||||
props.setSourceOrder(items.map((item) => item.id))
|
||||
}
|
||||
onToggle={handleSourceToggle}
|
||||
/>
|
||||
<Button
|
||||
className="max-w-[25rem]"
|
||||
|
|
|
|||
|
|
@ -22,10 +22,8 @@ export interface PreferencesStore {
|
|||
enableSourceOrder: boolean;
|
||||
lastSuccessfulSource: string | null;
|
||||
enableLastSuccessfulSource: boolean;
|
||||
disabledSources: string[];
|
||||
embedOrder: string[];
|
||||
enableEmbedOrder: boolean;
|
||||
disabledEmbeds: string[];
|
||||
proxyTmdb: boolean;
|
||||
febboxKey: string | null;
|
||||
debridToken: string | null;
|
||||
|
|
@ -53,10 +51,8 @@ export interface PreferencesStore {
|
|||
setEnableSourceOrder(v: boolean): void;
|
||||
setLastSuccessfulSource(v: string | null): void;
|
||||
setEnableLastSuccessfulSource(v: boolean): void;
|
||||
setDisabledSources(v: string[]): void;
|
||||
setEmbedOrder(v: string[]): void;
|
||||
setEnableEmbedOrder(v: boolean): void;
|
||||
setDisabledEmbeds(v: string[]): void;
|
||||
setProxyTmdb(v: boolean): void;
|
||||
setFebboxKey(v: string | null): void;
|
||||
setdebridToken(v: string | null): void;
|
||||
|
|
@ -88,10 +84,8 @@ export const usePreferencesStore = create(
|
|||
enableSourceOrder: false,
|
||||
lastSuccessfulSource: null,
|
||||
enableLastSuccessfulSource: false,
|
||||
disabledSources: [],
|
||||
embedOrder: [],
|
||||
enableEmbedOrder: false,
|
||||
disabledEmbeds: [],
|
||||
proxyTmdb: false,
|
||||
febboxKey: null,
|
||||
debridToken: null,
|
||||
|
|
@ -174,11 +168,6 @@ export const usePreferencesStore = create(
|
|||
s.enableLastSuccessfulSource = v;
|
||||
});
|
||||
},
|
||||
setDisabledSources(v) {
|
||||
set((s) => {
|
||||
s.disabledSources = v;
|
||||
});
|
||||
},
|
||||
setEmbedOrder(v) {
|
||||
set((s) => {
|
||||
s.embedOrder = v;
|
||||
|
|
@ -189,11 +178,6 @@ export const usePreferencesStore = create(
|
|||
s.enableEmbedOrder = v;
|
||||
});
|
||||
},
|
||||
setDisabledEmbeds(v) {
|
||||
set((s) => {
|
||||
s.disabledEmbeds = v;
|
||||
});
|
||||
},
|
||||
setProxyTmdb(v) {
|
||||
set((s) => {
|
||||
s.proxyTmdb = v;
|
||||
|
|
|
|||
Loading…
Reference in a new issue