diff --git a/lib/components/shared/playbutton_card.dart b/lib/components/shared/playbutton_card.dart index 31c0f20d0..1569f4536 100644 --- a/lib/components/shared/playbutton_card.dart +++ b/lib/components/shared/playbutton_card.dart @@ -142,13 +142,13 @@ class PlaybuttonCard extends HookWidget { textDirection: TextDirection.ltr, bottom: 10, end: 5, - child: Row( + child: Column( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.end, children: [ if (!isPlaying) addToQueueButton, if (platform != TargetPlatform.linux) - const SizedBox(width: 5), + const SizedBox(height: 5), playButton, ], ), diff --git a/lib/models/spotube_track.dart b/lib/models/spotube_track.dart index ce361b09b..95d2998d2 100644 --- a/lib/models/spotube_track.dart +++ b/lib/models/spotube_track.dart @@ -1,7 +1,9 @@ import 'dart:async'; +import 'package:catcher/catcher.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; +import 'package:pocketbase/pocketbase.dart'; import 'package:spotify/spotify.dart'; import 'package:spotube/extensions/video.dart'; import 'package:spotube/extensions/album_simple.dart'; @@ -65,7 +67,7 @@ class SpotubeTrack extends Track { uri = track.uri; } - static Future fromFetchTrack( + static Future fetchFromTrack( Track track, UserPreferences preferences) async { final artists = (track.artists ?? []) .map((ar) => ar.name) @@ -79,16 +81,17 @@ class SpotubeTrack extends Track { onlyCleanArtist: true, ).trim(); - final cachedTracks = await pb.collection(BackendTrack.collection).getList( - filter: "spotify_id = '${track.id}'", - sort: "-votes", - page: 0, - perPage: 1, - ); + final cachedTracks = await Future.value( + pb + .collection(BackendTrack.collection) + .getFirstListItem("spotify_id = '${track.id}'"), + ).catchError((e, stack) { + Catcher.reportCheckedError(e, stack); + return null; + }); - final cachedTrack = cachedTracks.items.isNotEmpty - ? BackendTrack.fromRecord(cachedTracks.items.first) - : null; + final cachedTrack = + cachedTracks != null ? BackendTrack.fromRecord(cachedTracks) : null; Video ytVideo; List