pstream is dead; long live pstream taciturnaxolotl.github.io/pstream-ng/
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

remove DisabledSources and DisableEmbeds since it doesnt work

Pas b82c945b 342219b4

+16 -171
-4
src/backend/accounts/settings.ts
··· 26 26 enableSourceOrder?: boolean; 27 27 lastSuccessfulSource?: string | null; 28 28 enableLastSuccessfulSource?: boolean; 29 - disabledSources?: string[] | null; 30 29 embedOrder?: string[] | null; 31 30 enableEmbedOrder?: boolean; 32 - disabledEmbeds?: string[] | null; 33 31 proxyTmdb?: boolean; 34 32 enableLowPerformanceMode?: boolean; 35 33 enableNativeSubtitles?: boolean; ··· 63 61 enableSourceOrder?: boolean; 64 62 lastSuccessfulSource?: string | null; 65 63 enableLastSuccessfulSource?: boolean; 66 - disabledSources?: string[] | null; 67 64 embedOrder?: string[] | null; 68 65 enableEmbedOrder?: boolean; 69 - disabledEmbeds?: string[] | null; 70 66 proxyTmdb?: boolean; 71 67 enableLowPerformanceMode?: boolean; 72 68 enableNativeSubtitles?: boolean;
+1 -4
src/components/player/atoms/settings/SourceSelectingView.tsx
··· 164 164 const enableLastSuccessfulSource = usePreferencesStore( 165 165 (s) => s.enableLastSuccessfulSource, 166 166 ); 167 - const disabledSources = usePreferencesStore((s) => s.disabledSources); 168 167 169 168 const sources = useMemo(() => { 170 169 if (!metaType) return []; 171 170 const allSources = getCachedMetadata() 172 171 .filter((v) => v.type === "source") 173 - .filter((v) => v.mediaTypes?.includes(metaType)) 174 - .filter((v) => !(disabledSources || []).includes(v.id)); 172 + .filter((v) => v.mediaTypes?.includes(metaType)); 175 173 176 174 if (!enableSourceOrder || preferredSourceOrder.length === 0) { 177 175 // Even without custom source order, prioritize last successful source if enabled ··· 219 217 metaType, 220 218 preferredSourceOrder, 221 219 enableSourceOrder, 222 - disabledSources, 223 220 lastSuccessfulSource, 224 221 enableLastSuccessfulSource, 225 222 ]);
-12
src/hooks/auth/useAuthData.ts
··· 65 65 const setEnableLastSuccessfulSource = usePreferencesStore( 66 66 (s) => s.setEnableLastSuccessfulSource, 67 67 ); 68 - const setDisabledSources = usePreferencesStore((s) => s.setDisabledSources); 69 68 const setEmbedOrder = usePreferencesStore((s) => s.setEmbedOrder); 70 69 const setEnableEmbedOrder = usePreferencesStore((s) => s.setEnableEmbedOrder); 71 - const setDisabledEmbeds = usePreferencesStore((s) => s.setDisabledEmbeds); 72 70 73 71 const setProxyTmdb = usePreferencesStore((s) => s.setProxyTmdb); 74 72 ··· 218 216 setEnableLastSuccessfulSource(settings.enableLastSuccessfulSource); 219 217 } 220 218 221 - if (settings.disabledSources !== undefined) { 222 - setDisabledSources(settings.disabledSources ?? []); 223 - } 224 - 225 219 if (settings.embedOrder !== undefined) { 226 220 setEmbedOrder(settings.embedOrder ?? []); 227 221 } 228 222 229 223 if (settings.enableEmbedOrder !== undefined) { 230 224 setEnableEmbedOrder(settings.enableEmbedOrder); 231 - } 232 - 233 - if (settings.disabledEmbeds !== undefined) { 234 - setDisabledEmbeds(settings.disabledEmbeds ?? []); 235 225 } 236 226 237 227 if (settings.proxyTmdb !== undefined) { ··· 310 300 setEnableSourceOrder, 311 301 setLastSuccessfulSource, 312 302 setEnableLastSuccessfulSource, 313 - setDisabledSources, 314 303 setEmbedOrder, 315 304 setEnableEmbedOrder, 316 - setDisabledEmbeds, 317 305 setProxyTmdb, 318 306 setFebboxKey, 319 307 setdebridToken,
-8
src/hooks/auth/useMigration.ts
··· 131 131 enableSourceOrder: preferences.enableSourceOrder, 132 132 lastSuccessfulSource: preferences.lastSuccessfulSource, 133 133 enableLastSuccessfulSource: preferences.enableLastSuccessfulSource, 134 - disabledSources: 135 - preferences.disabledSources.length > 0 136 - ? preferences.disabledSources 137 - : undefined, 138 134 embedOrder: 139 135 preferences.embedOrder.length > 0 140 136 ? preferences.embedOrder 141 137 : undefined, 142 138 enableEmbedOrder: preferences.enableEmbedOrder, 143 - disabledEmbeds: 144 - preferences.disabledEmbeds.length > 0 145 - ? preferences.disabledEmbeds 146 - : undefined, 147 139 proxyTmdb: preferences.proxyTmdb, 148 140 enableLowPerformanceMode: preferences.enableLowPerformanceMode, 149 141 enableNativeSubtitles: preferences.enableNativeSubtitles,
+4 -24
src/hooks/useEmbedOrderState.ts
··· 12 12 // Get current values from store 13 13 const embedOrder = usePreferencesStore((s) => s.embedOrder); 14 14 const enableEmbedOrder = usePreferencesStore((s) => s.enableEmbedOrder); 15 - const disabledEmbeds = usePreferencesStore((s) => s.disabledEmbeds); 16 15 17 16 // Local state for tracking changes 18 17 const [localEmbedOrder, setLocalEmbedOrder] = useState(embedOrder); 19 18 const [localEnableEmbedOrder, setLocalEnableEmbedOrder] = 20 19 useState(enableEmbedOrder); 21 - const [localDisabledEmbeds, setLocalDisabledEmbeds] = 22 - useState(disabledEmbeds); 23 20 24 21 // Store setters 25 22 const setEmbedOrder = usePreferencesStore((s) => s.setEmbedOrder); 26 23 const setEnableEmbedOrder = usePreferencesStore((s) => s.setEnableEmbedOrder); 27 - const setDisabledEmbeds = usePreferencesStore((s) => s.setDisabledEmbeds); 28 24 29 25 // Check if any changes have been made 30 26 const hasChanges = useMemo(() => { 31 27 return ( 32 28 JSON.stringify(localEmbedOrder) !== JSON.stringify(embedOrder) || 33 - localEnableEmbedOrder !== enableEmbedOrder || 34 - JSON.stringify(localDisabledEmbeds) !== JSON.stringify(disabledEmbeds) 29 + localEnableEmbedOrder !== enableEmbedOrder 35 30 ); 36 - }, [ 37 - localEmbedOrder, 38 - embedOrder, 39 - localEnableEmbedOrder, 40 - enableEmbedOrder, 41 - localDisabledEmbeds, 42 - disabledEmbeds, 43 - ]); 31 + }, [localEmbedOrder, embedOrder, localEnableEmbedOrder, enableEmbedOrder]); 44 32 45 33 // Reset local state to match store 46 34 const reset = useCallback(() => { 47 35 setLocalEmbedOrder(embedOrder); 48 36 setLocalEnableEmbedOrder(enableEmbedOrder); 49 - setLocalDisabledEmbeds(disabledEmbeds); 50 - }, [embedOrder, enableEmbedOrder, disabledEmbeds]); 37 + }, [embedOrder, enableEmbedOrder]); 51 38 52 39 // Save changes to backend and update store 53 40 const saveChanges = useCallback(async () => { ··· 57 44 await updateSettings(backendUrl, account, { 58 45 embedOrder: localEmbedOrder, 59 46 enableEmbedOrder: localEnableEmbedOrder, 60 - disabledEmbeds: localDisabledEmbeds, 61 47 }); 62 48 63 49 // Update the store with the new values 64 50 setEmbedOrder(localEmbedOrder); 65 51 setEnableEmbedOrder(localEnableEmbedOrder); 66 - setDisabledEmbeds(localDisabledEmbeds); 67 52 } catch (error) { 68 53 console.error("Failed to save embed order settings:", error); 69 54 throw error; ··· 73 58 backendUrl, 74 59 localEmbedOrder, 75 60 localEnableEmbedOrder, 76 - localDisabledEmbeds, 77 61 setEmbedOrder, 78 62 setEnableEmbedOrder, 79 - setDisabledEmbeds, 80 63 ]); 81 64 82 65 // Update local state when store changes 83 66 useEffect(() => { 84 67 setLocalEmbedOrder(embedOrder); 85 68 setLocalEnableEmbedOrder(enableEmbedOrder); 86 - setLocalDisabledEmbeds(disabledEmbeds); 87 - }, [embedOrder, enableEmbedOrder, disabledEmbeds]); 69 + }, [embedOrder, enableEmbedOrder]); 88 70 89 71 return { 90 72 // Current values 91 73 embedOrder: localEmbedOrder, 92 74 enableEmbedOrder: localEnableEmbedOrder, 93 - disabledEmbeds: localDisabledEmbeds, 94 75 95 76 // Setters 96 77 setEmbedOrder: setLocalEmbedOrder, 97 78 setEnableEmbedOrder: setLocalEnableEmbedOrder, 98 - setDisabledEmbeds: setLocalDisabledEmbeds, 99 79 100 80 // State management 101 81 hasChanges,
+4 -14
src/hooks/useProviderScrape.tsx
··· 163 163 const enableLastSuccessfulSource = usePreferencesStore( 164 164 (s) => s.enableLastSuccessfulSource, 165 165 ); 166 - const disabledSources = usePreferencesStore((s) => s.disabledSources); 167 166 const preferredEmbedOrder = usePreferencesStore((s) => s.embedOrder); 168 167 const enableEmbedOrder = usePreferencesStore((s) => s.enableEmbedOrder); 169 - const disabledEmbeds = usePreferencesStore((s) => s.disabledEmbeds); 170 168 171 169 const startScraping = useCallback( 172 170 async (media: ScrapeMedia, startFromSourceId?: string) => { ··· 194 192 ? playerState.failedEmbedsPerMedia[mediaKey] || {} 195 193 : {}; 196 194 197 - // Start with all available sources (filtered by disabled and failed ones) 195 + // Start with all available sources (filtered by failed ones only) 198 196 let baseSourceOrder = allSources 199 - .filter( 200 - (source) => 201 - !(disabledSources || []).includes(source.id) && 202 - !failedSources.includes(source.id), 203 - ) 197 + .filter((source) => !failedSources.includes(source.id)) 204 198 .map((source) => source.id); 205 199 206 200 // Apply custom source ordering if enabled ··· 244 238 // Collect all failed embed IDs across all sources for current media 245 239 const allFailedEmbedIds = Object.values(failedEmbeds).flat(); 246 240 247 - // Filter out disabled and failed embeds from the embed order 241 + // Filter out failed embeds from the embed order 248 242 const filteredEmbedOrder = enableEmbedOrder 249 243 ? (preferredEmbedOrder || []).filter( 250 - (id) => 251 - !(disabledEmbeds || []).includes(id) && 252 - !allFailedEmbedIds.includes(id), 244 + (id) => !allFailedEmbedIds.includes(id), 253 245 ) 254 246 : undefined; 255 247 ··· 304 296 enableSourceOrder, 305 297 lastSuccessfulSource, 306 298 enableLastSuccessfulSource, 307 - disabledSources, 308 299 preferredEmbedOrder, 309 300 enableEmbedOrder, 310 - disabledEmbeds, 311 301 ], 312 302 ); 313 303
-28
src/hooks/useSettingsState.ts
··· 64 64 enableSourceOrder: boolean, 65 65 lastSuccessfulSource: string | null, 66 66 enableLastSuccessfulSource: boolean, 67 - disabledSources: string[], 68 67 embedOrder: string[], 69 68 enableEmbedOrder: boolean, 70 - disabledEmbeds: string[], 71 69 proxyTmdb: boolean, 72 70 enableSkipCredits: boolean, 73 71 enableImageLogos: boolean, ··· 191 189 enableLastSuccessfulSourceChanged, 192 190 ] = useDerived(enableLastSuccessfulSource); 193 191 const [ 194 - disabledSourcesState, 195 - setDisabledSourcesState, 196 - resetDisabledSources, 197 - disabledSourcesChanged, 198 - ] = useDerived(disabledSources); 199 - const [ 200 192 embedOrderState, 201 193 setEmbedOrderState, 202 194 resetEmbedOrder, ··· 208 200 resetEnableEmbedOrder, 209 201 enableEmbedOrderChanged, 210 202 ] = useDerived(enableEmbedOrder); 211 - const [ 212 - disabledEmbedsState, 213 - setDisabledEmbedsState, 214 - resetDisabledEmbeds, 215 - disabledEmbedsChanged, 216 - ] = useDerived(disabledEmbeds); 217 203 const [proxyTmdbState, setProxyTmdbState, resetProxyTmdb, proxyTmdbChanged] = 218 204 useDerived(proxyTmdb); 219 205 const [ ··· 300 286 resetEnableSourceOrder(); 301 287 resetLastSuccessfulSource(); 302 288 resetEnableLastSuccessfulSource(); 303 - resetDisabledSources(); 304 289 resetEmbedOrder(); 305 290 resetEnableEmbedOrder(); 306 - resetDisabledEmbeds(); 307 291 resetProxyTmdb(); 308 292 resetEnableCarouselView(); 309 293 resetEnableMinimalCards(); ··· 340 324 enableSourceOrderChanged || 341 325 lastSuccessfulSourceChanged || 342 326 enableLastSuccessfulSourceChanged || 343 - disabledSourcesChanged || 344 327 embedOrderChanged || 345 328 enableEmbedOrderChanged || 346 - disabledEmbedsChanged || 347 329 proxyTmdbChanged || 348 330 enableCarouselViewChanged || 349 331 enableMinimalCardsChanged || ··· 474 456 set: setProxyTmdbState, 475 457 changed: proxyTmdbChanged, 476 458 }, 477 - disabledSources: { 478 - state: disabledSourcesState, 479 - set: setDisabledSourcesState, 480 - changed: disabledSourcesChanged, 481 - }, 482 459 embedOrder: { 483 460 state: embedOrderState, 484 461 set: setEmbedOrderState, ··· 488 465 state: enableEmbedOrderState, 489 466 set: setEnableEmbedOrderState, 490 467 changed: enableEmbedOrderChanged, 491 - }, 492 - disabledEmbeds: { 493 - state: disabledEmbedsState, 494 - set: setDisabledEmbedsState, 495 - changed: disabledEmbedsChanged, 496 468 }, 497 469 enableCarouselView: { 498 470 state: enableCarouselViewState,
-12
src/pages/Settings.tsx
··· 413 413 (s) => s.setEnableLastSuccessfulSource, 414 414 ); 415 415 416 - const disabledSources = usePreferencesStore((s) => s.disabledSources); 417 - const setDisabledSources = usePreferencesStore((s) => s.setDisabledSources); 418 - 419 416 // These are commented because the EmbedOrderPart is on the admin page and not on the settings page. 420 417 const embedOrder = usePreferencesStore((s) => s.embedOrder); 421 418 // const setEmbedOrder = usePreferencesStore((s) => s.setEmbedOrder); ··· 423 420 const enableEmbedOrder = usePreferencesStore((s) => s.enableEmbedOrder); 424 421 // const setEnableEmbedOrder = usePreferencesStore((s) => s.setEnableEmbedOrder); 425 422 426 - const disabledEmbeds = usePreferencesStore((s) => s.disabledEmbeds); 427 423 // const setDisabledEmbeds = usePreferencesStore((s) => s.setDisabledEmbeds); 428 424 429 425 const enableDiscover = usePreferencesStore((s) => s.enableDiscover); ··· 560 556 enableSourceOrder, 561 557 lastSuccessfulSource, 562 558 enableLastSuccessfulSource, 563 - disabledSources, 564 559 embedOrder, 565 560 enableEmbedOrder, 566 - disabledEmbeds, 567 561 proxyTmdb, 568 562 enableSkipCredits, 569 563 enableImageLogos, ··· 634 628 state.enableSourceOrder.changed || 635 629 state.lastSuccessfulSource.changed || 636 630 state.enableLastSuccessfulSource.changed || 637 - state.disabledSources.changed || 638 631 state.proxyTmdb.changed || 639 632 state.enableCarouselView.changed || 640 633 state.enableMinimalCards.changed || ··· 664 657 enableSourceOrder: state.enableSourceOrder.state, 665 658 lastSuccessfulSource: state.lastSuccessfulSource.state, 666 659 enableLastSuccessfulSource: state.enableLastSuccessfulSource.state, 667 - disabledSources: state.disabledSources.state, 668 660 proxyTmdb: state.proxyTmdb.state, 669 661 enableCarouselView: state.enableCarouselView.state, 670 662 enableMinimalCards: state.enableMinimalCards.state, ··· 713 705 setEnableSourceOrder(state.enableSourceOrder.state); 714 706 setLastSuccessfulSource(state.lastSuccessfulSource.state); 715 707 setEnableLastSuccessfulSource(state.enableLastSuccessfulSource.state); 716 - setDisabledSources(state.disabledSources.state); 717 708 setAppLanguage(state.appLanguage.state); 718 709 setTheme(state.theme.state); 719 710 setSubStyling(state.subtitleStyling.state); ··· 768 759 setEnableSourceOrder, 769 760 setLastSuccessfulSource, 770 761 setEnableLastSuccessfulSource, 771 - setDisabledSources, 772 762 setAppLanguage, 773 763 setTheme, 774 764 setSubStyling, ··· 859 849 setEnableLastSuccessfulSource={ 860 850 state.enableLastSuccessfulSource.set 861 851 } 862 - disabledSources={state.disabledSources.state} 863 - setDisabledSources={state.disabledSources.set} 864 852 enableLowPerformanceMode={state.enableLowPerformanceMode.state} 865 853 setEnableLowPerformanceMode={state.enableLowPerformanceMode.set} 866 854 enableHoldToBoost={state.enableHoldToBoost.state}
-2
src/pages/admin/AdminPage.tsx
··· 47 47 setEmbedOrder={embedOrderState.setEmbedOrder} 48 48 enableEmbedOrder={embedOrderState.enableEmbedOrder} 49 49 setEnableEmbedOrder={embedOrderState.setEnableEmbedOrder} 50 - disabledEmbeds={embedOrderState.disabledEmbeds} 51 - setDisabledEmbeds={embedOrderState.setDisabledEmbeds} 52 50 /> 53 51 {/* <ProgressCleanupPart /> */} 54 52 </ThinContainer>
-10
src/pages/migration/MigrationUpload.tsx
··· 375 375 uploadedData.settings.enableLastSuccessfulSource, 376 376 ); 377 377 } 378 - if (uploadedData.settings.disabledSources !== undefined) { 379 - preferencesStore.setDisabledSources( 380 - uploadedData.settings.disabledSources, 381 - ); 382 - } 383 378 if (uploadedData.settings.embedOrder !== undefined) { 384 379 preferencesStore.setEmbedOrder(uploadedData.settings.embedOrder); 385 380 } 386 381 if (uploadedData.settings.enableEmbedOrder !== undefined) { 387 382 preferencesStore.setEnableEmbedOrder( 388 383 uploadedData.settings.enableEmbedOrder, 389 - ); 390 - } 391 - if (uploadedData.settings.disabledEmbeds !== undefined) { 392 - preferencesStore.setDisabledEmbeds( 393 - uploadedData.settings.disabledEmbeds, 394 384 ); 395 385 } 396 386 if (uploadedData.settings.proxyTmdb !== undefined) {
+3 -17
src/pages/parts/admin/EmbedOrderPart.tsx
··· 5 5 import { getAllProviders, getProviders } from "@/backend/providers/providers"; 6 6 import { Button } from "@/components/buttons/Button"; 7 7 import { Toggle } from "@/components/buttons/Toggle"; 8 - import { SortableListWithToggles } from "@/components/form/SortableListWithToggles"; 8 + import { SortableList } from "@/components/form/SortableList"; 9 9 import { Heading2 } from "@/components/utils/Text"; 10 10 11 11 interface EmbedOrderPartProps { ··· 13 13 setEmbedOrder: (order: string[]) => void; 14 14 enableEmbedOrder: boolean; 15 15 setEnableEmbedOrder: (enabled: boolean) => void; 16 - disabledEmbeds: string[]; 17 - setDisabledEmbeds: (disabled: string[]) => void; 18 16 } 19 17 20 18 export function EmbedOrderPart({ ··· 22 20 setEmbedOrder, 23 21 enableEmbedOrder, 24 22 setEnableEmbedOrder, 25 - disabledEmbeds, 26 - setDisabledEmbeds, 27 23 }: EmbedOrderPartProps) { 28 24 const { t } = useTranslation(); 29 25 const navigate = useNavigate(); ··· 39 35 id: e.id, 40 36 name: e.name || e.id, 41 37 disabled: !currentDeviceEmbeds.find((embed) => embed.id === e.id), 42 - enabled: !disabledEmbeds.includes(e.id), 43 38 })); 44 39 } 45 40 ··· 48 43 id, 49 44 name: allEmbeds.find((e) => e.id === id)?.name || id, 50 45 disabled: !currentDeviceEmbeds.find((e) => e.id === id), 51 - enabled: !disabledEmbeds.includes(id), 52 46 })); 53 - }, [embedOrder, allEmbeds, disabledEmbeds]); 54 - 55 - const handleEmbedToggle = (embedId: string) => { 56 - const newDisabledEmbeds = disabledEmbeds.includes(embedId) 57 - ? disabledEmbeds.filter((id) => id !== embedId) 58 - : [...disabledEmbeds, embedId]; 59 - setDisabledEmbeds(newDisabledEmbeds); 60 - }; 47 + }, [embedOrder, allEmbeds]); 61 48 62 49 return ( 63 50 <div className="space-y-6"> ··· 91 78 92 79 {enableEmbedOrder && ( 93 80 <div className="w-full flex flex-col gap-4"> 94 - <SortableListWithToggles 81 + <SortableList 95 82 items={embedItems} 96 83 setItems={(items) => setEmbedOrder(items.map((item) => item.id))} 97 - onToggle={handleEmbedToggle} 98 84 /> 99 85 <Button 100 86 className="max-w-[25rem]"
-2
src/pages/parts/auth/VerifyPassphrasePart.tsx
··· 53 53 forceCompactEpisodeView: store.forceCompactEpisodeView, 54 54 sourceOrder: store.sourceOrder, 55 55 enableSourceOrder: store.enableSourceOrder, 56 - disabledSources: store.disabledSources, 57 56 embedOrder: store.embedOrder, 58 57 enableEmbedOrder: store.enableEmbedOrder, 59 - disabledEmbeds: store.disabledEmbeds, 60 58 proxyTmdb: store.proxyTmdb, 61 59 febboxKey: store.febboxKey, 62 60 debridToken: store.debridToken,
+1 -4
src/pages/parts/player/SourceSelectPart.tsx
··· 153 153 const enableLastSuccessfulSource = usePreferencesStore( 154 154 (s) => s.enableLastSuccessfulSource, 155 155 ); 156 - const disabledSources = usePreferencesStore((s) => s.disabledSources); 157 156 158 157 const sources = useMemo(() => { 159 158 const metaType = props.media.type; 160 159 if (!metaType) return []; 161 160 const allSources = getCachedMetadata() 162 161 .filter((v) => v.type === "source") 163 - .filter((v) => v.mediaTypes?.includes(metaType)) 164 - .filter((v) => !(disabledSources || []).includes(v.id)); 162 + .filter((v) => v.mediaTypes?.includes(metaType)); 165 163 166 164 if (!enableSourceOrder || preferredSourceOrder.length === 0) { 167 165 // Even without custom source order, prioritize last successful source if enabled ··· 209 207 props.media.type, 210 208 preferredSourceOrder, 211 209 enableSourceOrder, 212 - disabledSources, 213 210 lastSuccessfulSource, 214 211 enableLastSuccessfulSource, 215 212 ]);
+3 -14
src/pages/parts/settings/PreferencesPart.tsx
··· 8 8 import { Toggle } from "@/components/buttons/Toggle"; 9 9 import { FlagIcon } from "@/components/FlagIcon"; 10 10 import { Dropdown } from "@/components/form/Dropdown"; 11 - import { SortableListWithToggles } from "@/components/form/SortableListWithToggles"; 11 + import { SortableList } from "@/components/form/SortableList"; 12 12 import { Heading1 } from "@/components/utils/Text"; 13 13 import { appLanguageOptions } from "@/setup/i18n"; 14 14 import { useOverlayStack } from "@/stores/interface/overlayStack"; ··· 30 30 setenableSourceOrder: (v: boolean) => void; 31 31 enableLastSuccessfulSource: boolean; 32 32 setEnableLastSuccessfulSource: (v: boolean) => void; 33 - disabledSources: string[]; 34 - setDisabledSources: (v: string[]) => void; 35 33 enableLowPerformanceMode: boolean; 36 34 setEnableLowPerformanceMode: (v: boolean) => void; 37 35 enableHoldToBoost: boolean; ··· 69 67 id, 70 68 name: allSources.find((s) => s.id === id)?.name || id, 71 69 disabled: !currentDeviceSources.find((s) => s.id === id), 72 - enabled: !props.disabledSources.includes(id), 73 70 })); 74 - }, [props.sourceOrder, props.disabledSources, allSources]); 71 + }, [props.sourceOrder, allSources]); 75 72 76 73 const navigate = useNavigate(); 77 74 78 75 const handleLowPerformanceModeToggle = () => { 79 76 props.setEnableLowPerformanceMode(!props.enableLowPerformanceMode); 80 - }; 81 - 82 - const handleSourceToggle = (sourceId: string) => { 83 - const newDisabledSources = props.disabledSources.includes(sourceId) 84 - ? props.disabledSources.filter((id) => id !== sourceId) 85 - : [...props.disabledSources, sourceId]; 86 - props.setDisabledSources(newDisabledSources); 87 77 }; 88 78 89 79 return ( ··· 366 356 367 357 {props.enableSourceOrder && ( 368 358 <div className="w-full flex flex-col gap-4"> 369 - <SortableListWithToggles 359 + <SortableList 370 360 items={sourceItems} 371 361 setItems={(items) => 372 362 props.setSourceOrder(items.map((item) => item.id)) 373 363 } 374 - onToggle={handleSourceToggle} 375 364 /> 376 365 <Button 377 366 className="max-w-[25rem]"
-16
src/stores/preferences/index.tsx
··· 22 22 enableSourceOrder: boolean; 23 23 lastSuccessfulSource: string | null; 24 24 enableLastSuccessfulSource: boolean; 25 - disabledSources: string[]; 26 25 embedOrder: string[]; 27 26 enableEmbedOrder: boolean; 28 - disabledEmbeds: string[]; 29 27 proxyTmdb: boolean; 30 28 febboxKey: string | null; 31 29 debridToken: string | null; ··· 53 51 setEnableSourceOrder(v: boolean): void; 54 52 setLastSuccessfulSource(v: string | null): void; 55 53 setEnableLastSuccessfulSource(v: boolean): void; 56 - setDisabledSources(v: string[]): void; 57 54 setEmbedOrder(v: string[]): void; 58 55 setEnableEmbedOrder(v: boolean): void; 59 - setDisabledEmbeds(v: string[]): void; 60 56 setProxyTmdb(v: boolean): void; 61 57 setFebboxKey(v: string | null): void; 62 58 setdebridToken(v: string | null): void; ··· 88 84 enableSourceOrder: false, 89 85 lastSuccessfulSource: null, 90 86 enableLastSuccessfulSource: false, 91 - disabledSources: [], 92 87 embedOrder: [], 93 88 enableEmbedOrder: false, 94 - disabledEmbeds: [], 95 89 proxyTmdb: false, 96 90 febboxKey: null, 97 91 debridToken: null, ··· 174 168 s.enableLastSuccessfulSource = v; 175 169 }); 176 170 }, 177 - setDisabledSources(v) { 178 - set((s) => { 179 - s.disabledSources = v; 180 - }); 181 - }, 182 171 setEmbedOrder(v) { 183 172 set((s) => { 184 173 s.embedOrder = v; ··· 187 176 setEnableEmbedOrder(v) { 188 177 set((s) => { 189 178 s.enableEmbedOrder = v; 190 - }); 191 - }, 192 - setDisabledEmbeds(v) { 193 - set((s) => { 194 - s.disabledEmbeds = v; 195 179 }); 196 180 }, 197 181 setProxyTmdb(v) {