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