mirror of
https://github.com/jeffvli/feishin.git
synced 2026-07-15 15:10:01 +02:00
prevent initially rendering non-sync romaji generated lyrics on karaoke lyrics
This commit is contained in:
@@ -193,11 +193,13 @@ export const KaraokeLyricLine = memo(
|
|||||||
[fontSize, alignment],
|
[fontSize, alignment],
|
||||||
);
|
);
|
||||||
|
|
||||||
const hasSyncedRomaji = romajiCueLines != null;
|
const hasSyncedRomajiOverlay = romajiCueLines !== undefined;
|
||||||
const hasSyncedPronunciation = hasSyncedOverlayCueLines(pronunciationCueLines);
|
const hasSyncedPronunciation = hasSyncedOverlayCueLines(pronunciationCueLines);
|
||||||
const hasSyncedTranslation = hasSyncedOverlayCueLines(translationCueLines);
|
const hasSyncedTranslation = hasSyncedOverlayCueLines(translationCueLines);
|
||||||
const pronunciationFallbackText =
|
const pronunciationFallbackText =
|
||||||
!hasSyncedRomaji && !hasSyncedPronunciation ? (pronunciationText ?? romajiText) : null;
|
!hasSyncedRomajiOverlay && !hasSyncedPronunciation
|
||||||
|
? (pronunciationText ?? romajiText)
|
||||||
|
: null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box
|
<Box
|
||||||
|
|||||||
@@ -136,7 +136,10 @@ export const Lyrics = ({ fadeOutNoLyricsMessage = true, settingsKey = 'default'
|
|||||||
}, [data, indexToUse, preferLocalLyrics]);
|
}, [data, indexToUse, preferLocalLyrics]);
|
||||||
|
|
||||||
const { data: furiganaConvertedLyrics } = useFuriganaLyrics(lyrics?.lyrics, !!enableFurigana);
|
const { data: furiganaConvertedLyrics } = useFuriganaLyrics(lyrics?.lyrics, !!enableFurigana);
|
||||||
const { data: romajiConvertedLyrics } = useRomajiLyrics(lyrics?.lyrics, !!enableRomaji);
|
const { data: romajiConvertedLyrics, isFetching: isFetchingRomaji } = useRomajiLyrics(
|
||||||
|
lyrics?.lyrics,
|
||||||
|
!!enableRomaji,
|
||||||
|
);
|
||||||
|
|
||||||
const rawSyncedLyrics = useMemo(() => {
|
const rawSyncedLyrics = useMemo(() => {
|
||||||
if (!synced || !lyrics || !('lyrics' in lyrics) || !Array.isArray(lyrics.lyrics)) {
|
if (!synced || !lyrics || !('lyrics' in lyrics) || !Array.isArray(lyrics.lyrics)) {
|
||||||
@@ -226,12 +229,15 @@ export const Lyrics = ({ fadeOutNoLyricsMessage = true, settingsKey = 'default'
|
|||||||
const displayOffsetMs = isLyricsDisabled ? 0 : currentOffsetMs;
|
const displayOffsetMs = isLyricsDisabled ? 0 : currentOffsetMs;
|
||||||
const useServerPronunciation = !!pronunciationLyricsOverlay;
|
const useServerPronunciation = !!pronunciationLyricsOverlay;
|
||||||
|
|
||||||
const { data: syncedRomajiLyrics } = useSyncedRomajiLyrics(
|
const shouldGenerateSyncedRomaji =
|
||||||
rawSyncedLyrics,
|
|
||||||
!!enableRomaji &&
|
!!enableRomaji &&
|
||||||
!!rawSyncedLyrics &&
|
!!rawSyncedLyrics &&
|
||||||
lyricsHasWordCues(rawSyncedLyrics) &&
|
lyricsHasWordCues(rawSyncedLyrics) &&
|
||||||
!useServerPronunciation,
|
!useServerPronunciation;
|
||||||
|
|
||||||
|
const { data: syncedRomajiLyrics, isFetching: isFetchingSyncedRomaji } = useSyncedRomajiLyrics(
|
||||||
|
rawSyncedLyrics,
|
||||||
|
shouldGenerateSyncedRomaji,
|
||||||
);
|
);
|
||||||
|
|
||||||
const isKaraoke = useMemo(() => {
|
const isKaraoke = useMemo(() => {
|
||||||
@@ -253,12 +259,11 @@ export const Lyrics = ({ fadeOutNoLyricsMessage = true, settingsKey = 'default'
|
|||||||
offsetMs: displayOffsetMs,
|
offsetMs: displayOffsetMs,
|
||||||
pronunciationLyrics: pronunciationLyricsOverlay,
|
pronunciationLyrics: pronunciationLyricsOverlay,
|
||||||
romajiLyrics:
|
romajiLyrics:
|
||||||
enableRomaji && !useServerPronunciation
|
enableRomaji && !useServerPronunciation && !shouldGenerateSyncedRomaji
|
||||||
? (romajiConvertedLyrics as SynchronizedLyricsProps['romajiLyrics'])
|
? (romajiConvertedLyrics as SynchronizedLyricsProps['romajiLyrics'])
|
||||||
: null,
|
: null,
|
||||||
settingsKey,
|
settingsKey,
|
||||||
syncedRomajiLyrics:
|
syncedRomajiLyrics: shouldGenerateSyncedRomaji ? (syncedRomajiLyrics ?? null) : null,
|
||||||
enableRomaji && !useServerPronunciation ? (syncedRomajiLyrics ?? null) : null,
|
|
||||||
translatedLyrics:
|
translatedLyrics:
|
||||||
showTranslation && !translationLyricsOverlay ? translatedLyrics : null,
|
showTranslation && !translationLyricsOverlay ? translatedLyrics : null,
|
||||||
translationLyrics: translationLyricsOverlay,
|
translationLyrics: translationLyricsOverlay,
|
||||||
@@ -271,6 +276,7 @@ export const Lyrics = ({ fadeOutNoLyricsMessage = true, settingsKey = 'default'
|
|||||||
isKaraoke,
|
isKaraoke,
|
||||||
pronunciationLyricsOverlay,
|
pronunciationLyricsOverlay,
|
||||||
romajiConvertedLyrics,
|
romajiConvertedLyrics,
|
||||||
|
shouldGenerateSyncedRomaji,
|
||||||
syncedRomajiLyrics,
|
syncedRomajiLyrics,
|
||||||
settingsKey,
|
settingsKey,
|
||||||
showTranslation,
|
showTranslation,
|
||||||
@@ -428,8 +434,14 @@ export const Lyrics = ({ fadeOutNoLyricsMessage = true, settingsKey = 'default'
|
|||||||
return [];
|
return [];
|
||||||
}, [data?.local]);
|
}, [data?.local]);
|
||||||
|
|
||||||
|
const isWaitingForRomaji =
|
||||||
|
!!enableRomaji &&
|
||||||
|
!!lyrics &&
|
||||||
|
(isFetchingRomaji || (shouldGenerateSyncedRomaji && isFetchingSyncedRomaji));
|
||||||
|
|
||||||
const isLoadingLyrics =
|
const isLoadingLyrics =
|
||||||
shouldFetchLyrics && (isWaitingToFetchLyrics || isLoading || isRefetching);
|
shouldFetchLyrics &&
|
||||||
|
(isWaitingToFetchLyrics || isLoading || isRefetching || isWaitingForRomaji);
|
||||||
const hasNoLyrics = !displayLyrics;
|
const hasNoLyrics = !displayLyrics;
|
||||||
const [shouldFadeOut, setShouldFadeOut] = useState(false);
|
const [shouldFadeOut, setShouldFadeOut] = useState(false);
|
||||||
|
|
||||||
|
|||||||
@@ -68,17 +68,17 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.karaoke-word.karaoke-overlay-pronunciation {
|
.karaoke-word.karaoke-overlay-pronunciation {
|
||||||
font-size: 0.8em;
|
font-size: inherit;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.karaoke-word.karaoke-overlay-translation {
|
.karaoke-word.karaoke-overlay-translation {
|
||||||
font-size: 0.85em;
|
font-size: inherit;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.karaoke-word.karaoke-overlay-generic {
|
.karaoke-word.karaoke-overlay-generic {
|
||||||
font-size: 0.8em;
|
font-size: inherit;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -360,11 +360,15 @@ export const SynchronizedKaraokeLyrics = ({
|
|||||||
lineStartMs,
|
lineStartMs,
|
||||||
idx,
|
idx,
|
||||||
);
|
);
|
||||||
|
const lineLevelRomaji =
|
||||||
|
syncedRomajiLyrics == null && romajiLyrics?.[idx]
|
||||||
|
? getLyricLineText(romajiLyrics[idx])
|
||||||
|
: undefined;
|
||||||
const pronunciationText = getOverlayText(
|
const pronunciationText = getOverlayText(
|
||||||
pronunciationLyrics,
|
pronunciationLyrics,
|
||||||
lineStartMs,
|
lineStartMs,
|
||||||
idx,
|
idx,
|
||||||
romajiLyrics?.[idx] ? getLyricLineText(romajiLyrics[idx]) : undefined,
|
lineLevelRomaji,
|
||||||
);
|
);
|
||||||
const translationText = getOverlayText(
|
const translationText = getOverlayText(
|
||||||
translationLyrics,
|
translationLyrics,
|
||||||
@@ -407,7 +411,11 @@ export const SynchronizedKaraokeLyrics = ({
|
|||||||
lineIndex={idx}
|
lineIndex={idx}
|
||||||
pronunciationCueLines={pronunciationCueLines}
|
pronunciationCueLines={pronunciationCueLines}
|
||||||
pronunciationText={pronunciationText}
|
pronunciationText={pronunciationText}
|
||||||
romajiCueLines={syncedRomajiLyrics?.[idx] ?? null}
|
romajiCueLines={
|
||||||
|
syncedRomajiLyrics != null
|
||||||
|
? (syncedRomajiLyrics[idx] ?? null)
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
translatedText={translationText}
|
translatedText={translationText}
|
||||||
translationCueLines={translationCueLines}
|
translationCueLines={translationCueLines}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user