import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; import 'package:scrobbles/config/default_settings.dart'; part 'settings_state.dart'; class SettingsCubit extends HydratedCubit<SettingsState> { SettingsCubit() : super(const SettingsState()); String getUsername() { return state.username ?? ''; } String getSecurityToken() { return state.securityToken ?? ''; } int getCountsByDayDaysCount() { return state.countsByDayDaysCount ?? DefaultSettings.defaultCountsByDayDaysCount; } int getCountsByHourDaysCount() { return state.countsByHourDaysCount ?? DefaultSettings.defaultCountsByHourDaysCount; } int getDiscoveriesDaysCount() { return state.discoveriesDaysCount ?? DefaultSettings.defaultDiscoveriesDaysCount; } int getStatisticsRecentDaysCount() { return state.statisticsRecentDaysCount ?? DefaultSettings.defaultStatisticsRecentDaysCount; } int getTimelineDaysCount() { return state.timelineDaysCount ?? DefaultSettings.defaultTimelineDaysCount; } int getTopArtistsDaysCount() { return state.topArtistsDaysCount ?? DefaultSettings.defaultTopArtistsDaysCount; } void setValues({ String? username, String? securityToken, int? countsByDayDaysCount, int? countsByHourDaysCount, int? discoveriesDaysCount, int? statisticsRecentDaysCount, int? timelineDaysCount, int? topArtistsDaysCount, }) { emit(SettingsState( username: username ?? state.username, securityToken: securityToken ?? state.securityToken, countsByDayDaysCount: countsByDayDaysCount ?? state.countsByDayDaysCount, countsByHourDaysCount: countsByHourDaysCount ?? state.countsByHourDaysCount, discoveriesDaysCount: discoveriesDaysCount ?? state.discoveriesDaysCount, statisticsRecentDaysCount: statisticsRecentDaysCount ?? state.statisticsRecentDaysCount, timelineDaysCount: timelineDaysCount ?? state.timelineDaysCount, topArtistsDaysCount: topArtistsDaysCount ?? state.topArtistsDaysCount, )); } @override SettingsState? fromJson(Map<String, dynamic> json) { String username = json['username'] as String; String securityToken = json['securityToken'] as String; int countsByDayDaysCount = json['countsByDayDaysCount'] as int; int countsByHourDaysCount = json['countsByHourDaysCount'] as int; int discoveriesDaysCount = json['discoveriesDaysCount'] as int; int statisticsRecentDaysCount = json['statisticsRecentDaysCount'] as int; int timelineDaysCount = json['timelineDaysCount'] as int; int topArtistsDaysCount = json['topArtistsDaysCount'] as int; return SettingsState( username: username, securityToken: securityToken, countsByDayDaysCount: countsByDayDaysCount, countsByHourDaysCount: countsByHourDaysCount, discoveriesDaysCount: discoveriesDaysCount, statisticsRecentDaysCount: statisticsRecentDaysCount, timelineDaysCount: timelineDaysCount, topArtistsDaysCount: topArtistsDaysCount, ); } @override Map<String, dynamic>? toJson(SettingsState state) { return <String, dynamic>{ 'username': state.username ?? '', 'securityToken': state.securityToken ?? '', 'countsByDayDaysCount': state.countsByDayDaysCount ?? DefaultSettings.defaultCountsByDayDaysCount, 'countsByHourDaysCount': state.countsByHourDaysCount ?? DefaultSettings.defaultCountsByHourDaysCount, 'discoveriesDaysCount': state.discoveriesDaysCount ?? DefaultSettings.defaultDiscoveriesDaysCount, 'statisticsRecentDaysCount': state.statisticsRecentDaysCount ?? DefaultSettings.defaultStatisticsRecentDaysCount, 'timelineDaysCount': state.timelineDaysCount ?? DefaultSettings.defaultTimelineDaysCount, 'topArtistsDaysCount': state.topArtistsDaysCount ?? DefaultSettings.defaultTopArtistsDaysCount, }; } }