diff --git a/fastlane/metadata/android/en-US/changelogs/69.txt b/fastlane/metadata/android/en-US/changelogs/69.txt new file mode 100644 index 0000000000000000000000000000000000000000..c20ed39173f1690cb6181457fe5d4c6cc0a061ab --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/69.txt @@ -0,0 +1 @@ +Use ActivityParameters widgets from flutter_custom_toolbox. diff --git a/fastlane/metadata/android/fr-FR/changelogs/69.txt b/fastlane/metadata/android/fr-FR/changelogs/69.txt new file mode 100644 index 0000000000000000000000000000000000000000..f732ebd3738d66fdff72e28b0cf0bb4b0684e030 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/69.txt @@ -0,0 +1 @@ +Utilisation des widgets ActivityParameters de flutter_custom_toolbox. diff --git a/lib/common/config/activity_page.dart b/lib/common/config/activity_page.dart index 79141ebc05312d6e2087f208daaf5bc66954dbe8..7af76c4f550a132b7fa9e364d4b2f7fa2d0c5fe7 100644 --- a/lib/common/config/activity_page.dart +++ b/lib/common/config/activity_page.dart @@ -1,19 +1,22 @@ import 'package:flutter/material.dart'; +import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:ionicons/ionicons.dart'; import 'package:scrobbles/common/ui/pages/discoveries.dart'; import 'package:scrobbles/common/ui/pages/home.dart'; import 'package:scrobbles/common/ui/pages/statistics.dart'; +import 'package:scrobbles/cubit/activity/activity_cubit.dart'; +import 'package:scrobbles/models/activity/activity.dart'; class ActivityPageItem { final String code; final Icon icon; - final Widget page; + final Widget Function({required Activity currentActivity})? builder; const ActivityPageItem({ required this.code, required this.icon, - required this.page, + required this.builder, }); } @@ -21,24 +24,30 @@ class ActivityPage { static const bool displayBottomNavBar = false; static const indexHome = 0; - static const pageHome = ActivityPageItem( + static final ActivityPageItem pageHome = ActivityPageItem( code: 'page_home', icon: Icon(Ionicons.home_outline), - page: PageHome(), + builder: ({required Activity currentActivity}) { + return PageHome(); + }, ); static const indexDiscoveries = 1; - static const pageDiscoveries = ActivityPageItem( + static final ActivityPageItem pageDiscoveries = ActivityPageItem( code: 'page_discoveries', icon: Icon(Ionicons.star_outline), - page: PageDiscoveries(), + builder: ({required Activity currentActivity}) { + return PageDiscoveries(); + }, ); static const indexStatistics = 2; - static const pageStatistics = ActivityPageItem( + static final ActivityPageItem pageStatistics = ActivityPageItem( code: 'page_statistics', icon: Icon(Ionicons.bar_chart_outline), - page: PageStatistics(), + builder: ({required Activity currentActivity}) { + return PageStatistics(); + }, ); static Map<int, ActivityPageItem> items = { @@ -54,6 +63,16 @@ class ActivityPage { } static Widget getWidget(int pageIndex) { - return items[pageIndex]?.page ?? pageHome.page; + return BlocBuilder<ActivityCubit, ActivityState>( + builder: (BuildContext context, ActivityState activityState) { + final Activity currentActivity = activityState.currentActivity; + + if (items.keys.contains(pageIndex)) { + return items[pageIndex]?.builder!(currentActivity: currentActivity) ?? Text('oups'); + } else { + return getWidget(defaultPageIndex); + } + }, + ); } } diff --git a/lib/common/ui/settings/settings_form.dart b/lib/common/ui/settings/settings_form.dart index 40dca8d17c389784e7456499bd781897544e6501..83acf816003928609c51c688a29168c06c135b88 100644 --- a/lib/common/ui/settings/settings_form.dart +++ b/lib/common/ui/settings/settings_form.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; -import 'package:scrobbles/config/default_global_settings.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; +import 'package:scrobbles/config/application_config.dart'; class SettingsForm extends StatefulWidget { const SettingsForm({super.key}); @@ -12,84 +11,100 @@ class SettingsForm extends StatefulWidget { } class _SettingsFormState extends State<SettingsForm> { - final usernameController = TextEditingController(); - final securityTokenController = TextEditingController(); + String discoveriesDaysCount = ApplicationConfig.config + .getFromCode(ApplicationConfig.parameterCodeDiscoveriesDaysCount) + .defaultValue; + String distributionDaysCount = ApplicationConfig.config + .getFromCode(ApplicationConfig.parameterCodeDistributionDaysCount) + .defaultValue; + String statisticsRecentDaysCount = ApplicationConfig.config + .getFromCode(ApplicationConfig.parameterCodeStatisticsRecentDaysCount) + .defaultValue; + String timelineDaysCount = ApplicationConfig.config + .getFromCode(ApplicationConfig.parameterCodeTimelineDaysCount) + .defaultValue; + String topArtistsDaysCount = ApplicationConfig.config + .getFromCode(ApplicationConfig.parameterCodeTopArtistsDaysCount) + .defaultValue; + String newArtistsCount = ApplicationConfig.config + .getFromCode(ApplicationConfig.parameterCodeNewArtistsCount) + .defaultValue; + String newTracksCount = ApplicationConfig.config + .getFromCode(ApplicationConfig.parameterCodeNewTracksCount) + .defaultValue; - int discoveriesDaysCount = DefaultGlobalSettings.defaultDiscoveriesDaysCount; - int distributionDaysCount = DefaultGlobalSettings.defaultDistributionDaysCount; - int statisticsRecentDaysCount = DefaultGlobalSettings.defaultStatisticsRecentDaysCount; - int timelineDaysCount = DefaultGlobalSettings.defaultTimelineDaysCount; - int topArtistsDaysCount = DefaultGlobalSettings.defaultTopArtistsDaysCount; - int newArtistsCount = DefaultGlobalSettings.defaultNewArtistsCount; - int newTracksCount = DefaultGlobalSettings.defaultNewTracksCount; - - List<bool> _selectedDiscoveriesDaysCount = []; - List<bool> _selectedDistributionDaysCount = []; - List<bool> _selectedStatisticsRecentDaysCount = []; - List<bool> _selectedTimelineDaysCount = []; - List<bool> _selectedTopArtistsDaysCount = []; - List<bool> _selectedNewArtistsCount = []; - List<bool> _selectedNewTracksCount = []; + final List<bool> _selectedDiscoveriesDaysCount = []; + final List<bool> _selectedDistributionDaysCount = []; + final List<bool> _selectedStatisticsRecentDaysCount = []; + final List<bool> _selectedTimelineDaysCount = []; + final List<bool> _selectedTopArtistsDaysCount = []; + final List<bool> _selectedNewArtistsCount = []; + final List<bool> _selectedNewTracksCount = []; @override void didChangeDependencies() { - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; - usernameController.text = settings.getUsername(); - securityTokenController.text = settings.getSecurityToken(); + discoveriesDaysCount = settings.get(ApplicationConfig.parameterCodeDiscoveriesDaysCount); + distributionDaysCount = settings.get(ApplicationConfig.parameterCodeDistributionDaysCount); + statisticsRecentDaysCount = + settings.get(ApplicationConfig.parameterCodeStatisticsRecentDaysCount); + timelineDaysCount = settings.get(ApplicationConfig.parameterCodeTimelineDaysCount); + topArtistsDaysCount = settings.get(ApplicationConfig.parameterCodeTopArtistsDaysCount); + newArtistsCount = settings.get(ApplicationConfig.parameterCodeNewArtistsCount); + newTracksCount = settings.get(ApplicationConfig.parameterCodeNewTracksCount); - discoveriesDaysCount = settings.getDiscoveriesDaysCount(); - distributionDaysCount = settings.getDistributionDaysCount(); - statisticsRecentDaysCount = settings.getStatisticsRecentDaysCount(); - timelineDaysCount = settings.getTimelineDaysCount(); - topArtistsDaysCount = settings.getTopArtistsDaysCount(); - newArtistsCount = settings.getNewArtistsCount(); - newTracksCount = settings.getNewTracksCount(); + _selectedDiscoveriesDaysCount.clear(); + for (var parameterItemValue in ApplicationConfig.allowedDaysCountValues) { + _selectedDiscoveriesDaysCount.add(parameterItemValue.value == discoveriesDaysCount); + } - _selectedDiscoveriesDaysCount = DefaultGlobalSettings.allowedDaysCountValues - .map((e) => (e == discoveriesDaysCount)) - .toList(); - _selectedDistributionDaysCount = DefaultGlobalSettings.allowedDaysCountValues - .map((e) => (e == distributionDaysCount)) - .toList(); - _selectedStatisticsRecentDaysCount = DefaultGlobalSettings.allowedDaysCountValues - .map((e) => (e == statisticsRecentDaysCount)) - .toList(); - _selectedTimelineDaysCount = DefaultGlobalSettings.allowedDaysCountValues - .map((e) => (e == timelineDaysCount)) - .toList(); - _selectedTopArtistsDaysCount = DefaultGlobalSettings.allowedDaysCountValues - .map((e) => (e == topArtistsDaysCount)) - .toList(); - _selectedNewArtistsCount = - DefaultGlobalSettings.allowedCountValues.map((e) => (e == newArtistsCount)).toList(); - _selectedNewTracksCount = - DefaultGlobalSettings.allowedCountValues.map((e) => (e == newTracksCount)).toList(); + _selectedDistributionDaysCount.clear(); + for (var parameterItemValue in ApplicationConfig.allowedDaysCountValues) { + _selectedDistributionDaysCount.add(parameterItemValue.value == distributionDaysCount); + } - super.didChangeDependencies(); - } + _selectedStatisticsRecentDaysCount.clear(); + for (var parameterItemValue in ApplicationConfig.allowedDaysCountValues) { + _selectedStatisticsRecentDaysCount + .add(parameterItemValue.value == statisticsRecentDaysCount); + } - @override - void dispose() { - usernameController.dispose(); - securityTokenController.dispose(); - super.dispose(); + _selectedTimelineDaysCount.clear(); + for (var parameterItemValue in ApplicationConfig.allowedDaysCountValues) { + _selectedTimelineDaysCount.add(parameterItemValue.value == timelineDaysCount); + } + + _selectedTopArtistsDaysCount.clear(); + for (var parameterItemValue in ApplicationConfig.allowedDaysCountValues) { + _selectedTopArtistsDaysCount.add(parameterItemValue.value == topArtistsDaysCount); + } + + _selectedNewArtistsCount.clear(); + for (var parameterItemValue in ApplicationConfig.allowedCountValues) { + _selectedNewArtistsCount.add(parameterItemValue.value == newArtistsCount); + } + + _selectedNewTracksCount.clear(); + for (var parameterItemValue in ApplicationConfig.allowedCountValues) { + _selectedNewTracksCount.add(parameterItemValue.value == newTracksCount); + } + + super.didChangeDependencies(); } @override Widget build(BuildContext context) { void saveSettings() { - BlocProvider.of<GlobalSettingsCubit>(context).setValues( - username: usernameController.text, - securityToken: securityTokenController.text, - discoveriesDaysCount: discoveriesDaysCount, - distributionDaysCount: distributionDaysCount, - statisticsRecentDaysCount: statisticsRecentDaysCount, - timelineDaysCount: timelineDaysCount, - topArtistsDaysCount: topArtistsDaysCount, - newArtistsCount: newArtistsCount, - newTracksCount: newTracksCount, - ); + BlocProvider.of<ActivitySettingsCubit>(context).setValues(values: { + ApplicationConfig.parameterCodeDiscoveriesDaysCount: discoveriesDaysCount, + ApplicationConfig.parameterCodeDistributionDaysCount: distributionDaysCount, + ApplicationConfig.parameterCodeStatisticsRecentDaysCount: statisticsRecentDaysCount, + ApplicationConfig.parameterCodeTimelineDaysCount: timelineDaysCount, + ApplicationConfig.parameterCodeTopArtistsDaysCount: topArtistsDaysCount, + ApplicationConfig.parameterCodeNewArtistsCount: newArtistsCount, + ApplicationConfig.parameterCodeNewTracksCount: newTracksCount, + }); } return Column( @@ -128,30 +143,6 @@ class _SettingsFormState extends State<SettingsForm> { const SizedBox(height: 16), - AppTitle(text: tr('settings_title_global')), - - // Username - const Text('settings_label_username').tr(), - TextFormField( - controller: usernameController, - decoration: InputDecoration( - border: const UnderlineInputBorder(), - suffixIcon: ElevatedButton( - style: ElevatedButton.styleFrom( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(6.0), - ), - ), - child: const Icon(UniconsLine.save), - onPressed: () { - saveSettings(); - }, - ), - ), - ), - - const SizedBox(height: 8), - AppTitle(text: tr('settings_title_days_count')), // Statistics (recent) @@ -164,7 +155,7 @@ class _SettingsFormState extends State<SettingsForm> { onPressed: (int index) { setState(() { statisticsRecentDaysCount = - DefaultGlobalSettings.allowedDaysCountValues[index]; + ApplicationConfig.allowedDaysCountValues[index].value; for (int i = 0; i < _selectedStatisticsRecentDaysCount.length; i++) { _selectedStatisticsRecentDaysCount[i] = i == index; } @@ -174,8 +165,9 @@ class _SettingsFormState extends State<SettingsForm> { borderRadius: const BorderRadius.all(Radius.circular(8)), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), isSelected: _selectedStatisticsRecentDaysCount, - children: DefaultGlobalSettings.allowedDaysCountValues - .map((e) => Text(e.toString())) + children: ApplicationConfig.allowedDaysCountValues + .map((ApplicationSettingsParameterItemValue parameterItemValue) => + Text(parameterItemValue.toString())) .toList(), ), ], @@ -190,7 +182,7 @@ class _SettingsFormState extends State<SettingsForm> { ToggleButtons( onPressed: (int index) { setState(() { - timelineDaysCount = DefaultGlobalSettings.allowedDaysCountValues[index]; + timelineDaysCount = ApplicationConfig.allowedDaysCountValues[index].value; for (int i = 0; i < _selectedTimelineDaysCount.length; i++) { _selectedTimelineDaysCount[i] = i == index; } @@ -200,8 +192,9 @@ class _SettingsFormState extends State<SettingsForm> { borderRadius: const BorderRadius.all(Radius.circular(8)), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), isSelected: _selectedTimelineDaysCount, - children: DefaultGlobalSettings.allowedDaysCountValues - .map((e) => Text(e.toString())) + children: ApplicationConfig.allowedDaysCountValues + .map((ApplicationSettingsParameterItemValue parameterItemValue) => + Text(parameterItemValue.toString())) .toList(), ), ], @@ -216,7 +209,7 @@ class _SettingsFormState extends State<SettingsForm> { ToggleButtons( onPressed: (int index) { setState(() { - topArtistsDaysCount = DefaultGlobalSettings.allowedDaysCountValues[index]; + topArtistsDaysCount = ApplicationConfig.allowedDaysCountValues[index].value; for (int i = 0; i < _selectedTopArtistsDaysCount.length; i++) { _selectedTopArtistsDaysCount[i] = i == index; } @@ -226,8 +219,9 @@ class _SettingsFormState extends State<SettingsForm> { borderRadius: const BorderRadius.all(Radius.circular(8)), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), isSelected: _selectedTopArtistsDaysCount, - children: DefaultGlobalSettings.allowedDaysCountValues - .map((e) => Text(e.toString())) + children: ApplicationConfig.allowedDaysCountValues + .map((ApplicationSettingsParameterItemValue parameterItemValue) => + Text(parameterItemValue.toString())) .toList(), ), ], @@ -242,7 +236,7 @@ class _SettingsFormState extends State<SettingsForm> { ToggleButtons( onPressed: (int index) { setState(() { - discoveriesDaysCount = DefaultGlobalSettings.allowedDaysCountValues[index]; + discoveriesDaysCount = ApplicationConfig.allowedDaysCountValues[index].value; for (int i = 0; i < _selectedDiscoveriesDaysCount.length; i++) { _selectedDiscoveriesDaysCount[i] = i == index; } @@ -252,8 +246,9 @@ class _SettingsFormState extends State<SettingsForm> { borderRadius: const BorderRadius.all(Radius.circular(8)), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), isSelected: _selectedDiscoveriesDaysCount, - children: DefaultGlobalSettings.allowedDaysCountValues - .map((e) => Text(e.toString())) + children: ApplicationConfig.allowedDaysCountValues + .map((ApplicationSettingsParameterItemValue parameterItemValue) => + Text(parameterItemValue.toString())) .toList(), ), ], @@ -268,7 +263,8 @@ class _SettingsFormState extends State<SettingsForm> { ToggleButtons( onPressed: (int index) { setState(() { - distributionDaysCount = DefaultGlobalSettings.allowedDaysCountValues[index]; + distributionDaysCount = + ApplicationConfig.allowedDaysCountValues[index].value; for (int i = 0; i < _selectedDistributionDaysCount.length; i++) { _selectedDistributionDaysCount[i] = i == index; } @@ -278,8 +274,9 @@ class _SettingsFormState extends State<SettingsForm> { borderRadius: const BorderRadius.all(Radius.circular(8)), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), isSelected: _selectedDistributionDaysCount, - children: DefaultGlobalSettings.allowedDaysCountValues - .map((e) => Text(e.toString())) + children: ApplicationConfig.allowedDaysCountValues + .map((ApplicationSettingsParameterItemValue parameterItemValue) => + Text(parameterItemValue.toString())) .toList(), ), ], @@ -297,7 +294,7 @@ class _SettingsFormState extends State<SettingsForm> { ToggleButtons( onPressed: (int index) { setState(() { - newArtistsCount = DefaultGlobalSettings.allowedCountValues[index]; + newArtistsCount = ApplicationConfig.allowedCountValues[index].value; for (int i = 0; i < _selectedNewArtistsCount.length; i++) { _selectedNewArtistsCount[i] = i == index; } @@ -307,8 +304,9 @@ class _SettingsFormState extends State<SettingsForm> { borderRadius: const BorderRadius.all(Radius.circular(8)), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), isSelected: _selectedNewArtistsCount, - children: DefaultGlobalSettings.allowedCountValues - .map((e) => Text(e.toString())) + children: ApplicationConfig.allowedCountValues + .map((ApplicationSettingsParameterItemValue parameterItemValue) => + Text(parameterItemValue.toString())) .toList(), ), ], @@ -323,7 +321,7 @@ class _SettingsFormState extends State<SettingsForm> { ToggleButtons( onPressed: (int index) { setState(() { - newTracksCount = DefaultGlobalSettings.allowedCountValues[index]; + newTracksCount = ApplicationConfig.allowedCountValues[index].value; for (int i = 0; i < _selectedNewTracksCount.length; i++) { _selectedNewTracksCount[i] = i == index; } @@ -333,26 +331,13 @@ class _SettingsFormState extends State<SettingsForm> { borderRadius: const BorderRadius.all(Radius.circular(8)), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), isSelected: _selectedNewTracksCount, - children: DefaultGlobalSettings.allowedCountValues - .map((e) => Text(e.toString())) + children: ApplicationConfig.allowedCountValues + .map((ApplicationSettingsParameterItemValue parameterItemValue) => + Text(parameterItemValue.toString())) .toList(), ), ], ), - - // Save - // ElevatedButton( - // child: Row( - // mainAxisAlignment: MainAxisAlignment.center, - // crossAxisAlignment: CrossAxisAlignment.center, - // children: [ - // Icon(UniconsLine.save), - // SizedBox(width: 8), - // Text('settings_button_save').tr(), - // ], - // ), - // onPressed: () => saveSettings(), - // ), ], ); } diff --git a/lib/config/application_config.dart b/lib/config/application_config.dart index 68335d6afcdc1d5a84936100ea1acae81c05619d..f1f6704d1f41c526f3146fc5de51f3ad86a92045 100644 --- a/lib/config/application_config.dart +++ b/lib/config/application_config.dart @@ -1,3 +1,104 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; + +import 'package:scrobbles/common/cubit/nav/nav_cubit_pages.dart'; + +import 'package:scrobbles/cubit/activity/activity_cubit.dart'; + class ApplicationConfig { - static const String appTitle = 'Scrobbles'; + static const String parameterCodeDistributionDaysCount = 'distribution-days-count'; + static const String parameterCodeDiscoveriesDaysCount = 'discoveries-days-count'; + static const String parameterCodeNewArtistsCount = 'new-artists-count'; + static const String parameterCodeNewTracksCount = 'new-tracks-count'; + static const String parameterCodeTimelineDaysCount = 'timeline-days-count'; + static const String parameterCodeTopArtistsDaysCount = 'top-artists-days-count'; + static const String parameterCodeStatisticsRecentDaysCount = 'statistics-recent-days-count'; + + static const List<ApplicationSettingsParameterItemValue> allowedDaysCountValues = [ + ApplicationSettingsParameterItemValue( + value: '7', + ), + ApplicationSettingsParameterItemValue( + value: '14', + isDefault: true, + ), + ApplicationSettingsParameterItemValue( + value: '21', + ), + ApplicationSettingsParameterItemValue( + value: '30', + ), + ApplicationSettingsParameterItemValue( + value: '60', + ), + ApplicationSettingsParameterItemValue( + value: '90', + ), + ]; + + static const List<ApplicationSettingsParameterItemValue> allowedCountValues = [ + ApplicationSettingsParameterItemValue( + value: '5', + isDefault: true, + ), + ApplicationSettingsParameterItemValue( + value: '10', + ), + ApplicationSettingsParameterItemValue( + value: '20', + ), + ]; + + static final ApplicationConfigDefinition config = ApplicationConfigDefinition( + appTitle: 'Scrobbles', + activitySettings: [ + // DistributionDaysCount + ApplicationSettingsParameter( + code: parameterCodeDistributionDaysCount, + values: allowedDaysCountValues, + ), + + // DiscoveriesDaysCount + ApplicationSettingsParameter( + code: parameterCodeDiscoveriesDaysCount, + values: allowedDaysCountValues, + ), + + // NewArtistsCount + ApplicationSettingsParameter( + code: parameterCodeNewArtistsCount, + values: allowedCountValues, + ), + + // NewTracksCount + ApplicationSettingsParameter( + code: parameterCodeNewTracksCount, + values: allowedCountValues, + ), + + // TimelineDaysCount + ApplicationSettingsParameter( + code: parameterCodeTimelineDaysCount, + values: allowedDaysCountValues, + ), + + // TopArtistsDaysCount + ApplicationSettingsParameter( + code: parameterCodeTopArtistsDaysCount, + values: allowedDaysCountValues, + ), + + // StatisticsRecentDaysCount + ApplicationSettingsParameter( + code: parameterCodeStatisticsRecentDaysCount, + values: allowedDaysCountValues, + ), + ], + startNewActivity: (BuildContext context) { + BlocProvider.of<ActivityCubit>(context).startNewActivity(context); + BlocProvider.of<NavCubitPage>(context).goToPageHome(); + }, + deleteCurrentActivity: (BuildContext context) {}, + resumeActivity: (BuildContext context) {}, + ); } diff --git a/lib/config/default_activity_settings.dart b/lib/config/default_activity_settings.dart deleted file mode 100644 index 1f33c908216cca222d576d89d07ce05de4a661ec..0000000000000000000000000000000000000000 --- a/lib/config/default_activity_settings.dart +++ /dev/null @@ -1,28 +0,0 @@ -import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; - -class DefaultActivitySettings { - // available game parameters codes - static const String parameterCodeDashboardType = 'dashboardType'; - static const List<String> availableParameters = [ - parameterCodeDashboardType, - ]; - - // dashboard type: available values - static const String dashboardTypeDefault = 'default'; - static const List<String> allowedDashboardTypeValues = [ - dashboardTypeDefault, - ]; - // dashboard type: default value - static const String defaultDashboardTypeValue = dashboardTypeDefault; - - // available values from parameter code - static List<String> getAvailableValues(String parameterCode) { - switch (parameterCode) { - case parameterCodeDashboardType: - return DefaultActivitySettings.allowedDashboardTypeValues; - } - - printlog('Did not find any available value for game parameter "$parameterCode".'); - return []; - } -} diff --git a/lib/config/default_global_settings.dart b/lib/config/default_global_settings.dart deleted file mode 100644 index f64cb1ff1c153c5f6e4bd6b7607bc60943cd982f..0000000000000000000000000000000000000000 --- a/lib/config/default_global_settings.dart +++ /dev/null @@ -1,60 +0,0 @@ -import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; - -class DefaultGlobalSettings { - // available global parameters codes - static const String parameterCodeSkin = 'skin'; - static const List<String> availableParameters = [ - parameterCodeSkin, - ]; - - // skin: available values - static const String skinValueDefault = 'default'; - static const List<String> allowedSkinValues = [ - skinValueDefault, - ]; - // skin: default value - static const String defaultSkinValue = skinValueDefault; - - // available values from parameter code - static List<String> getAvailableValues(String parameterCode) { - switch (parameterCode) { - case parameterCodeSkin: - return DefaultGlobalSettings.allowedSkinValues; - } - - printlog('Did not find any available value for global parameter "$parameterCode".'); - return []; - } - - @Deprecated("Should be removed / normalized") - static const List<int> allowedDaysCountValues = [ - 7, - 14, - 21, - 30, - 60, - 90, - ]; - - @Deprecated("Should be removed / normalized") - static const List<int> allowedCountValues = [ - 5, - 10, - 20, - ]; - - @Deprecated("Should be removed / normalized") - static const int defaultDiscoveriesDaysCount = 14; - @Deprecated("Should be removed / normalized") - static const int defaultDistributionDaysCount = 21; - @Deprecated("Should be removed / normalized") - static const int defaultStatisticsRecentDaysCount = 21; - @Deprecated("Should be removed / normalized") - static const int defaultTimelineDaysCount = 14; - @Deprecated("Should be removed / normalized") - static const int defaultTopArtistsDaysCount = 14; - @Deprecated("Should be removed / normalized") - static const int defaultNewArtistsCount = 5; - @Deprecated("Should be removed / normalized") - static const int defaultNewTracksCount = 5; -} diff --git a/lib/cubit/activity/activity_cubit.dart b/lib/cubit/activity/activity_cubit.dart index 7a0b36cf548a0e254052443c9f749f95e07d1894..5c9791e62bd992b37f3620e321d064d2e71e10d9 100644 --- a/lib/cubit/activity/activity_cubit.dart +++ b/lib/cubit/activity/activity_cubit.dart @@ -2,8 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:scrobbles/models/activity/activity.dart'; -import 'package:scrobbles/models/settings/settings_activity.dart'; -import 'package:scrobbles/models/settings/settings_global.dart'; part 'activity_state.dart'; @@ -23,7 +21,6 @@ class ActivityCubit extends HydratedCubit<ActivityState> { final Activity activity = Activity( // Settings activitySettings: state.currentActivity.activitySettings, - globalSettings: state.currentActivity.globalSettings, // State isRunning: state.currentActivity.isRunning, ); @@ -31,14 +28,13 @@ class ActivityCubit extends HydratedCubit<ActivityState> { updateState(activity); } - void startNewActivity({ - required ActivitySettings activitySettings, - required GlobalSettings globalSettings, - }) { + void startNewActivity(BuildContext context) { + final ActivitySettingsCubit activitySettingsCubit = + BlocProvider.of<ActivitySettingsCubit>(context); + final Activity newActivity = Activity.createNew( // Settings - activitySettings: activitySettings, - globalSettings: globalSettings, + activitySettings: activitySettingsCubit.state.settings, ); newActivity.dump(); diff --git a/lib/cubit/activity/data_counts_by_day_cubit.dart b/lib/cubit/activity/data_counts_by_day_cubit.dart index 59c7482fa99de7b9ed59ef7cee49c5bb3b81fff1..f9d6fdf82bf4fc38366865190a975050ec9eb5b0 100644 --- a/lib/cubit/activity/data_counts_by_day_cubit.dart +++ b/lib/cubit/activity/data_counts_by_day_cubit.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/models/data/counts_by_day.dart'; import 'package:scrobbles/network/scrobbles.dart'; @@ -53,8 +54,9 @@ class DataCountsByDayCubit extends HydratedCubit<DataCountsByDayState> { void refresh(BuildContext context) async { setLoading(); - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getDistributionDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeDistributionDaysCount); final CountsByDayData? data = await ScrobblesApi.fetchCountsByDay(daysCount); if (data != null) { diff --git a/lib/cubit/activity/data_counts_by_hour_cubit.dart b/lib/cubit/activity/data_counts_by_hour_cubit.dart index 6d07f45dbb43937e29c451164d4a990216c7a23f..d9974e4e38016f72e2663a5c971b8c481197a047 100644 --- a/lib/cubit/activity/data_counts_by_hour_cubit.dart +++ b/lib/cubit/activity/data_counts_by_hour_cubit.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/models/data/counts_by_hour.dart'; import 'package:scrobbles/network/scrobbles.dart'; @@ -53,8 +54,9 @@ class DataCountsByHourCubit extends HydratedCubit<DataCountsByHourState> { void refresh(BuildContext context) async { setLoading(); - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getDistributionDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeDistributionDaysCount); final CountsByHourData? data = await ScrobblesApi.fetchCountsByHour(daysCount); if (data != null) { diff --git a/lib/cubit/activity/data_discoveries_cubit.dart b/lib/cubit/activity/data_discoveries_cubit.dart index 4ea5c57b84f881b8dc86c0dd3929cad99b7f0549..ab12a4dfb99825803eb04c622675893cf3fe580c 100644 --- a/lib/cubit/activity/data_discoveries_cubit.dart +++ b/lib/cubit/activity/data_discoveries_cubit.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/models/data/discoveries.dart'; import 'package:scrobbles/network/scrobbles.dart'; @@ -53,8 +54,9 @@ class DataDiscoveriesCubit extends HydratedCubit<DataDiscoveriesState> { void refresh(BuildContext context) async { setLoading(); - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getDiscoveriesDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeDiscoveriesDaysCount); final DiscoveriesData? data = await ScrobblesApi.fetchDiscoveries(daysCount); if (data != null) { diff --git a/lib/cubit/activity/data_heatmap_cubit.dart b/lib/cubit/activity/data_heatmap_cubit.dart index 3d386c324f81b63b521f50382e1f1ab90db6026a..855ce2521bbe5582f63df6e5d897b2c6ffd05099 100644 --- a/lib/cubit/activity/data_heatmap_cubit.dart +++ b/lib/cubit/activity/data_heatmap_cubit.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/models/data/heatmap.dart'; import 'package:scrobbles/network/scrobbles.dart'; @@ -53,8 +54,9 @@ class DataHeatmapCubit extends HydratedCubit<DataHeatmapState> { void refresh(BuildContext context) async { setLoading(); - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getDistributionDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeDistributionDaysCount); final HeatmapData? data = await ScrobblesApi.fetchHeatmap(daysCount); if (data != null) { diff --git a/lib/cubit/activity/data_new_artists_cubit.dart b/lib/cubit/activity/data_new_artists_cubit.dart index c5ae1c94c8ef575d0eb7f549488fa199ba27bd4f..1d6ba45e987c9baa8a79c4997ce75e85f0ccd793 100644 --- a/lib/cubit/activity/data_new_artists_cubit.dart +++ b/lib/cubit/activity/data_new_artists_cubit.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/models/data/new_artists.dart'; import 'package:scrobbles/network/scrobbles.dart'; @@ -53,8 +54,8 @@ class DataNewArtistsCubit extends HydratedCubit<DataNewArtistsState> { void refresh(BuildContext context) async { setLoading(); - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int count = settings.getNewArtistsCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int count = settings.getAsInt(ApplicationConfig.parameterCodeNewArtistsCount); final NewArtistsData? data = await ScrobblesApi.fetchNewArtists(count); if (data != null) { diff --git a/lib/cubit/activity/data_new_tracks_cubit.dart b/lib/cubit/activity/data_new_tracks_cubit.dart index 849ae75b769df053d1f381c9e86815a47db18970..fa137749779ff8a5328d66fd3a898b48353a9a4b 100644 --- a/lib/cubit/activity/data_new_tracks_cubit.dart +++ b/lib/cubit/activity/data_new_tracks_cubit.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/models/data/new_tracks.dart'; import 'package:scrobbles/network/scrobbles.dart'; @@ -53,8 +54,8 @@ class DataNewTracksCubit extends HydratedCubit<DataNewTracksState> { void refresh(BuildContext context) async { setLoading(); - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int count = settings.getNewTracksCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int count = settings.getAsInt(ApplicationConfig.parameterCodeNewTracksCount); final NewTracksData? data = await ScrobblesApi.fetchNewTracks(count); if (data != null) { diff --git a/lib/cubit/activity/data_statistics_recent_cubit.dart b/lib/cubit/activity/data_statistics_recent_cubit.dart index 0b19c0a2c5cd210944b61e2e5a1fcd292e74e5bb..51c2db4573bb745b9c0fef04e91f7fbe80333391 100644 --- a/lib/cubit/activity/data_statistics_recent_cubit.dart +++ b/lib/cubit/activity/data_statistics_recent_cubit.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/models/data/statistics_recent.dart'; import 'package:scrobbles/network/scrobbles.dart'; @@ -54,8 +55,9 @@ class DataStatisticsRecentCubit extends HydratedCubit<DataStatisticsRecentState> void refresh(BuildContext context) async { setLoading(); - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getStatisticsRecentDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeStatisticsRecentDaysCount); final StatisticsRecentData? data = await ScrobblesApi.fetchRecentStatistics(daysCount); if (data != null) { diff --git a/lib/cubit/activity/data_timeline_cubit.dart b/lib/cubit/activity/data_timeline_cubit.dart index 724240140ba31ae466b542805dc7972d2ccf3ea4..e4177564a2f00ae28b55ab0829a0685f335d7db0 100644 --- a/lib/cubit/activity/data_timeline_cubit.dart +++ b/lib/cubit/activity/data_timeline_cubit.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/models/data/timeline.dart'; import 'package:scrobbles/network/scrobbles.dart'; @@ -53,8 +54,8 @@ class DataTimelineCubit extends HydratedCubit<DataTimelineState> { void refresh(BuildContext context) async { setLoading(); - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getTimelineDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = settings.getAsInt(ApplicationConfig.parameterCodeTimelineDaysCount); final TimelineData? data = await ScrobblesApi.fetchTimeline(daysCount); if (data != null) { diff --git a/lib/cubit/activity/data_top_artists_cubit.dart b/lib/cubit/activity/data_top_artists_cubit.dart index 4692b8c1145796796853694ee55ce094c51df94c..d59acf3204dd9af4e9f60c31fe8356a2d2883111 100644 --- a/lib/cubit/activity/data_top_artists_cubit.dart +++ b/lib/cubit/activity/data_top_artists_cubit.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/models/data/topartists.dart'; import 'package:scrobbles/network/scrobbles.dart'; @@ -53,8 +54,9 @@ class DataTopArtistsCubit extends HydratedCubit<DataTopArtistsState> { void refresh(BuildContext context) async { setLoading(); - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getTopArtistsDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeTopArtistsDaysCount); final TopArtistsData? data = await ScrobblesApi.fetchTopArtists(daysCount); if (data != null) { diff --git a/lib/cubit/settings/settings_activity_cubit.dart b/lib/cubit/settings/settings_activity_cubit.dart deleted file mode 100644 index e5364926e7e64ebedcafb91f33256ff65392d020..0000000000000000000000000000000000000000 --- a/lib/cubit/settings/settings_activity_cubit.dart +++ /dev/null @@ -1,62 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; - -import 'package:scrobbles/config/default_activity_settings.dart'; -import 'package:scrobbles/models/settings/settings_activity.dart'; - -part 'settings_activity_state.dart'; - -class ActivitySettingsCubit extends HydratedCubit<ActivitySettingsState> { - ActivitySettingsCubit() - : super(ActivitySettingsState(settings: ActivitySettings.createDefault())); - - void setValues({ - String? dashboardType, - }) { - emit( - ActivitySettingsState( - settings: ActivitySettings( - dashboardType: dashboardType ?? state.settings.dashboardType, - ), - ), - ); - } - - String getParameterValue(String code) { - switch (code) { - case DefaultActivitySettings.parameterCodeDashboardType: - return ActivitySettings.getDashboardTypeValueFromUnsafe(state.settings.dashboardType); - } - - return ''; - } - - void setParameterValue(String code, String value) { - final String dashboardType = code == DefaultActivitySettings.parameterCodeDashboardType - ? value - : getParameterValue(DefaultActivitySettings.parameterCodeDashboardType); - - setValues( - dashboardType: dashboardType, - ); - } - - @override - ActivitySettingsState? fromJson(Map<String, dynamic> json) { - final String dashboardType = - json[DefaultActivitySettings.parameterCodeDashboardType] as String; - - return ActivitySettingsState( - settings: ActivitySettings( - dashboardType: dashboardType, - ), - ); - } - - @override - Map<String, dynamic>? toJson(ActivitySettingsState state) { - return <String, dynamic>{ - DefaultActivitySettings.parameterCodeDashboardType: state.settings.dashboardType, - }; - } -} diff --git a/lib/cubit/settings/settings_activity_state.dart b/lib/cubit/settings/settings_activity_state.dart deleted file mode 100644 index 2b2de42011634e81ae9e6f8bcaa1577f239c778b..0000000000000000000000000000000000000000 --- a/lib/cubit/settings/settings_activity_state.dart +++ /dev/null @@ -1,15 +0,0 @@ -part of 'settings_activity_cubit.dart'; - -@immutable -class ActivitySettingsState extends Equatable { - const ActivitySettingsState({ - required this.settings, - }); - - final ActivitySettings settings; - - @override - List<dynamic> get props => <dynamic>[ - settings, - ]; -} diff --git a/lib/cubit/settings/settings_global_cubit.dart b/lib/cubit/settings/settings_global_cubit.dart deleted file mode 100644 index 75f948973e28de71c1f7b97e3dbafd1878ac9241..0000000000000000000000000000000000000000 --- a/lib/cubit/settings/settings_global_cubit.dart +++ /dev/null @@ -1,116 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; - -import 'package:scrobbles/config/default_global_settings.dart'; - -part 'settings_global_state.dart'; - -class GlobalSettingsCubit extends HydratedCubit<GlobalSettingsState> { - GlobalSettingsCubit() : super(const GlobalSettingsState()); - - void setValues({ - String? username, - String? securityToken, - int? discoveriesDaysCount, - int? distributionDaysCount, - int? statisticsRecentDaysCount, - int? timelineDaysCount, - int? topArtistsDaysCount, - int? newArtistsCount, - int? newTracksCount, - }) { - emit(GlobalSettingsState( - username: username ?? state.username, - securityToken: securityToken ?? state.securityToken, - discoveriesDaysCount: discoveriesDaysCount ?? state.discoveriesDaysCount, - distributionDaysCount: distributionDaysCount ?? state.distributionDaysCount, - statisticsRecentDaysCount: statisticsRecentDaysCount ?? state.statisticsRecentDaysCount, - timelineDaysCount: timelineDaysCount ?? state.timelineDaysCount, - topArtistsDaysCount: topArtistsDaysCount ?? state.topArtistsDaysCount, - newArtistsCount: newArtistsCount ?? state.newArtistsCount, - newTracksCount: newTracksCount ?? state.newTracksCount, - )); - } - - String getUsername() { - return state.username ?? ''; - } - - String getSecurityToken() { - return state.securityToken ?? ''; - } - - int getDiscoveriesDaysCount() { - return state.discoveriesDaysCount ?? DefaultGlobalSettings.defaultDiscoveriesDaysCount; - } - - int getDistributionDaysCount() { - return state.distributionDaysCount ?? DefaultGlobalSettings.defaultDistributionDaysCount; - } - - int getStatisticsRecentDaysCount() { - return state.statisticsRecentDaysCount ?? - DefaultGlobalSettings.defaultStatisticsRecentDaysCount; - } - - int getTimelineDaysCount() { - return state.timelineDaysCount ?? DefaultGlobalSettings.defaultTimelineDaysCount; - } - - int getTopArtistsDaysCount() { - return state.topArtistsDaysCount ?? DefaultGlobalSettings.defaultTopArtistsDaysCount; - } - - int getNewArtistsCount() { - return state.newArtistsCount ?? DefaultGlobalSettings.defaultNewArtistsCount; - } - - int getNewTracksCount() { - return state.newTracksCount ?? DefaultGlobalSettings.defaultNewTracksCount; - } - - @override - GlobalSettingsState? fromJson(Map<String, dynamic> json) { - String username = json['username'] as String; - String securityToken = json['securityToken'] as String; - int discoveriesDaysCount = json['discoveriesDaysCount'] as int; - int distributionDaysCount = json['distributionDaysCount'] as int; - int statisticsRecentDaysCount = json['statisticsRecentDaysCount'] as int; - int timelineDaysCount = json['timelineDaysCount'] as int; - int topArtistsDaysCount = json['topArtistsDaysCount'] as int; - int newArtistsCount = json['newArtistsCount'] as int; - int newTracksCount = json['newTracksCount'] as int; - - return GlobalSettingsState( - username: username, - securityToken: securityToken, - discoveriesDaysCount: discoveriesDaysCount, - distributionDaysCount: distributionDaysCount, - statisticsRecentDaysCount: statisticsRecentDaysCount, - timelineDaysCount: timelineDaysCount, - topArtistsDaysCount: topArtistsDaysCount, - newArtistsCount: newArtistsCount, - newTracksCount: newTracksCount, - ); - } - - @override - Map<String, dynamic>? toJson(GlobalSettingsState state) { - return <String, dynamic>{ - 'username': state.username ?? '', - 'securityToken': state.securityToken ?? '', - 'discoveriesDaysCount': - state.discoveriesDaysCount ?? DefaultGlobalSettings.defaultDiscoveriesDaysCount, - 'distributionDaysCount': - state.distributionDaysCount ?? DefaultGlobalSettings.defaultDistributionDaysCount, - 'statisticsRecentDaysCount': state.statisticsRecentDaysCount ?? - DefaultGlobalSettings.defaultStatisticsRecentDaysCount, - 'timelineDaysCount': - state.timelineDaysCount ?? DefaultGlobalSettings.defaultTimelineDaysCount, - 'topArtistsDaysCount': - state.topArtistsDaysCount ?? DefaultGlobalSettings.defaultTopArtistsDaysCount, - 'newArtistsCount': state.newArtistsCount ?? DefaultGlobalSettings.defaultNewArtistsCount, - 'newTracksCount': state.newTracksCount ?? DefaultGlobalSettings.defaultNewTracksCount, - }; - } -} diff --git a/lib/cubit/settings/settings_global_state.dart b/lib/cubit/settings/settings_global_state.dart deleted file mode 100644 index fb08d54167dba5f5a3c12f09cb0079998eafb49a..0000000000000000000000000000000000000000 --- a/lib/cubit/settings/settings_global_state.dart +++ /dev/null @@ -1,51 +0,0 @@ -part of 'settings_global_cubit.dart'; - -@immutable -class GlobalSettingsState extends Equatable { - const GlobalSettingsState({ - this.username, - this.securityToken, - this.discoveriesDaysCount, - this.distributionDaysCount, - this.statisticsRecentDaysCount, - this.timelineDaysCount, - this.topArtistsDaysCount, - this.newArtistsCount, - this.newTracksCount, - }); - - final String? username; - final String? securityToken; - final int? discoveriesDaysCount; - final int? distributionDaysCount; - final int? statisticsRecentDaysCount; - final int? timelineDaysCount; - final int? topArtistsDaysCount; - final int? newArtistsCount; - final int? newTracksCount; - - @override - List<dynamic> get props => <dynamic>[ - username, - securityToken, - discoveriesDaysCount, - distributionDaysCount, - statisticsRecentDaysCount, - timelineDaysCount, - topArtistsDaysCount, - newArtistsCount, - newTracksCount, - ]; - - Map<String, dynamic> get values => <String, dynamic>{ - 'username': username, - 'securityToken': securityToken, - 'discoveriesDaysCount': discoveriesDaysCount, - 'distributionDaysCount': distributionDaysCount, - 'statisticsRecentDaysCount': statisticsRecentDaysCount, - 'timelineDaysCount': timelineDaysCount, - 'topArtistsDaysCount': topArtistsDaysCount, - 'newArtistsCount': newArtistsCount, - 'newTracksCount': newTracksCount, - }; -} diff --git a/lib/main.dart b/lib/main.dart index 02ce7f1b14dbd7d377cc20a0138093204ff0893c..06168fd7a9b34b8866fb100f7d343a6b9d0fb639 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,6 +8,7 @@ import 'package:scrobbles/common/cubit/nav/nav_cubit_pages.dart'; import 'package:scrobbles/common/cubit/nav/nav_cubit_screens.dart'; import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/cubit/activity/activity_cubit.dart'; import 'package:scrobbles/cubit/activity/data_counts_by_day_cubit.dart'; import 'package:scrobbles/cubit/activity/data_counts_by_hour_cubit.dart'; @@ -19,8 +20,7 @@ import 'package:scrobbles/cubit/activity/data_statistics_global_cubit.dart'; import 'package:scrobbles/cubit/activity/data_statistics_recent_cubit.dart'; import 'package:scrobbles/cubit/activity/data_timeline_cubit.dart'; import 'package:scrobbles/cubit/activity/data_top_artists_cubit.dart'; -import 'package:scrobbles/cubit/settings/settings_activity_cubit.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; + import 'package:scrobbles/ui/skeleton.dart'; void main() async { @@ -66,11 +66,8 @@ class MyApp extends StatelessWidget { BlocProvider<ActivityCubit>( create: (context) => ActivityCubit(), ), - BlocProvider<GlobalSettingsCubit>( - create: (context) => GlobalSettingsCubit(), - ), BlocProvider<ActivitySettingsCubit>( - create: (context) => ActivitySettingsCubit(), + create: (context) => ActivitySettingsCubit(appConfig: ApplicationConfig.config), ), // custom providers @@ -108,7 +105,7 @@ class MyApp extends StatelessWidget { child: BlocBuilder<ApplicationThemeModeCubit, ApplicationThemeModeState>( builder: (BuildContext context, ApplicationThemeModeState state) { return MaterialApp( - title: ApplicationConfig.appTitle, + title: ApplicationConfig.config.appTitle, home: const SkeletonScreen(), // Theme stuff diff --git a/lib/models/activity/activity.dart b/lib/models/activity/activity.dart index 973cd0343e4160aa421ce8723efbded94c4e60c0..900ce3daecf3350bb529af2a71890537773756d5 100644 --- a/lib/models/activity/activity.dart +++ b/lib/models/activity/activity.dart @@ -1,13 +1,11 @@ import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; -import 'package:scrobbles/models/settings/settings_activity.dart'; -import 'package:scrobbles/models/settings/settings_global.dart'; +import 'package:scrobbles/config/application_config.dart'; class Activity { Activity({ // Settings required this.activitySettings, - required this.globalSettings, // State this.isRunning = false, @@ -15,7 +13,6 @@ class Activity { // Settings final ActivitySettings activitySettings; - final GlobalSettings globalSettings; // State bool isRunning; @@ -23,23 +20,19 @@ class Activity { factory Activity.createNull() { return Activity( // Settings - activitySettings: ActivitySettings.createDefault(), - globalSettings: GlobalSettings.createDefault(), + activitySettings: ActivitySettings.createDefault(appConfig: ApplicationConfig.config), ); } factory Activity.createNew({ ActivitySettings? activitySettings, - GlobalSettings? globalSettings, }) { - final ActivitySettings newActivitySettings = - activitySettings ?? ActivitySettings.createDefault(); - final GlobalSettings newGlobalSettings = globalSettings ?? GlobalSettings.createDefault(); + final ActivitySettings newActivitySettings = activitySettings ?? + ActivitySettings.createDefault(appConfig: ApplicationConfig.config); return Activity( // Settings activitySettings: newActivitySettings, - globalSettings: newGlobalSettings, // State isRunning: true, ); @@ -54,7 +47,6 @@ class Activity { printlog('$Activity:'); printlog(' Settings'); activitySettings.dump(); - globalSettings.dump(); printlog(' State'); printlog(' isRunning: $isRunning'); printlog(''); @@ -69,7 +61,6 @@ class Activity { return <String, dynamic>{ // Settings 'activitySettings': activitySettings.toJson(), - 'globalSettings': globalSettings.toJson(), // State 'isRunning': isRunning, }; diff --git a/lib/models/settings/settings_activity.dart b/lib/models/settings/settings_activity.dart deleted file mode 100644 index c270607eecb196a8d32b5ee71cc6bc020107323f..0000000000000000000000000000000000000000 --- a/lib/models/settings/settings_activity.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; - -import 'package:scrobbles/config/default_activity_settings.dart'; - -class ActivitySettings { - final String dashboardType; - - ActivitySettings({ - required this.dashboardType, - }); - - factory ActivitySettings.createDefault() { - return ActivitySettings( - dashboardType: DefaultActivitySettings.defaultDashboardTypeValue, - ); - } - - static String getDashboardTypeValueFromUnsafe(String dashboardType) { - if (DefaultActivitySettings.allowedDashboardTypeValues.contains(dashboardType)) { - return dashboardType; - } - - return DefaultActivitySettings.defaultDashboardTypeValue; - } - - void dump() { - printlog('$ActivitySettings:'); - printlog(' ${DefaultActivitySettings.parameterCodeDashboardType}: $dashboardType'); - printlog(''); - } - - @override - String toString() { - return '$ActivitySettings(${toJson()})'; - } - - Map<String, dynamic>? toJson() { - return <String, dynamic>{ - DefaultActivitySettings.parameterCodeDashboardType: dashboardType, - }; - } -} diff --git a/lib/models/settings/settings_global.dart b/lib/models/settings/settings_global.dart deleted file mode 100644 index 666f87e2ef64e655da1bc7fc94b7b29a70b93ecc..0000000000000000000000000000000000000000 --- a/lib/models/settings/settings_global.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; - -import 'package:scrobbles/config/default_global_settings.dart'; - -class GlobalSettings { - String skin; - - GlobalSettings({ - required this.skin, - }); - - static String getSkinValueFromUnsafe(String skin) { - if (DefaultGlobalSettings.allowedSkinValues.contains(skin)) { - return skin; - } - - return DefaultGlobalSettings.defaultSkinValue; - } - - factory GlobalSettings.createDefault() { - return GlobalSettings( - skin: DefaultGlobalSettings.defaultSkinValue, - ); - } - - void dump() { - printlog('$GlobalSettings:'); - printlog(' ${DefaultGlobalSettings.parameterCodeSkin}: $skin'); - printlog(''); - } - - @override - String toString() { - return '$GlobalSettings(${toJson()})'; - } - - Map<String, dynamic>? toJson() { - return <String, dynamic>{ - DefaultGlobalSettings.parameterCodeSkin: skin, - }; - } -} diff --git a/lib/ui/widgets/cards/counts_by_day.dart b/lib/ui/widgets/cards/counts_by_day.dart index 672a873e77099b0defc82f4652d650a03b48b615..fb6df53b181ee78bf0b83ffe3614ed5141edf827 100644 --- a/lib/ui/widgets/cards/counts_by_day.dart +++ b/lib/ui/widgets/cards/counts_by_day.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/cubit/activity/data_counts_by_day_cubit.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; import 'package:scrobbles/models/data/counts_by_day.dart'; import 'package:scrobbles/ui/widgets/card_content.dart'; import 'package:scrobbles/ui/widgets/charts/counts_by_day.dart'; @@ -12,8 +13,9 @@ class CardCountsByDay extends StatelessWidget { @override Widget build(BuildContext context) { - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getDistributionDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeDistributionDaysCount); return BlocBuilder<DataCountsByDayCubit, DataCountsByDayState>( builder: (BuildContext context, DataCountsByDayState data) { diff --git a/lib/ui/widgets/cards/counts_by_hour.dart b/lib/ui/widgets/cards/counts_by_hour.dart index d7d296a2a4f46b0266aa4f22fc25d8aebbd58ab0..f624241525ce40b20055cb2aab6c613eadd2a48b 100644 --- a/lib/ui/widgets/cards/counts_by_hour.dart +++ b/lib/ui/widgets/cards/counts_by_hour.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/cubit/activity/data_counts_by_hour_cubit.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; import 'package:scrobbles/models/data/counts_by_hour.dart'; import 'package:scrobbles/ui/widgets/card_content.dart'; import 'package:scrobbles/ui/widgets/charts/counts_by_hour.dart'; @@ -12,8 +13,9 @@ class CardCountsByHour extends StatelessWidget { @override Widget build(BuildContext context) { - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getDistributionDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeDistributionDaysCount); return BlocBuilder<DataCountsByHourCubit, DataCountsByHourState>( builder: (BuildContext context, DataCountsByHourState data) { diff --git a/lib/ui/widgets/cards/discoveries.dart b/lib/ui/widgets/cards/discoveries.dart index 3937a509f012ac7d86236b8f96bc003f7511a3e3..b77bfa47dc205b36c9b114deec544465232721f6 100644 --- a/lib/ui/widgets/cards/discoveries.dart +++ b/lib/ui/widgets/cards/discoveries.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/cubit/activity/data_discoveries_cubit.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; import 'package:scrobbles/models/data/discoveries.dart'; import 'package:scrobbles/ui/widgets/card_content.dart'; import 'package:scrobbles/ui/widgets/charts/discoveries_artists.dart'; @@ -13,8 +14,9 @@ class CardDiscoveries extends StatelessWidget { @override Widget build(BuildContext context) { - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getDiscoveriesDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeDiscoveriesDaysCount); return BlocBuilder<DataDiscoveriesCubit, DataDiscoveriesState>( builder: (BuildContext context, DataDiscoveriesState data) { diff --git a/lib/ui/widgets/cards/heatmap.dart b/lib/ui/widgets/cards/heatmap.dart index ffc40ff31e836ea8165ec59650f4e9ac11a3e8ad..744db5493cf369557f83d55602bfcad444e1727c 100644 --- a/lib/ui/widgets/cards/heatmap.dart +++ b/lib/ui/widgets/cards/heatmap.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/cubit/activity/data_heatmap_cubit.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; import 'package:scrobbles/models/data/heatmap.dart'; import 'package:scrobbles/ui/widgets/card_content.dart'; import 'package:scrobbles/ui/widgets/charts/heatmap.dart'; @@ -12,8 +13,9 @@ class CardHeatmap extends StatelessWidget { @override Widget build(BuildContext context) { - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getDistributionDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeDistributionDaysCount); return BlocBuilder<DataHeatmapCubit, DataHeatmapState>( builder: (BuildContext context, DataHeatmapState data) { diff --git a/lib/ui/widgets/cards/statistics_recent.dart b/lib/ui/widgets/cards/statistics_recent.dart index 219063ce237e6140fc5ca6188affb6eb326cb210..683bac57f02af42c960ae224edd4876b2b21902a 100644 --- a/lib/ui/widgets/cards/statistics_recent.dart +++ b/lib/ui/widgets/cards/statistics_recent.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/cubit/activity/data_statistics_recent_cubit.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; import 'package:scrobbles/models/data/statistics_recent.dart'; import 'package:scrobbles/ui/widgets/card_content.dart'; import 'package:scrobbles/ui/widgets/content/statistics_recent.dart'; @@ -12,8 +13,9 @@ class CardStatisticsRecent extends StatelessWidget { @override Widget build(BuildContext context) { - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getStatisticsRecentDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeStatisticsRecentDaysCount); return BlocBuilder<DataStatisticsRecentCubit, DataStatisticsRecentState>( builder: (BuildContext context, DataStatisticsRecentState data) { diff --git a/lib/ui/widgets/cards/timeline.dart b/lib/ui/widgets/cards/timeline.dart index 941281706da59f4d13bdba402155a47261564387..6ce4597f5d1f43bbc073de8667422e9374e84902 100644 --- a/lib/ui/widgets/cards/timeline.dart +++ b/lib/ui/widgets/cards/timeline.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/cubit/activity/data_timeline_cubit.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; import 'package:scrobbles/models/data/timeline.dart'; import 'package:scrobbles/ui/widgets/card_content.dart'; import 'package:scrobbles/ui/widgets/charts/timeline_counts.dart'; @@ -13,8 +14,8 @@ class CardTimeline extends StatelessWidget { @override Widget build(BuildContext context) { - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getTimelineDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = settings.getAsInt(ApplicationConfig.parameterCodeTimelineDaysCount); return BlocBuilder<DataTimelineCubit, DataTimelineState>( builder: (BuildContext context, DataTimelineState data) { diff --git a/lib/ui/widgets/cards/top_artists.dart b/lib/ui/widgets/cards/top_artists.dart index 87f7a49493e0b1d008aa841f0128847bacae2b4f..da8a589b152b4e971afc5dc659e3a62bd87a1106 100644 --- a/lib/ui/widgets/cards/top_artists.dart +++ b/lib/ui/widgets/cards/top_artists.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; +import 'package:scrobbles/config/application_config.dart'; + import 'package:scrobbles/cubit/activity/data_top_artists_cubit.dart'; -import 'package:scrobbles/cubit/settings/settings_global_cubit.dart'; import 'package:scrobbles/models/data/topartists.dart'; import 'package:scrobbles/ui/widgets/card_content.dart'; import 'package:scrobbles/ui/widgets/charts/top_artists.dart'; @@ -13,8 +14,9 @@ class CardTopArtists extends StatelessWidget { @override Widget build(BuildContext context) { - GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); - final int daysCount = settings.getTopArtistsDaysCount(); + ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings; + final int daysCount = + settings.getAsInt(ApplicationConfig.parameterCodeTopArtistsDaysCount); return BlocBuilder<DataTopArtistsCubit, DataTopArtistsState>( builder: (BuildContext context, DataTopArtistsState data) { diff --git a/pubspec.lock b/pubspec.lock index 561ff5327405f83d9ee361c4b1b006f6f6603f0c..91a1880b3b585fe144fe60ea4a1b0c5846eee77f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -130,11 +130,11 @@ packages: dependency: "direct main" description: path: "." - ref: "0.4.0" - resolved-ref: eb9c090bd00d73324eab8737f74b3339cc24c9e8 + ref: "0.5.0" + resolved-ref: b8164a50489ba981ea57d9f02e2334f09cb8c6a7 url: "https://git.harrault.fr/android/flutter-toolbox.git" source: git - version: "0.4.0" + version: "0.5.0" flutter_lints: dependency: "direct dev" description: diff --git a/pubspec.yaml b/pubspec.yaml index 64319a27c01579640ec9ddbc6d92905067393e7e..9a265b5b1fc0dec12034468de4302f117a4b6995 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: Display scrobbles data and charts publish_to: "none" -version: 0.4.2+68 +version: 0.5.0+69 environment: sdk: "^3.0.0" @@ -16,7 +16,7 @@ dependencies: flutter_custom_toolbox: git: url: https://git.harrault.fr/android/flutter-toolbox.git - ref: 0.4.0 + ref: 0.5.0 # specific fl_chart: ^0.69.0