mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 07:55:18 +00:00
feat: sort tracks by newest and oldest dates
This commit is contained in:
parent
af6ab5fc2c
commit
b4713e377a
@ -52,7 +52,8 @@ enum SortBy {
|
|||||||
descending,
|
descending,
|
||||||
artist,
|
artist,
|
||||||
album,
|
album,
|
||||||
dateAdded,
|
newest,
|
||||||
|
oldest,
|
||||||
}
|
}
|
||||||
|
|
||||||
final localTracksProvider = FutureProvider<List<LocalTrack>>((ref) async {
|
final localTracksProvider = FutureProvider<List<LocalTrack>>((ref) async {
|
||||||
|
@ -16,6 +16,7 @@ class SortTracksDropdown extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
var theme = Theme.of(context);
|
||||||
return ListTileTheme(
|
return ListTileTheme(
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
@ -47,11 +48,19 @@ class SortTracksDropdown extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
PopSheetEntry(
|
PopSheetEntry(
|
||||||
value: SortBy.dateAdded,
|
value: SortBy.newest,
|
||||||
enabled: value != SortBy.dateAdded,
|
enabled: value != SortBy.newest,
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
enabled: value != SortBy.dateAdded,
|
enabled: value != SortBy.newest,
|
||||||
title: Text(context.l10n.sort_date),
|
title: Text(context.l10n.sort_newest),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
PopSheetEntry(
|
||||||
|
value: SortBy.oldest,
|
||||||
|
enabled: value != SortBy.oldest,
|
||||||
|
child: ListTile(
|
||||||
|
enabled: value != SortBy.oldest,
|
||||||
|
title: Text(context.l10n.sort_oldest),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
PopSheetEntry(
|
PopSheetEntry(
|
||||||
@ -79,7 +88,7 @@ class SortTracksDropdown extends StatelessWidget {
|
|||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),
|
padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),
|
||||||
child: DefaultTextStyle(
|
child: DefaultTextStyle(
|
||||||
style: Theme.of(context).textTheme.titleSmall!,
|
style: theme.textTheme.titleSmall!,
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
const Icon(SpotubeIcons.sort),
|
const Icon(SpotubeIcons.sort),
|
||||||
|
@ -50,7 +50,6 @@ class TracksTableView extends HookConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(context, ref) {
|
Widget build(context, ref) {
|
||||||
final theme = Theme.of(context);
|
|
||||||
final mediaQuery = MediaQuery.of(context);
|
final mediaQuery = MediaQuery.of(context);
|
||||||
|
|
||||||
ref.watch(ProxyPlaylistNotifier.provider);
|
ref.watch(ProxyPlaylistNotifier.provider);
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
"none": "কোনটিই না",
|
"none": "কোনটিই না",
|
||||||
"sort_a_z": "A-Z ক্রমে সাজান",
|
"sort_a_z": "A-Z ক্রমে সাজান",
|
||||||
"sort_z_a": "Z-A ক্রমে সাজান",
|
"sort_z_a": "Z-A ক্রমে সাজান",
|
||||||
"sort_date": "তারিখের ক্রমে সাজান",
|
|
||||||
"sort_artist": "শিল্পীর ক্রমে সাজান",
|
"sort_artist": "শিল্পীর ক্রমে সাজান",
|
||||||
"sort_album": "অ্যালবামের ক্রমে সাজান",
|
"sort_album": "অ্যালবামের ক্রমে সাজান",
|
||||||
"sort_tracks": "গানের ক্রম",
|
"sort_tracks": "গানের ক্রম",
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
"none": "None",
|
"none": "None",
|
||||||
"sort_a_z": "Sort by A-Z",
|
"sort_a_z": "Sort by A-Z",
|
||||||
"sort_z_a": "Sort by Z-A",
|
"sort_z_a": "Sort by Z-A",
|
||||||
"sort_date": "Sort by date",
|
|
||||||
"sort_artist": "Sort by Artist",
|
"sort_artist": "Sort by Artist",
|
||||||
"sort_album": "Sort by Album",
|
"sort_album": "Sort by Album",
|
||||||
"sort_tracks": "Sort Tracks",
|
"sort_tracks": "Sort Tracks",
|
||||||
@ -238,5 +237,7 @@
|
|||||||
"dislikes": "Dislikes",
|
"dislikes": "Dislikes",
|
||||||
"views": "Views",
|
"views": "Views",
|
||||||
"streamUrl": "Stream URL",
|
"streamUrl": "Stream URL",
|
||||||
"stop": "Stop"
|
"stop": "Stop",
|
||||||
|
"sort_newest": "Sort by newest added",
|
||||||
|
"sort_oldest": "Sort by oldest added"
|
||||||
}
|
}
|
@ -37,7 +37,6 @@
|
|||||||
"none": "Aucun",
|
"none": "Aucun",
|
||||||
"sort_a_z": "Trier par ordre alphabétique",
|
"sort_a_z": "Trier par ordre alphabétique",
|
||||||
"sort_z_a": "Trier par ordre alphabétique inverse",
|
"sort_z_a": "Trier par ordre alphabétique inverse",
|
||||||
"sort_date": "Trier par date",
|
|
||||||
"sort_artist": "Trier par artiste",
|
"sort_artist": "Trier par artiste",
|
||||||
"sort_album": "Trier par album",
|
"sort_album": "Trier par album",
|
||||||
"sort_tracks": "Trier les pistes",
|
"sort_tracks": "Trier les pistes",
|
||||||
|
@ -37,7 +37,6 @@
|
|||||||
"none": "कोई नहीं",
|
"none": "कोई नहीं",
|
||||||
"sort_a_z": "A-Z सॉर्ट करें",
|
"sort_a_z": "A-Z सॉर्ट करें",
|
||||||
"sort_z_a": "Z-A सॉर्ट करें",
|
"sort_z_a": "Z-A सॉर्ट करें",
|
||||||
"sort_date": "तिथि के अनुसार सॉर्ट करें",
|
|
||||||
"sort_artist": "कलाकार के अनुसार सॉर्ट करें",
|
"sort_artist": "कलाकार के अनुसार सॉर्ट करें",
|
||||||
"sort_album": "एल्बम के अनुसार सॉर्ट करें",
|
"sort_album": "एल्बम के अनुसार सॉर्ट करें",
|
||||||
"sort_tracks": "ट्रैक को सॉर्ट करें",
|
"sort_tracks": "ट्रैक को सॉर्ट करें",
|
||||||
|
@ -271,12 +271,14 @@ abstract class ServiceUtils {
|
|||||||
0;
|
0;
|
||||||
case SortBy.ascending:
|
case SortBy.ascending:
|
||||||
return a.name?.compareTo(b.name ?? "") ?? 0;
|
return a.name?.compareTo(b.name ?? "") ?? 0;
|
||||||
case SortBy.dateAdded:
|
case SortBy.oldest:
|
||||||
final aDate =
|
final aDate = DateTime.parse(a.album?.releaseDate ?? "2069-01-01");
|
||||||
double.parse(a.album?.releaseDate?.split("-").first ?? "2069");
|
final bDate = DateTime.parse(b.album?.releaseDate ?? "2069-01-01");
|
||||||
final bDate =
|
|
||||||
double.parse(b.album?.releaseDate?.split("-").first ?? "2069");
|
|
||||||
return aDate.compareTo(bDate);
|
return aDate.compareTo(bDate);
|
||||||
|
case SortBy.newest:
|
||||||
|
final aDate = DateTime.parse(a.album?.releaseDate ?? "2069-01-01");
|
||||||
|
final bDate = DateTime.parse(b.album?.releaseDate ?? "2069-01-01");
|
||||||
|
return bDate.compareTo(aDate);
|
||||||
case SortBy.descending:
|
case SortBy.descending:
|
||||||
return b.name?.compareTo(a.name ?? "") ?? 0;
|
return b.name?.compareTo(a.name ?? "") ?? 0;
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user