Files
Moku/src/lib/state/extensions.svelte.ts
T
2026-05-28 23:05:02 -05:00

37 lines
964 B
TypeScript

import type { Extension, Source, Manga } from "$lib/types";
export const extensionsState = $state({
items: [] as Extension[],
sources: [] as Source[],
activeSource: null as Source | null,
loading: false,
error: null as string | null,
filter: {
query: "",
installed: false,
language: "all",
},
browseResults: [] as Manga[],
browseLoading: false,
browseError: null as string | null,
browseHasMore: false,
});
export function filteredExtensions() {
let result = extensionsState.items;
if (extensionsState.filter.installed) {
result = result.filter(e => e.installed);
}
if (extensionsState.filter.language !== "all") {
result = result.filter(e => e.lang === extensionsState.filter.language);
}
if (extensionsState.filter.query) {
const q = extensionsState.filter.query.toLowerCase();
result = result.filter(e => e.name.toLowerCase().includes(q));
}
return result;
}