feat: update media filter to support multiple series names and enhance library item fetching

This commit is contained in:
2026-03-12 03:12:59 +01:00
parent bf07a65dcd
commit f028b1be98
10 changed files with 173 additions and 93 deletions

View File

@@ -38,7 +38,7 @@ const mediaFilterSchema = z.object({
min_duration_secs: z.number().min(0, "Must be ≥ 0").nullable().optional(),
max_duration_secs: z.number().min(0, "Must be ≥ 0").nullable().optional(),
collections: z.array(z.string()),
series_name: z.string().nullable().optional(),
series_names: z.array(z.string()),
search_term: z.string().nullable().optional(),
});
@@ -199,7 +199,7 @@ function defaultFilter(): MediaFilter {
min_duration_secs: null,
max_duration_secs: null,
collections: [],
series_name: null,
series_names: [],
search_term: null,
};
}
@@ -252,8 +252,8 @@ function AlgorithmicFilterEditor({
onChange={(v) =>
setFilter({
content_type: v === "" ? null : (v as ContentType),
// clear series name if switching away from episode
series_name: v !== "episode" ? null : content.filter.series_name,
// clear series names if switching away from episode
series_names: v !== "episode" ? [] : content.filter.series_names,
})
}
>
@@ -282,12 +282,12 @@ function AlgorithmicFilterEditor({
hint={
content.strategy === "sequential"
? "Episodes will play in chronological order"
: "Filter to one show, or leave empty for all"
: "Filter to specific shows, or leave empty for all"
}
>
<SeriesPicker
value={content.filter.series_name ?? null}
onChange={(v) => setFilter({ series_name: v })}
values={content.filter.series_names ?? []}
onChange={(v) => setFilter({ series_names: v })}
series={series ?? []}
isLoading={loadingSeries}
/>