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

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

part 'data_top_artists_state.dart';

class DataTopArtistsCubit extends HydratedCubit<DataTopArtistsState> {
  DataTopArtistsCubit() : super(const DataTopArtistsState());

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

  TopArtistsData? getValue(key) {
    return state.topArtists;
  }

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

  void setValue(TopArtistsData? topArtists) {
    emit(DataTopArtistsState(
      topArtists: topArtists,
    ));
  }

  @override
  DataTopArtistsState? fromJson(Map<String, dynamic> json) {
    return DataTopArtistsState(
      topArtists: TopArtistsData.fromJson(json['topArtists']),
    );
  }

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