import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:scrobbles/models/data/statistics_global.dart'; import 'package:scrobbles/network/scrobbles.dart'; part 'data_statistics_global_state.dart'; class DataStatisticsGlobalCubit extends HydratedCubit<DataStatisticsGlobalState> { DataStatisticsGlobalCubit() : super(const DataStatisticsGlobalState( statisticsGlobal: null, status: '', )); void setLoading() { emit(DataStatisticsGlobalState( statisticsGlobal: state.statisticsGlobal, status: 'loading', )); } void setValue(StatisticsGlobalData? statisticsGlobal) { emit(DataStatisticsGlobalState( statisticsGlobal: statisticsGlobal, status: '', )); } void setFailed() { emit(DataStatisticsGlobalState( statisticsGlobal: state.statisticsGlobal, status: 'failed', )); } void setLoaded() { emit(DataStatisticsGlobalState( statisticsGlobal: state.statisticsGlobal, status: '', )); } void update(StatisticsGlobalData? statisticsGlobal) { if ((statisticsGlobal != null) && (state.statisticsGlobal.toString() != statisticsGlobal.toString())) { setValue(statisticsGlobal); } else { setLoaded(); } } void refresh(BuildContext context) async { setLoading(); final StatisticsGlobalData? data = await ScrobblesApi.fetchGlobalStatistics(); if (data != null) { update(data); } else { setFailed(); } } @override DataStatisticsGlobalState? fromJson(Map<String, dynamic> json) { return DataStatisticsGlobalState( statisticsGlobal: StatisticsGlobalData.fromJson(json['statisticsGlobal']), status: '', ); } @override Map<String, Object?>? toJson(DataStatisticsGlobalState state) { return <String, Object?>{ 'statisticsGlobal': state.statisticsGlobal?.toJson(), 'status': state.status, }; } }