Skip to content
Snippets Groups Projects
settings_cubit.dart 3.90 KiB
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;