mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 16:05:18 +00:00
refactor: artist name string as extension
This commit is contained in:
parent
7545ff6415
commit
1cea95bbda
@ -3,6 +3,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
|||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/components/shared/playbutton_card.dart';
|
import 'package:spotube/components/shared/playbutton_card.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/context.dart';
|
import 'package:spotube/extensions/context.dart';
|
||||||
import 'package:spotube/extensions/image.dart';
|
import 'package:spotube/extensions/image.dart';
|
||||||
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
||||||
@ -59,7 +60,7 @@ class AlbumCard extends HookConsumerWidget {
|
|||||||
updating.value,
|
updating.value,
|
||||||
title: album.name!,
|
title: album.name!,
|
||||||
description:
|
description:
|
||||||
"${album.albumType?.formatted} • ${TypeConversionUtils.artists_X_String<ArtistSimple>(album.artists ?? [])}",
|
"${album.albumType?.formatted} • ${album.artists?.asString() ?? ""}",
|
||||||
onTap: () {
|
onTap: () {
|
||||||
ServiceUtils.push(context, "/album/${album.id}", extra: album);
|
ServiceUtils.push(context, "/album/${album.id}", extra: album);
|
||||||
},
|
},
|
||||||
|
@ -21,6 +21,7 @@ import 'package:spotube/components/shared/fallbacks/not_found.dart';
|
|||||||
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
import 'package:spotube/components/shared/sort_tracks_dropdown.dart';
|
import 'package:spotube/components/shared/sort_tracks_dropdown.dart';
|
||||||
import 'package:spotube/components/shared/track_tile/track_tile.dart';
|
import 'package:spotube/components/shared/track_tile/track_tile.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/context.dart';
|
import 'package:spotube/extensions/context.dart';
|
||||||
import 'package:spotube/models/local_track.dart';
|
import 'package:spotube/models/local_track.dart';
|
||||||
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
||||||
@ -242,7 +243,7 @@ class UserLocalTracks extends HookConsumerWidget {
|
|||||||
return sortedTracks
|
return sortedTracks
|
||||||
.map((e) => (
|
.map((e) => (
|
||||||
weightedRatio(
|
weightedRatio(
|
||||||
"${e.name} - ${TypeConversionUtils.artists_X_String<Artist>(e.artists ?? [])}",
|
"${e.name} - ${e.artists?.asString() ?? ""}",
|
||||||
searchController.text,
|
searchController.text,
|
||||||
),
|
),
|
||||||
e,
|
e,
|
||||||
|
@ -16,6 +16,7 @@ import 'package:spotube/components/shared/dialogs/track_details_dialog.dart';
|
|||||||
import 'package:spotube/components/shared/page_window_title_bar.dart';
|
import 'package:spotube/components/shared/page_window_title_bar.dart';
|
||||||
import 'package:spotube/components/shared/image/universal_image.dart';
|
import 'package:spotube/components/shared/image/universal_image.dart';
|
||||||
import 'package:spotube/components/shared/panels/sliding_up_panel.dart';
|
import 'package:spotube/components/shared/panels/sliding_up_panel.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/constrains.dart';
|
import 'package:spotube/extensions/constrains.dart';
|
||||||
import 'package:spotube/extensions/context.dart';
|
import 'package:spotube/extensions/context.dart';
|
||||||
import 'package:spotube/extensions/image.dart';
|
import 'package:spotube/extensions/image.dart';
|
||||||
@ -239,10 +240,7 @@ class PlayerView extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
if (isLocalTrack)
|
if (isLocalTrack)
|
||||||
Text(
|
Text(
|
||||||
TypeConversionUtils.artists_X_String<
|
currentTrack?.artists?.asString() ?? "",
|
||||||
Artist>(
|
|
||||||
currentTrack?.artists ?? [],
|
|
||||||
),
|
|
||||||
style: theme.textTheme.bodyMedium!.copyWith(
|
style: theme.textTheme.bodyMedium!.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: bodyTextColor,
|
color: bodyTextColor,
|
||||||
|
@ -3,11 +3,11 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
|
|
||||||
import 'package:spotify/spotify.dart' hide Offset;
|
|
||||||
import 'package:spotube/collections/spotube_icons.dart';
|
import 'package:spotube/collections/spotube_icons.dart';
|
||||||
import 'package:spotube/components/player/sibling_tracks_sheet.dart';
|
import 'package:spotube/components/player/sibling_tracks_sheet.dart';
|
||||||
import 'package:spotube/components/shared/adaptive/adaptive_pop_sheet_list.dart';
|
import 'package:spotube/components/shared/adaptive/adaptive_pop_sheet_list.dart';
|
||||||
import 'package:spotube/components/shared/heart_button.dart';
|
import 'package:spotube/components/shared/heart_button.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/context.dart';
|
import 'package:spotube/extensions/context.dart';
|
||||||
import 'package:spotube/extensions/duration.dart';
|
import 'package:spotube/extensions/duration.dart';
|
||||||
import 'package:spotube/models/local_track.dart';
|
import 'package:spotube/models/local_track.dart';
|
||||||
@ -16,7 +16,6 @@ import 'package:spotube/provider/download_manager_provider.dart';
|
|||||||
import 'package:spotube/provider/authentication_provider.dart';
|
import 'package:spotube/provider/authentication_provider.dart';
|
||||||
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
||||||
import 'package:spotube/provider/sleep_timer_provider.dart';
|
import 'package:spotube/provider/sleep_timer_provider.dart';
|
||||||
import 'package:spotube/utils/type_conversion_utils.dart';
|
|
||||||
|
|
||||||
class PlayerActions extends HookConsumerWidget {
|
class PlayerActions extends HookConsumerWidget {
|
||||||
final MainAxisAlignment mainAxisAlignment;
|
final MainAxisAlignment mainAxisAlignment;
|
||||||
@ -56,10 +55,8 @@ class PlayerActions extends HookConsumerWidget {
|
|||||||
(element) =>
|
(element) =>
|
||||||
element.name == playlist.activeTrack?.name &&
|
element.name == playlist.activeTrack?.name &&
|
||||||
element.album?.name == playlist.activeTrack?.album?.name &&
|
element.album?.name == playlist.activeTrack?.album?.name &&
|
||||||
TypeConversionUtils.artists_X_String<Artist>(
|
element.artists?.asString() ==
|
||||||
element.artists ?? []) ==
|
playlist.activeTrack?.artists?.asString(),
|
||||||
TypeConversionUtils.artists_X_String<Artist>(
|
|
||||||
playlist.activeTrack?.artists ?? []),
|
|
||||||
) ==
|
) ==
|
||||||
true;
|
true;
|
||||||
}, [localTracks, playlist.activeTrack]);
|
}, [localTracks, playlist.activeTrack]);
|
||||||
|
@ -12,11 +12,11 @@ import 'package:spotube/collections/spotube_icons.dart';
|
|||||||
import 'package:spotube/components/shared/fallbacks/not_found.dart';
|
import 'package:spotube/components/shared/fallbacks/not_found.dart';
|
||||||
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
import 'package:spotube/components/shared/track_tile/track_tile.dart';
|
import 'package:spotube/components/shared/track_tile/track_tile.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/constrains.dart';
|
import 'package:spotube/extensions/constrains.dart';
|
||||||
import 'package:spotube/extensions/context.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/provider/proxy_playlist/proxy_playlist_provider.dart';
|
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
||||||
import 'package:spotube/utils/type_conversion_utils.dart';
|
|
||||||
|
|
||||||
class PlayerQueue extends HookConsumerWidget {
|
class PlayerQueue extends HookConsumerWidget {
|
||||||
final bool floating;
|
final bool floating;
|
||||||
@ -55,7 +55,7 @@ class PlayerQueue extends HookConsumerWidget {
|
|||||||
return tracks
|
return tracks
|
||||||
.map((e) => (
|
.map((e) => (
|
||||||
weightedRatio(
|
weightedRatio(
|
||||||
'${e.name!} - ${TypeConversionUtils.artists_X_String(e.artists!)}',
|
'${e.name!} - ${e.artists?.asString() ?? ""}',
|
||||||
searchText.value,
|
searchText.value,
|
||||||
),
|
),
|
||||||
e
|
e
|
||||||
|
@ -5,6 +5,7 @@ import 'package:spotify/spotify.dart';
|
|||||||
import 'package:spotube/collections/assets.gen.dart';
|
import 'package:spotube/collections/assets.gen.dart';
|
||||||
import 'package:spotube/components/shared/image/universal_image.dart';
|
import 'package:spotube/components/shared/image/universal_image.dart';
|
||||||
import 'package:spotube/components/shared/links/link_text.dart';
|
import 'package:spotube/components/shared/links/link_text.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/constrains.dart';
|
import 'package:spotube/extensions/constrains.dart';
|
||||||
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
||||||
import 'package:spotube/utils/service_utils.dart';
|
import 'package:spotube/utils/service_utils.dart';
|
||||||
@ -54,9 +55,7 @@ class PlayerTrackDetails extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
TypeConversionUtils.artists_X_String<Artist>(
|
playback.activeTrack?.artists?.asString() ?? "",
|
||||||
playback.activeTrack?.artists ?? [],
|
|
||||||
),
|
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
style: theme.textTheme.bodySmall!.copyWith(color: color),
|
style: theme.textTheme.bodySmall!.copyWith(color: color),
|
||||||
)
|
)
|
||||||
|
@ -10,6 +10,7 @@ import 'package:spotube/collections/spotube_icons.dart';
|
|||||||
|
|
||||||
import 'package:spotube/components/shared/image/universal_image.dart';
|
import 'package:spotube/components/shared/image/universal_image.dart';
|
||||||
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/constrains.dart';
|
import 'package:spotube/extensions/constrains.dart';
|
||||||
import 'package:spotube/extensions/context.dart';
|
import 'package:spotube/extensions/context.dart';
|
||||||
import 'package:spotube/extensions/duration.dart';
|
import 'package:spotube/extensions/duration.dart';
|
||||||
@ -67,7 +68,7 @@ class SiblingTracksSheet extends HookConsumerWidget {
|
|||||||
).trim();
|
).trim();
|
||||||
|
|
||||||
final defaultSearchTerm =
|
final defaultSearchTerm =
|
||||||
"$title - ${TypeConversionUtils.artists_X_String<Artist>(playlist.activeTrack?.artists ?? [])}";
|
"$title - ${playlist.activeTrack?.artists?.asString() ?? ""}";
|
||||||
final searchController = useTextEditingController(
|
final searchController = useTextEditingController(
|
||||||
text: defaultSearchTerm,
|
text: defaultSearchTerm,
|
||||||
);
|
);
|
||||||
|
@ -11,6 +11,7 @@ import 'package:spotube/components/shared/hover_builder.dart';
|
|||||||
import 'package:spotube/components/shared/image/universal_image.dart';
|
import 'package:spotube/components/shared/image/universal_image.dart';
|
||||||
import 'package:spotube/components/shared/links/link_text.dart';
|
import 'package:spotube/components/shared/links/link_text.dart';
|
||||||
import 'package:spotube/components/shared/track_tile/track_options.dart';
|
import 'package:spotube/components/shared/track_tile/track_options.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/constrains.dart';
|
import 'package:spotube/extensions/constrains.dart';
|
||||||
import 'package:spotube/extensions/duration.dart';
|
import 'package:spotube/extensions/duration.dart';
|
||||||
import 'package:spotube/extensions/image.dart';
|
import 'package:spotube/extensions/image.dart';
|
||||||
@ -230,9 +231,7 @@ class TrackTile extends HookConsumerWidget {
|
|||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
child: track is LocalTrack
|
child: track is LocalTrack
|
||||||
? Text(
|
? Text(
|
||||||
TypeConversionUtils.artists_X_String<Artist>(
|
track.artists?.asString() ?? '',
|
||||||
track.artists ?? [],
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
: ClipRect(
|
: ClipRect(
|
||||||
child: ConstrainedBox(
|
child: ConstrainedBox(
|
||||||
|
@ -11,3 +11,9 @@ extension ArtistJson on ArtistSimple {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension ArtistExtension on List<ArtistSimple> {
|
||||||
|
String asString() {
|
||||||
|
return map((e) => e.name?.replaceAll(",", " ")).join(", ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -8,6 +8,7 @@ import 'package:spotify/spotify.dart';
|
|||||||
import 'package:spotube/collections/spotube_icons.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/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/constrains.dart';
|
import 'package:spotube/extensions/constrains.dart';
|
||||||
import 'package:spotube/extensions/context.dart';
|
import 'package:spotube/extensions/context.dart';
|
||||||
|
|
||||||
@ -55,8 +56,7 @@ class PlainLyrics extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
Center(
|
Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
TypeConversionUtils.artists_X_String<Artist>(
|
playlist.activeTrack?.artists?.asString() ?? "",
|
||||||
playlist.activeTrack?.artists ?? []),
|
|
||||||
style: (mediaQuery.mdAndUp
|
style: (mediaQuery.mdAndUp
|
||||||
? textTheme.headlineSmall
|
? textTheme.headlineSmall
|
||||||
: textTheme.titleLarge)
|
: textTheme.titleLarge)
|
||||||
|
@ -3,10 +3,10 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
|||||||
import 'package:gap/gap.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:spotube/collections/spotube_icons.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/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/constrains.dart';
|
import 'package:spotube/extensions/constrains.dart';
|
||||||
import 'package:spotube/extensions/context.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';
|
||||||
@ -16,7 +16,6 @@ import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
|||||||
import 'package:spotube/provider/spotify/spotify.dart';
|
import 'package:spotube/provider/spotify/spotify.dart';
|
||||||
import 'package:spotube/services/audio_player/audio_player.dart';
|
import 'package:spotube/services/audio_player/audio_player.dart';
|
||||||
|
|
||||||
import 'package:spotube/utils/type_conversion_utils.dart';
|
|
||||||
import 'package:stroke_text/stroke_text.dart';
|
import 'package:stroke_text/stroke_text.dart';
|
||||||
|
|
||||||
class SyncedLyrics extends HookConsumerWidget {
|
class SyncedLyrics extends HookConsumerWidget {
|
||||||
@ -84,8 +83,7 @@ class SyncedLyrics extends HookConsumerWidget {
|
|||||||
if (isModal != true)
|
if (isModal != true)
|
||||||
Center(
|
Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
TypeConversionUtils.artists_X_String<Artist>(
|
playlist.activeTrack?.artists?.asString() ?? "",
|
||||||
playlist.activeTrack?.artists ?? []),
|
|
||||||
style: mediaQuery.mdAndUp
|
style: mediaQuery.mdAndUp
|
||||||
? textTheme.headlineSmall
|
? textTheme.headlineSmall
|
||||||
: textTheme.titleLarge,
|
: textTheme.titleLarge,
|
||||||
|
@ -4,9 +4,9 @@ import 'package:flutter_desktop_tools/flutter_desktop_tools.dart';
|
|||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/collections/env.dart';
|
import 'package:spotube/collections/env.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
||||||
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
|
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
|
||||||
import 'package:spotube/utils/type_conversion_utils.dart';
|
|
||||||
|
|
||||||
class Discord extends ChangeNotifier {
|
class Discord extends ChangeNotifier {
|
||||||
final DiscordRPC? discordRPC;
|
final DiscordRPC? discordRPC;
|
||||||
@ -23,8 +23,7 @@ class Discord extends ChangeNotifier {
|
|||||||
|
|
||||||
void updatePresence(Track track) {
|
void updatePresence(Track track) {
|
||||||
clear();
|
clear();
|
||||||
final artistNames =
|
final artistNames = track.artists?.asString() ?? "";
|
||||||
TypeConversionUtils.artists_X_String(track.artists ?? <Artist>[]);
|
|
||||||
discordRPC?.updatePresence(
|
discordRPC?.updatePresence(
|
||||||
DiscordPresence(
|
DiscordPresence(
|
||||||
details: "Song: ${track.name} by $artistNames",
|
details: "Song: ${track.name} by $artistNames",
|
||||||
|
@ -9,6 +9,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|||||||
import 'package:metadata_god/metadata_god.dart';
|
import 'package:metadata_god/metadata_god.dart';
|
||||||
import 'package:path/path.dart';
|
import 'package:path/path.dart';
|
||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/image.dart';
|
import 'package:spotube/extensions/image.dart';
|
||||||
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
|
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
|
||||||
import 'package:spotube/services/download_manager/download_manager.dart';
|
import 'package:spotube/services/download_manager/download_manager.dart';
|
||||||
@ -137,7 +138,7 @@ class DownloadManagerProvider extends ChangeNotifier {
|
|||||||
|
|
||||||
String getTrackFileUrl(Track track) {
|
String getTrackFileUrl(Track track) {
|
||||||
final name =
|
final name =
|
||||||
"${track.name} - ${TypeConversionUtils.artists_X_String(track.artists ?? <Artist>[])}.${downloadCodec.name}";
|
"${track.name} - ${track.artists?.asString() ?? ""}.${downloadCodec.name}";
|
||||||
return join(downloadDirectory, PrimitiveUtils.toSafeFileName(name));
|
return join(downloadDirectory, PrimitiveUtils.toSafeFileName(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|||||||
import 'package:scrobblenaut/scrobblenaut.dart';
|
import 'package:scrobblenaut/scrobblenaut.dart';
|
||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/collections/env.dart';
|
import 'package:spotube/collections/env.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
||||||
import 'package:spotube/utils/persisted_state_notifier.dart';
|
import 'package:spotube/utils/persisted_state_notifier.dart';
|
||||||
import 'package:spotube/utils/type_conversion_utils.dart';
|
import 'package:spotube/utils/type_conversion_utils.dart';
|
||||||
@ -85,14 +86,14 @@ class ScrobblerNotifier extends PersistedStateNotifier<ScrobblerState?> {
|
|||||||
|
|
||||||
Future<void> love(Track track) async {
|
Future<void> love(Track track) async {
|
||||||
await state?.scrobblenaut.track.love(
|
await state?.scrobblenaut.track.love(
|
||||||
artist: TypeConversionUtils.artists_X_String(track.artists!),
|
artist: track.artists!.asString(),
|
||||||
track: track.name!,
|
track: track.name!,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> unlove(Track track) async {
|
Future<void> unlove(Track track) async {
|
||||||
await state?.scrobblenaut.track.unLove(
|
await state?.scrobblenaut.track.unLove(
|
||||||
artist: TypeConversionUtils.artists_X_String(track.artists!),
|
artist: track.artists!.asString(),
|
||||||
track: track.name!,
|
track: track.name!,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ class AudioServices {
|
|||||||
id: track.id!,
|
id: track.id!,
|
||||||
album: track.album?.name ?? "",
|
album: track.album?.name ?? "",
|
||||||
title: track.name!,
|
title: track.name!,
|
||||||
artist: TypeConversionUtils.artists_X_String(track.artists ?? <Artist>[]),
|
artist: track.artists?.toString() ?? "",
|
||||||
duration: track is SourcedTrack
|
duration: track is SourcedTrack
|
||||||
? track.sourceInfo.duration
|
? track.sourceInfo.duration
|
||||||
: Duration(milliseconds: track.durationMs ?? 0),
|
: Duration(milliseconds: track.durationMs ?? 0),
|
||||||
|
@ -3,6 +3,7 @@ import 'dart:async';
|
|||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:smtc_windows/smtc_windows.dart';
|
import 'package:smtc_windows/smtc_windows.dart';
|
||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
|
import 'package:spotube/extensions/artist_simple.dart';
|
||||||
import 'package:spotube/extensions/image.dart';
|
import 'package:spotube/extensions/image.dart';
|
||||||
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
import 'package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart';
|
||||||
import 'package:spotube/services/audio_player/audio_player.dart';
|
import 'package:spotube/services/audio_player/audio_player.dart';
|
||||||
@ -85,8 +86,7 @@ class WindowsAudioService {
|
|||||||
MusicMetadata(
|
MusicMetadata(
|
||||||
title: track.name!,
|
title: track.name!,
|
||||||
albumArtist: track.artists?.firstOrNull?.name ?? "Unknown",
|
albumArtist: track.artists?.firstOrNull?.name ?? "Unknown",
|
||||||
artist:
|
artist: track.artists?.asString() ?? "Unknown",
|
||||||
TypeConversionUtils.artists_X_String<Artist>(track.artists ?? []),
|
|
||||||
album: track.album?.name ?? "Unknown",
|
album: track.album?.name ?? "Unknown",
|
||||||
thumbnail: (track.album?.images).asUrlString(
|
thumbnail: (track.album?.images).asUrlString(
|
||||||
placeholder: ImagePlaceholder.albumArt,
|
placeholder: ImagePlaceholder.albumArt,
|
||||||
|
@ -17,10 +17,6 @@ enum ImagePlaceholder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract class TypeConversionUtils {
|
abstract class TypeConversionUtils {
|
||||||
static String artists_X_String<T extends ArtistSimple>(List<T> artists) {
|
|
||||||
return artists.map((e) => e.name?.replaceAll(",", " ")).join(", ");
|
|
||||||
}
|
|
||||||
|
|
||||||
static Widget artists_X_ClickableArtists(
|
static Widget artists_X_ClickableArtists(
|
||||||
List<ArtistSimple> artists, {
|
List<ArtistSimple> artists, {
|
||||||
WrapCrossAlignment crossAxisAlignment = WrapCrossAlignment.center,
|
WrapCrossAlignment crossAxisAlignment = WrapCrossAlignment.center,
|
||||||
|
Loading…
Reference in New Issue
Block a user