Newer
Older
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:scrobbles/cubit/settings_global_cubit.dart';
import 'package:scrobbles/models/data/statistics_recent.dart';
import 'package:scrobbles/network/scrobbles.dart';
part 'data_statistics_recent_state.dart';
class DataStatisticsRecentCubit extends HydratedCubit<DataStatisticsRecentState> {
DataStatisticsRecentCubit()
: super(const DataStatisticsRecentState(
statisticsRecent: null,
status: '',
));
void setLoading() {
emit(DataStatisticsRecentState(
statisticsRecent: state.statisticsRecent,
status: 'loading',
));
void setValue(StatisticsRecentData? statisticsRecent) {
emit(DataStatisticsRecentState(
statisticsRecent: statisticsRecent,
status: '',
));
}
void setFailed() {
emit(DataStatisticsRecentState(
statisticsRecent: state.statisticsRecent,
status: 'failed',
));
}
void setLoaded() {
emit(DataStatisticsRecentState(
statisticsRecent: state.statisticsRecent,
status: '',
));
void update(StatisticsRecentData? statisticsRecent) {
if ((statisticsRecent != null) &&
(state.statisticsRecent.toString() != statisticsRecent.toString())) {
void refresh(BuildContext context) async {
setLoading();
GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context);
final int daysCount = settings.getStatisticsRecentDaysCount();
final StatisticsRecentData? data = await ScrobblesApi.fetchRecentStatistics(daysCount);
if (data != null) {
update(data);
} else {
setFailed();
}
}
@override
DataStatisticsRecentState? fromJson(Map<String, dynamic> json) {
return DataStatisticsRecentState(
statisticsRecent: StatisticsRecentData.fromJson(json['statisticsRecent']),
);
}
@override
Map<String, Object?>? toJson(DataStatisticsRecentState state) {
return <String, Object?>{
'statisticsRecent': state.statisticsRecent?.toJson(),