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

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

part 'data_heatmap_state.dart';

class DataHeatmapCubit extends HydratedCubit<DataHeatmapState> {
  DataHeatmapCubit() : super(const DataHeatmapState());

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

  HeatmapData? getValue() {
    return state.heatmap;
  }

  void update(HeatmapData? heatmapData) {
    if ((heatmapData != null) && (state.heatmap.toString() != heatmapData.toString())) {
      setValue(heatmapData);
    }
  }

  void setValue(HeatmapData? heatmapData) {
    emit(DataHeatmapState(
      heatmap: heatmapData,
    ));
  }

  @override
  DataHeatmapState? fromJson(Map<String, dynamic> json) {
    return DataHeatmapState(
      heatmap: HeatmapData.fromJson(json['heatmap']),
    );
  }

  @override
  Map<String, Object?>? toJson(DataHeatmapState state) {
    return <String, Object?>{
      'heatmap': state.heatmap?.toJson(),
    };
  }
}