chore: show icon with error msg #1085

This commit is contained in:
Kingkor Roy Tirtho 2024-01-24 00:22:14 +06:00
parent e58e18de33
commit a6cb78380d
5 changed files with 71 additions and 28 deletions

View File

@ -41,6 +41,7 @@ abstract class SpotubeIcons {
static const clock = FeatherIcons.clock; static const clock = FeatherIcons.clock;
static const lyrics = Icons.lyrics_rounded; static const lyrics = Icons.lyrics_rounded;
static const lyricsOff = Icons.lyrics_outlined; static const lyricsOff = Icons.lyrics_outlined;
static const noLyrics = Icons.music_off_outlined;
static const logout = FeatherIcons.logOut; static const logout = FeatherIcons.logOut;
static const login = FeatherIcons.logIn; static const login = FeatherIcons.logIn;
static const dashboard = FeatherIcons.grid; static const dashboard = FeatherIcons.grid;

View File

@ -285,5 +285,6 @@
"browse_all": "Browse All", "browse_all": "Browse All",
"genres": "Genres", "genres": "Genres",
"explore_genres": "Explore Genres", "explore_genres": "Explore Genres",
"friends": "Friends" "friends": "Friends",
"no_lyrics_available": "Sorry, unable find lyrics for this track"
} }

View File

@ -1,12 +1,15 @@
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:gap/gap.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:palette_generator/palette_generator.dart'; import 'package:palette_generator/palette_generator.dart';
import 'package:spotify/spotify.dart'; import 'package:spotify/spotify.dart';
import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/lyrics/zoom_controls.dart'; import 'package:spotube/components/lyrics/zoom_controls.dart';
import 'package:spotube/components/shared/shimmers/shimmer_lyrics.dart'; import 'package:spotube/components/shared/shimmers/shimmer_lyrics.dart';
import 'package:spotube/extensions/constrains.dart'; import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart'; import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
@ -72,11 +75,23 @@ class PlainLyrics extends HookConsumerWidget {
if (lyricsQuery.isLoading || lyricsQuery.isRefreshing) { if (lyricsQuery.isLoading || lyricsQuery.isRefreshing) {
return const ShimmerLyrics(); return const ShimmerLyrics();
} else if (lyricsQuery.hasError) { } else if (lyricsQuery.hasError) {
return Text( return Container(
"Sorry, no Lyrics were found for `${playlist.activeTrack?.name}` :'(\n${lyricsQuery.error.toString().replaceAll("Exception: ", "")}", alignment: Alignment.center,
padding: const EdgeInsets.all(16),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.l10n.no_lyrics_available,
style: textTheme.bodyLarge?.copyWith( style: textTheme.bodyLarge?.copyWith(
color: palette.bodyTextColor, color: palette.bodyTextColor,
), ),
textAlign: TextAlign.center,
),
const Gap(26),
const Icon(SpotubeIcons.noLyrics, size: 60),
],
),
); );
} }

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:gap/gap.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:palette_generator/palette_generator.dart'; import 'package:palette_generator/palette_generator.dart';
import 'package:spotify/spotify.dart' hide Offset; import 'package:spotify/spotify.dart' hide Offset;
@ -7,6 +8,7 @@ import 'package:spotube/collections/spotube_icons.dart';
import 'package:spotube/components/lyrics/zoom_controls.dart'; import 'package:spotube/components/lyrics/zoom_controls.dart';
import 'package:spotube/components/shared/shimmers/shimmer_lyrics.dart'; import 'package:spotube/components/shared/shimmers/shimmer_lyrics.dart';
import 'package:spotube/extensions/constrains.dart'; import 'package:spotube/extensions/constrains.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/hooks/controllers/use_auto_scroll_controller.dart'; import 'package:spotube/hooks/controllers/use_auto_scroll_controller.dart';
import 'package:spotube/components/lyrics/use_synced_lyrics.dart'; import 'package:spotube/components/lyrics/use_synced_lyrics.dart';
import 'package:scroll_to_index/scroll_to_index.dart'; import 'package:scroll_to_index/scroll_to_index.dart';
@ -188,12 +190,19 @@ class SyncedLyrics extends HookConsumerWidget {
child: ShimmerLyrics(), child: ShimmerLyrics(),
) )
else if (playlist.activeTrack != null && else if (playlist.activeTrack != null &&
(timedLyricsQuery.hasError)) (timedLyricsQuery.hasError)) ...[
Text( Container(
"Sorry, no Lyrics were found for `${playlist.activeTrack?.name}` :'(\n${timedLyricsQuery.error.toString().replaceAll("Exception: ", "")}", alignment: Alignment.center,
padding: const EdgeInsets.all(16),
child: Text(
context.l10n.no_lyrics_available,
style: bodyTextTheme, style: bodyTextTheme,
) textAlign: TextAlign.center,
else if (isUnSyncLyric == true) ),
),
const Gap(26),
const Icon(SpotubeIcons.noLyrics, size: 60),
] else if (isUnSyncLyric == true)
Expanded( Expanded(
child: Center( child: Center(
child: RichText( child: RichText(

View File

@ -2,102 +2,119 @@
"ar": [ "ar": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"bn": [ "bn": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"ca": [ "ca": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"de": [ "de": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"es": [ "es": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"fa": [ "fa": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"fr": [ "fr": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"hi": [ "hi": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"it": [ "it": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"ja": [ "ja": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"nl": [ "nl": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"pl": [ "pl": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"pt": [ "pt": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"ru": [ "ru": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"tr": [ "tr": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"uk": [ "uk": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
], ],
"zh": [ "zh": [
"step_3_steps", "step_3_steps",
"step_4_steps", "step_4_steps",
"friends" "friends",
"no_lyrics_available"
] ]
} }