mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-12 23:45:18 +00:00
fix: no appropriate output when playlist is empty #201
This commit is contained in:
parent
9b3ef2ffa2
commit
dbb81de763
@ -4,6 +4,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:queue/queue.dart';
|
||||
import 'package:spotify/spotify.dart';
|
||||
import 'package:spotube/components/Shared/DownloadConfirmationDialog.dart';
|
||||
import 'package:spotube/components/Shared/NotFound.dart';
|
||||
import 'package:spotube/components/Shared/TrackTile.dart';
|
||||
import 'package:spotube/hooks/useBreakpoints.dart';
|
||||
import 'package:spotube/provider/Downloader.dart';
|
||||
@ -50,7 +51,9 @@ class TracksTableView extends HookConsumerWidget {
|
||||
[tracks],
|
||||
);
|
||||
|
||||
final children = [
|
||||
final children = tracks.isEmpty
|
||||
? [const NotFound(vertical: true)]
|
||||
: [
|
||||
if (heading != null) heading!,
|
||||
Row(
|
||||
children: [
|
||||
@ -160,10 +163,12 @@ class TracksTableView extends HookConsumerWidget {
|
||||
},
|
||||
onTap: () {
|
||||
if (showCheck.value) {
|
||||
final alreadyChecked = selected.value.contains(track.value.id);
|
||||
final alreadyChecked =
|
||||
selected.value.contains(track.value.id);
|
||||
if (alreadyChecked) {
|
||||
selected.value =
|
||||
selected.value.where((id) => id != track.value.id).toList();
|
||||
selected.value = selected.value
|
||||
.where((id) => id != track.value.id)
|
||||
.toList();
|
||||
} else {
|
||||
selected.value = [...selected.value, track.value.id!];
|
||||
}
|
||||
@ -186,8 +191,9 @@ class TracksTableView extends HookConsumerWidget {
|
||||
if (checked == true) {
|
||||
selected.value = [...selected.value, track.value.id!];
|
||||
} else {
|
||||
selected.value =
|
||||
selected.value.where((id) => id != track.value.id).toList();
|
||||
selected.value = selected.value
|
||||
.where((id) => id != track.value.id)
|
||||
.toList();
|
||||
}
|
||||
},
|
||||
),
|
||||
@ -195,6 +201,7 @@ class TracksTableView extends HookConsumerWidget {
|
||||
}).toList(),
|
||||
if (bottomSpace) const SizedBox(height: 70),
|
||||
];
|
||||
|
||||
if (isSliver) {
|
||||
return SliverList(delegate: SliverChildListDelegate(children));
|
||||
}
|
||||
|
@ -6,16 +6,16 @@ import 'package:path_provider/path_provider.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
import 'package:spotube/utils/platform.dart';
|
||||
|
||||
final _loggerFactory = _SpotubeLogger();
|
||||
final _loggerFactory = SpotubeLogger();
|
||||
|
||||
_SpotubeLogger getLogger<T>(T owner) {
|
||||
SpotubeLogger getLogger<T>(T owner) {
|
||||
_loggerFactory.owner = owner is String ? owner : owner.toString();
|
||||
return _loggerFactory;
|
||||
}
|
||||
|
||||
class _SpotubeLogger extends Logger {
|
||||
class SpotubeLogger extends Logger {
|
||||
String? owner;
|
||||
_SpotubeLogger([this.owner]) : super(filter: _SpotubeLogFilter());
|
||||
SpotubeLogger([this.owner]) : super(filter: _SpotubeLogFilter());
|
||||
|
||||
@override
|
||||
void log(Level level, message, [error, StackTrace? stackTrace]) async {
|
||||
|
@ -1,6 +1,7 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:spotube/models/Logger.dart';
|
||||
import 'package:spotube/models/LyricsModels.dart';
|
||||
import 'package:spotube/provider/Playback.dart';
|
||||
import 'package:spotube/provider/SpotifyDI.dart';
|
||||
@ -106,6 +107,7 @@ final currentUserSavedTracksQuery = FutureProvider<List<Track>>((ref) {
|
||||
|
||||
final playlistTracksQuery = FutureProvider.family<List<Track>, String>(
|
||||
(ref, id) {
|
||||
try {
|
||||
final spotify = ref.watch(spotifyProvider);
|
||||
return id != "user-liked-tracks"
|
||||
? spotify.playlists.getTracksByPlaylistId(id).all().then(
|
||||
@ -114,6 +116,14 @@ final playlistTracksQuery = FutureProvider.family<List<Track>, String>(
|
||||
: spotify.tracks.me.saved.all().then(
|
||||
(tracks) => tracks.map((e) => e.track!).toList(),
|
||||
);
|
||||
} catch (e, stack) {
|
||||
getLogger("playlistTracksQuery").e(
|
||||
"Fetching playlist tracks",
|
||||
e,
|
||||
stack,
|
||||
);
|
||||
return [];
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user