feat(detail): like/dislike buttons on the manga page

Add a tri-state like/dislike toggle beside the bookmark action (signed-in
only): click a reaction to set it, the other to switch, or the active one to
clear — optimistic with rollback, mirroring the bookmark toggle. Seeds from
the new GET /me/reactions/:id in the detail loader (non-critical: any failure
degrades to an unset toggle). Unit tests cover the state machine; e2e drives
set → switch → clear against the real endpoints.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
MechaCat02
2026-07-05 17:20:24 +02:00
parent 258a536254
commit bb833c7e71
10 changed files with 320 additions and 6 deletions

View File

@@ -20,6 +20,7 @@
import { session } from '$lib/session.svelte';
import Chip from '$lib/components/Chip.svelte';
import MangaCard from '$lib/components/MangaCard.svelte';
import ReactionButtons from '$lib/components/ReactionButtons.svelte';
import Sheet from '$lib/components/Sheet.svelte';
import AddToCollectionModal from '$lib/components/AddToCollectionModal.svelte';
import Plus from '@lucide/svelte/icons/plus';
@@ -541,6 +542,7 @@
>
{mangaBookmark ? '★ Bookmarked' : '☆ Bookmark'}
</button>
<ReactionButtons mangaId={manga.id} initial={data.reaction} />
<button
type="button"
class="action"