import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';

import 'package:scrobbles/models/counts_by_day.dart';

part 'data_counts_by_day_state.dart';

class DataCountsByDayCubit extends HydratedCubit<DataCountsByDayState> {
  DataCountsByDayCubit() : super(const DataCountsByDayState());

  void getData(DataCountsByDayState state) {
    emit(state);
  }

  CountsByDayData? getValue() {
    return state.countsByDay;
  }

  void update(CountsByDayData? countsByDay) {
    if ((countsByDay != null) && (state.countsByDay.toString() != countsByDay.toString())) {
      setValue(countsByDay);
    }
  }

  void setValue(CountsByDayData? countsByDay) {
    emit(DataCountsByDayState(
      countsByDay: countsByDay,
    ));
  }

  @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(),
    };
  }
}