- {#if showCaret}
-
- {/if}
+
{#each lines as line, l}
onLineClick?.()}
diff --git a/src/routes/results/[id]/+page.svelte b/src/routes/results/[id]/+page.svelte
index 5e35d45..fe1a8c4 100644
--- a/src/routes/results/[id]/+page.svelte
+++ b/src/routes/results/[id]/+page.svelte
@@ -96,17 +96,16 @@
})
// Playlist Navigation Logic
- let nextSongId = $state(null)
- let isPlaylistFinished = $state(false)
-
const loc = data.user.data.loc
const playlist = data.playlist
+ let nextSongId = $state(getNextSong(playlist, loc))
+ let isPlaylistFinished = $state(false)
+
// Check if this is the latest result for the current playlist session
const isCurrentResult = loc?.lastResultId === data.resultId
// Compute next state immediately
if (playlist && loc && isCurrentResult) {
- nextSongId = getNextSong(playlist, loc)
if (nextSongId === null) isPlaylistFinished = true
}
diff --git a/src/routes/song/[id]/play/+page.svelte b/src/routes/song/[id]/play/+page.svelte
index ab90b36..b3d61e7 100644
--- a/src/routes/song/[id]/play/+page.svelte
+++ b/src/routes/song/[id]/play/+page.svelte
@@ -37,6 +37,7 @@
let deduplicatedLyrics = $derived(dedupLines(data.lrc, isHideRepeated))
let processedLrc: ProcLrcLine[] = $derived(deduplicatedLyrics.map(line => processLrcLine(line.lyric)))
// State tracking for each kana character: UNSEEN, RIGHT, WRONG
+ // svelte-ignore state_referenced_locally
let states = $state(processedLrc.map(line => new Array(line.totalLen).fill('unseen')))
let musicControl: MusicControl | undefined