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

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

part 'data_discoveries_state.dart';

class DataDiscoveriesCubit extends HydratedCubit<DataDiscoveriesState> {
  DataDiscoveriesCubit() : super(const DataDiscoveriesState());

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

  DiscoveriesData? getValue() {
    return state.discoveries;
  }

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

  void setValue(DiscoveriesData? discoveries) {
    emit(DataDiscoveriesState(
      discoveries: discoveries,
    ));
  }

  @override
  DataDiscoveriesState? fromJson(Map<String, dynamic> json) {
    return DataDiscoveriesState(
      discoveries: DiscoveriesData.fromJson(json['discoveries']),
    );
  }

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