feat: sort tracks by newest and oldest dates

This commit is contained in:
Kingkor Roy Tirtho 2023-06-18 15:28:44 +06:00
parent af6ab5fc2c
commit b4713e377a
8 changed files with 27 additions and 18 deletions

View File

@ -52,7 +52,8 @@ enum SortBy {
descending,
artist,
album,
dateAdded,
newest,
oldest,
}
final localTracksProvider = FutureProvider<List<LocalTrack>>((ref) async {

View File

@ -16,6 +16,7 @@ class SortTracksDropdown extends StatelessWidget {
@override
Widget build(BuildContext context) {
var theme = Theme.of(context);
return ListTileTheme(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
@ -47,11 +48,19 @@ class SortTracksDropdown extends StatelessWidget {
),
),
PopSheetEntry(
value: SortBy.dateAdded,
enabled: value != SortBy.dateAdded,
value: SortBy.newest,
enabled: value != SortBy.newest,
child: ListTile(
enabled: value != SortBy.dateAdded,
title: Text(context.l10n.sort_date),
enabled: value != SortBy.newest,
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(
@ -79,7 +88,7 @@ class SortTracksDropdown extends StatelessWidget {
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4.0),
child: DefaultTextStyle(
style: Theme.of(context).textTheme.titleSmall!,
style: theme.textTheme.titleSmall!,
child: Row(
children: [
const Icon(SpotubeIcons.sort),

View File

@ -50,7 +50,6 @@ class TracksTableView extends HookConsumerWidget {
@override
Widget build(context, ref) {
final theme = Theme.of(context);
final mediaQuery = MediaQuery.of(context);
ref.watch(ProxyPlaylistNotifier.provider);

View File

@ -37,7 +37,6 @@
"none": "কোনটিই না",
"sort_a_z": "A-Z ক্রমে সাজান",
"sort_z_a": "Z-A ক্রমে সাজান",
"sort_date": "তারিখের ক্রমে সাজান",
"sort_artist": "শিল্পীর ক্রমে সাজান",
"sort_album": "অ্যালবামের ক্রমে সাজান",
"sort_tracks": "গানের ক্রম",

View File

@ -37,7 +37,6 @@
"none": "None",
"sort_a_z": "Sort by A-Z",
"sort_z_a": "Sort by Z-A",
"sort_date": "Sort by date",
"sort_artist": "Sort by Artist",
"sort_album": "Sort by Album",
"sort_tracks": "Sort Tracks",
@ -238,5 +237,7 @@
"dislikes": "Dislikes",
"views": "Views",
"streamUrl": "Stream URL",
"stop": "Stop"
"stop": "Stop",
"sort_newest": "Sort by newest added",
"sort_oldest": "Sort by oldest added"
}

View File

@ -37,7 +37,6 @@
"none": "Aucun",
"sort_a_z": "Trier par ordre alphabétique",
"sort_z_a": "Trier par ordre alphabétique inverse",
"sort_date": "Trier par date",
"sort_artist": "Trier par artiste",
"sort_album": "Trier par album",
"sort_tracks": "Trier les pistes",

View File

@ -37,7 +37,6 @@
"none": "कोई नहीं",
"sort_a_z": "A-Z सॉर्ट करें",
"sort_z_a": "Z-A सॉर्ट करें",
"sort_date": "तिथि के अनुसार सॉर्ट करें",
"sort_artist": "कलाकार के अनुसार सॉर्ट करें",
"sort_album": "एल्बम के अनुसार सॉर्ट करें",
"sort_tracks": "ट्रैक को सॉर्ट करें",

View File

@ -271,12 +271,14 @@ abstract class ServiceUtils {
0;
case SortBy.ascending:
return a.name?.compareTo(b.name ?? "") ?? 0;
case SortBy.dateAdded:
final aDate =
double.parse(a.album?.releaseDate?.split("-").first ?? "2069");
final bDate =
double.parse(b.album?.releaseDate?.split("-").first ?? "2069");
case SortBy.oldest:
final aDate = DateTime.parse(a.album?.releaseDate ?? "2069-01-01");
final bDate = DateTime.parse(b.album?.releaseDate ?? "2069-01-01");
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:
return b.name?.compareTo(a.name ?? "") ?? 0;
default: