chore: use enum properties for history duration in top stats

This commit is contained in:
Kingkor Roy Tirtho 2024-06-30 18:31:57 +06:00
parent 261e1b6685
commit 4c5564fd2f

View File

@ -8,20 +8,24 @@ import 'package:spotube/models/database/database.dart';
import 'package:spotube/provider/database/database.dart'; import 'package:spotube/provider/database/database.dart';
enum HistoryDuration { enum HistoryDuration {
allTime, allTime(Duration(days: 365 * 2003)),
days7, days7(Duration(days: 7)),
days30, days30(Duration(days: 30)),
months6, months6(Duration(days: 30 * 6)),
year, year(Duration(days: 365)),
years2, years2(Duration(days: 365 * 2));
final Duration duration;
const HistoryDuration(this.duration);
} }
final playbackHistoryTopDurationProvider = final playbackHistoryTopDurationProvider =
StateProvider((ref) => HistoryDuration.days30); StateProvider((ref) => HistoryDuration.days30);
typedef PlaybackHistoryTrack = ({int count, Track track});
typedef PlaybackHistoryAlbum = ({int count, AlbumSimple album}); typedef PlaybackHistoryAlbum = ({int count, AlbumSimple album});
typedef PlaybackHistoryPlaylist = ({int count, PlaylistSimple playlist}); typedef PlaybackHistoryPlaylist = ({int count, PlaylistSimple playlist});
typedef PlaybackHistoryTrack = ({int count, Track track});
typedef PlaybackHistoryArtist = ({int count, Artist artist}); typedef PlaybackHistoryArtist = ({int count, Artist artist});
class PlaybackHistoryTopState { class PlaybackHistoryTopState {
@ -58,14 +62,7 @@ class PlaybackHistoryTopNotifier
build(arg) async { build(arg) async {
final database = ref.watch(databaseProvider); final database = ref.watch(databaseProvider);
final duration = switch (arg) { final duration = arg.duration;
HistoryDuration.allTime => const Duration(days: 365 * 2003),
HistoryDuration.days7 => const Duration(days: 7),
HistoryDuration.days30 => const Duration(days: 30),
HistoryDuration.months6 => const Duration(days: 30 * 6),
HistoryDuration.year => const Duration(days: 365),
HistoryDuration.years2 => const Duration(days: 365 * 2),
};
final tracksQuery = (database.select(database.historyTable) final tracksQuery = (database.select(database.historyTable)
..where( ..where(