diff --git a/src/routes/series/[mangaId]/+page.svelte b/src/routes/series/[mangaId]/+page.svelte index dfb456a..8fb6be1 100644 --- a/src/routes/series/[mangaId]/+page.svelte +++ b/src/routes/series/[mangaId]/+page.svelte @@ -1,33 +1,501 @@ -
-

Series

-

Selected manga id: {mangaId}

-

Series detail UI will be implemented in Phase 4.

+
+ {#if seriesState.current} + + +
+
+
+

Chapters

+

{filteredChapters.length} visible

+
+ +
+ + + + + + + +
+
+ + {#if seriesState.chaptersLoading} +
Loading chapters...
+ {:else if filteredChapters.length === 0} +
No chapters match the current filters.
+ {:else} +
    + {#each filteredChapters as chapter (chapter.id)} +
  • + + +
    + {#if chapter.downloaded} + Downloaded + {/if} + +
    +
  • + {/each} +
+ {/if} +
+ {:else} +
Could not load this series.
+ {/if}
diff --git a/src/routes/series/[mangaId]/+page.ts b/src/routes/series/[mangaId]/+page.ts new file mode 100644 index 0000000..a6135ef --- /dev/null +++ b/src/routes/series/[mangaId]/+page.ts @@ -0,0 +1,48 @@ +import { error } from '@sveltejs/kit' +import type { PageLoad } from './$types' +import { getAdapter } from '$lib/request-manager' +import { seriesState } from '$lib/state/series.svelte' +import { readerState } from '$lib/state/reader.svelte' + +export const load: PageLoad = async ({ params }) => { + const mangaId = params.mangaId + + if (!mangaId) { + throw error(400, 'Missing manga id') + } + + try { + seriesState.loading = true + seriesState.error = null + seriesState.chaptersLoading = true + seriesState.chaptersError = null + + const adapter = getAdapter() + const [manga, chapters] = await Promise.all([ + adapter.getManga(mangaId), + adapter.getChapters(mangaId), + ]) + + seriesState.current = manga + seriesState.chapters = chapters + + readerState.manga = manga + readerState.chapters = chapters + + return { + manga, + chapters, + mangaId, + } + } catch (err) { + const message = err instanceof Error ? err.message : String(err) + + seriesState.error = message + seriesState.chaptersError = message + + throw error(500, message) + } finally { + seriesState.loading = false + seriesState.chaptersLoading = false + } +} \ No newline at end of file