mirror of
https://github.com/p-stream/p-stream.git
synced 2026-04-19 23:22:05 +00:00
Fix handling of undefined arrays in source selection
Updated filtering logic to safely handle cases where arrays like disabledSources, preferredSourceOrder, and preferredEmbedOrder may be undefined. This prevents runtime errors and ensures robust source and embed selection throughout the player and settings components.
This commit is contained in:
parent
7b8afedb8b
commit
732d1d5ca3
4 changed files with 7 additions and 7 deletions
|
|
@ -171,7 +171,7 @@ export function SourceSelectionView({
|
|||
const allSources = getCachedMetadata()
|
||||
.filter((v) => v.type === "source")
|
||||
.filter((v) => v.mediaTypes?.includes(metaType))
|
||||
.filter((v) => !disabledSources.includes(v.id));
|
||||
.filter((v) => !(disabledSources || []).includes(v.id));
|
||||
|
||||
if (!enableSourceOrder || preferredSourceOrder.length === 0) {
|
||||
// Even without custom source order, prioritize last successful source if enabled
|
||||
|
|
|
|||
|
|
@ -179,13 +179,13 @@ export function useScrape() {
|
|||
let baseSourceOrder = allSources
|
||||
.filter(
|
||||
(source) =>
|
||||
!disabledSources.includes(source.id) &&
|
||||
!(disabledSources || []).includes(source.id) &&
|
||||
!failedSources.includes(source.id),
|
||||
)
|
||||
.map((source) => source.id);
|
||||
|
||||
// Apply custom source ordering if enabled
|
||||
if (enableSourceOrder && preferredSourceOrder.length > 0) {
|
||||
if (enableSourceOrder && (preferredSourceOrder || []).length > 0) {
|
||||
const orderedSources: string[] = [];
|
||||
const remainingSources = [...baseSourceOrder];
|
||||
|
||||
|
|
@ -227,9 +227,9 @@ export function useScrape() {
|
|||
|
||||
// Filter out disabled and failed embeds from the embed order
|
||||
const filteredEmbedOrder = enableEmbedOrder
|
||||
? preferredEmbedOrder.filter(
|
||||
? (preferredEmbedOrder || []).filter(
|
||||
(id) =>
|
||||
!disabledEmbeds.includes(id) && !allFailedEmbedIds.includes(id),
|
||||
!(disabledEmbeds || []).includes(id) && !allFailedEmbedIds.includes(id),
|
||||
)
|
||||
: undefined;
|
||||
|
||||
|
|
|
|||
|
|
@ -576,7 +576,7 @@ export function SettingsPage() {
|
|||
const availableSources = useMemo(() => {
|
||||
const sources = getAllProviders().listSources();
|
||||
const sourceIDs = sources.map((s) => s.id);
|
||||
const stateSources = state.sourceOrder.state;
|
||||
const stateSources = state.sourceOrder.state || [];
|
||||
|
||||
// Filter out sources that are not in `stateSources` and are in `sources`
|
||||
const updatedSources = stateSources.filter((ss) => sourceIDs.includes(ss));
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ export function SourceSelectPart(props: { media: ScrapeMedia }) {
|
|||
const allSources = getCachedMetadata()
|
||||
.filter((v) => v.type === "source")
|
||||
.filter((v) => v.mediaTypes?.includes(metaType))
|
||||
.filter((v) => !disabledSources.includes(v.id));
|
||||
.filter((v) => !(disabledSources || []).includes(v.id));
|
||||
|
||||
if (!enableSourceOrder || preferredSourceOrder.length === 0) {
|
||||
// Even without custom source order, prioritize last successful source if enabled
|
||||
|
|
|
|||
Loading…
Reference in a new issue