fix mal querying

This commit is contained in:
2026-02-05 20:05:50 -08:00
parent a558bee991
commit 1e788203f2
3 changed files with 13 additions and 11 deletions

View File

@@ -14,7 +14,7 @@
} from "$lib/types/mal";
const ListSearchSchema = MalAnimeListQuerySchema.extend({
mal: z.string(),
mal: z.string().default(""),
}).strict();
type PageStatus = "idle" | "loading" | "ready" | "error";
@@ -31,7 +31,7 @@
let isLoadingDb = $state(false);
// Keep MAL calls snappy if you later add more query params; for now it's mostly future-proofing.
const debouncedMalUser = new Debounced(() => params.mal, 250);
const debouncedMalUser = new Debounced(() => params.mal ?? "", 1000);
type MalListResponse = z.infer<typeof MalAnimeListResponseSchema>;
type MalEntry = MalListResponse["data"][number];
@@ -79,8 +79,8 @@
return MalAnimeListResponseSchema.parse(json);
}
async function loadAllFor(username: string) {
const u = username.trim();
async function loadAllFor(username: string | undefined) {
const u = (username ?? "").trim();
if (!u) {
malResponse = null;
malEntries = [];
@@ -109,7 +109,7 @@
const { db } = getClientDb();
const malIds = (malResponse?.data ?? []).map((e) => e.node.id);
songRows = await querySongsForMalAnimeIds(db, malIds);
songRows = await getSongsForMalAnimeIds(db, malIds);
} finally {
isLoadingDb = false;
}
@@ -178,7 +178,7 @@
id="mal-user"
class="rounded border px-3 py-2 text-sm"
placeholder="e.g. CaZzzer"
value={params.mal}
value={params.mal ?? ""}
oninput={(e) =>
(params.mal = (e.currentTarget as HTMLInputElement).value)}
autocomplete="off"
@@ -186,7 +186,7 @@
/>
<div class="text-sm text-muted-foreground">
{#if !params.mal.trim()}
{#if !(params.mal ?? "").trim()}
Waiting for username…
{:else}
{#if isLoadingMal}
@@ -217,13 +217,13 @@
{/if}
</div>
{#if params.mal.trim() && !isLoadingMal && malEntries.length === 0}
{#if (params.mal ?? "").trim() && !isLoadingMal && malEntries.length === 0}
<p class="mt-4 text-sm text-muted-foreground">
No anime returned from MAL (did you set a restrictive status/sort?).
</p>
{/if}
{#if params.mal.trim() && !isLoadingDb && malEntries.length > 0 && songRows.length === 0}
{#if (params.mal ?? "").trim() && !isLoadingDb && malEntries.length > 0 && songRows.length === 0}
<p class="mt-4 text-sm text-muted-foreground">
No songs matched in the local database. This likely means none of the MAL
anime IDs exist in the snapshot DB.