From c809d2daba4beaea7c4f16c6bb0edef9efa825b8 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Tue, 31 Jan 2023 13:51:56 +0600 Subject: [PATCH] fix: lyrics not changing on track change --- lib/main.dart | 2 +- lib/pages/lyrics/genius_lyrics.dart | 2 +- lib/pages/lyrics/lyrics.dart | 5 +++-- lib/pages/lyrics/synced_lyrics.dart | 2 +- lib/services/queries/lyrics.dart | 18 ++++++++++-------- lib/themes/dark_theme.dart | 4 ++-- lib/themes/light_theme.dart | 4 ++-- 7 files changed, 20 insertions(+), 17 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 20e90e47..608aed0a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -194,7 +194,7 @@ class SpotubeState extends ConsumerState with WidgetsBindingObserver { 'height': size.height, }), ); - prevSize = await windowManager.getSize(); + prevSize = size; } TargetPlatform appPlatform = TargetPlatform.android; diff --git a/lib/pages/lyrics/genius_lyrics.dart b/lib/pages/lyrics/genius_lyrics.dart index b8074c9b..0043021a 100644 --- a/lib/pages/lyrics/genius_lyrics.dart +++ b/lib/pages/lyrics/genius_lyrics.dart @@ -25,7 +25,7 @@ class GeniusLyrics extends HookConsumerWidget { Widget build(BuildContext context, ref) { Playback playback = ref.watch(playbackProvider); final geniusLyricsQuery = useQuery( - job: Queries.lyrics.static, + job: Queries.lyrics.static(playback.track?.id ?? ""), externalData: Tuple2( playback.track, ref.watch(userPreferencesProvider).geniusAccessToken, diff --git a/lib/pages/lyrics/lyrics.dart b/lib/pages/lyrics/lyrics.dart index 3459d817..1ee99e82 100644 --- a/lib/pages/lyrics/lyrics.dart +++ b/lib/pages/lyrics/lyrics.dart @@ -70,8 +70,9 @@ class LyricsPage extends HookConsumerWidget { return SafeArea( child: Container( clipBehavior: Clip.hardEdge, - decoration: const BoxDecoration( - borderRadius: BorderRadius.only( + decoration: BoxDecoration( + color: Theme.of(context).backgroundColor.withOpacity(.4), + borderRadius: const BorderRadius.only( topLeft: Radius.circular(10), topRight: Radius.circular(10), ), diff --git a/lib/pages/lyrics/synced_lyrics.dart b/lib/pages/lyrics/synced_lyrics.dart index 0bd89909..6e5884d0 100644 --- a/lib/pages/lyrics/synced_lyrics.dart +++ b/lib/pages/lyrics/synced_lyrics.dart @@ -38,7 +38,7 @@ class SyncedLyrics extends HookConsumerWidget { Widget build(BuildContext context, ref) { Playback playback = ref.watch(playbackProvider); final timedLyricsQuery = useQuery( - job: Queries.lyrics.synced, + job: Queries.lyrics.synced(playback.track?.id ?? ""), externalData: playback.track, ); final lyricDelay = ref.watch(lyricDelayState); diff --git a/lib/services/queries/lyrics.dart b/lib/services/queries/lyrics.dart index c5f83216..6823fd43 100644 --- a/lib/services/queries/lyrics.dart +++ b/lib/services/queries/lyrics.dart @@ -7,13 +7,13 @@ import 'package:spotube/utils/service_utils.dart'; import 'package:tuple/tuple.dart'; class LyricsQueries { - final static = QueryJob>( - queryKey: "genius-lyrics-query", + final static = QueryJob.withVariableKey>( + preQueryKey: "genius-lyrics-query", refetchOnExternalDataChange: true, - task: (_, externalData) async { + task: (queryKey, externalData) async { final currentTrack = externalData.item1; final geniusAccessToken = externalData.item2; - if (currentTrack == null) { + if (currentTrack == null || getVariable(queryKey).isEmpty) { return "“Give this player a track to play”\n- S'Challa"; } final lyrics = await ServiceUtils.getLyrics( @@ -28,10 +28,12 @@ class LyricsQueries { }, ); - final synced = QueryJob( - queryKey: "synced-lyrics", - task: (_, currentTrack) async { - if (currentTrack == null) throw "No track currently"; + final synced = QueryJob.withVariableKey( + preQueryKey: "synced-lyrics", + task: (queryKey, currentTrack) async { + if (currentTrack == null || getVariable(queryKey).isEmpty) { + throw "No track currently"; + } final timedLyrics = await ServiceUtils.getTimedLyrics(currentTrack); if (timedLyrics == null) throw Exception("Unable to find lyrics"); diff --git a/lib/themes/dark_theme.dart b/lib/themes/dark_theme.dart index 03e152fc..a2d735e1 100644 --- a/lib/themes/dark_theme.dart +++ b/lib/themes/dark_theme.dart @@ -56,8 +56,8 @@ ThemeData darkTheme({ indicatorColor: accentMaterialColor[300], ), navigationBarTheme: NavigationBarThemeData( - backgroundColor: backgroundMaterialColor[800], - height: 55, + backgroundColor: backgroundMaterialColor[900], + height: 45, indicatorColor: accentMaterialColor[300], labelBehavior: NavigationDestinationLabelBehavior.alwaysHide, iconTheme: MaterialStateProperty.resolveWith((states) { diff --git a/lib/themes/light_theme.dart b/lib/themes/light_theme.dart index 6c3bd203..a8c727bc 100644 --- a/lib/themes/light_theme.dart +++ b/lib/themes/light_theme.dart @@ -84,8 +84,8 @@ ThemeData lightTheme({ ), ), navigationBarTheme: NavigationBarThemeData( - backgroundColor: backgroundMaterialColor[100], - height: 55, + backgroundColor: backgroundMaterialColor[50], + height: 45, indicatorColor: accentMaterialColor[300], iconTheme: MaterialStateProperty.all( IconThemeData(color: Colors.grey[850], size: 18),