Skip to content
Snippets Groups Projects
Commit c455d09e authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Use ActivityParameters widgets from flutter_custom_toolbox

parent 9fcba77c
No related branches found
No related tags found
1 merge request!73Resolve "Use ActivityParameters widgets from flutter_custom_toolbox"
Pipeline #7060 passed
Showing
with 289 additions and 452 deletions
Use ActivityParameters widgets from flutter_custom_toolbox.
Utilisation des widgets ActivityParameters de flutter_custom_toolbox.
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:ionicons/ionicons.dart'; import 'package:ionicons/ionicons.dart';
import 'package:scrobbles/common/ui/pages/discoveries.dart'; import 'package:scrobbles/common/ui/pages/discoveries.dart';
import 'package:scrobbles/common/ui/pages/home.dart'; import 'package:scrobbles/common/ui/pages/home.dart';
import 'package:scrobbles/common/ui/pages/statistics.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 { class ActivityPageItem {
final String code; final String code;
final Icon icon; final Icon icon;
final Widget page; final Widget Function({required Activity currentActivity})? builder;
const ActivityPageItem({ const ActivityPageItem({
required this.code, required this.code,
required this.icon, required this.icon,
required this.page, required this.builder,
}); });
} }
...@@ -21,24 +24,30 @@ class ActivityPage { ...@@ -21,24 +24,30 @@ class ActivityPage {
static const bool displayBottomNavBar = false; static const bool displayBottomNavBar = false;
static const indexHome = 0; static const indexHome = 0;
static const pageHome = ActivityPageItem( static final ActivityPageItem pageHome = ActivityPageItem(
code: 'page_home', code: 'page_home',
icon: Icon(Ionicons.home_outline), icon: Icon(Ionicons.home_outline),
page: PageHome(), builder: ({required Activity currentActivity}) {
return PageHome();
},
); );
static const indexDiscoveries = 1; static const indexDiscoveries = 1;
static const pageDiscoveries = ActivityPageItem( static final ActivityPageItem pageDiscoveries = ActivityPageItem(
code: 'page_discoveries', code: 'page_discoveries',
icon: Icon(Ionicons.star_outline), icon: Icon(Ionicons.star_outline),
page: PageDiscoveries(), builder: ({required Activity currentActivity}) {
return PageDiscoveries();
},
); );
static const indexStatistics = 2; static const indexStatistics = 2;
static const pageStatistics = ActivityPageItem( static final ActivityPageItem pageStatistics = ActivityPageItem(
code: 'page_statistics', code: 'page_statistics',
icon: Icon(Ionicons.bar_chart_outline), icon: Icon(Ionicons.bar_chart_outline),
page: PageStatistics(), builder: ({required Activity currentActivity}) {
return PageStatistics();
},
); );
static Map<int, ActivityPageItem> items = { static Map<int, ActivityPageItem> items = {
...@@ -54,6 +63,16 @@ class ActivityPage { ...@@ -54,6 +63,16 @@ class ActivityPage {
} }
static Widget getWidget(int pageIndex) { 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);
}
},
);
} }
} }
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:scrobbles/config/default_global_settings.dart'; import 'package:scrobbles/config/application_config.dart';
import 'package:scrobbles/cubit/settings/settings_global_cubit.dart';
class SettingsForm extends StatefulWidget { class SettingsForm extends StatefulWidget {
const SettingsForm({super.key}); const SettingsForm({super.key});
...@@ -12,84 +11,100 @@ class SettingsForm extends StatefulWidget { ...@@ -12,84 +11,100 @@ class SettingsForm extends StatefulWidget {
} }
class _SettingsFormState extends State<SettingsForm> { class _SettingsFormState extends State<SettingsForm> {
final usernameController = TextEditingController(); String discoveriesDaysCount = ApplicationConfig.config
final securityTokenController = TextEditingController(); .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; final List<bool> _selectedDiscoveriesDaysCount = [];
int distributionDaysCount = DefaultGlobalSettings.defaultDistributionDaysCount; final List<bool> _selectedDistributionDaysCount = [];
int statisticsRecentDaysCount = DefaultGlobalSettings.defaultStatisticsRecentDaysCount; final List<bool> _selectedStatisticsRecentDaysCount = [];
int timelineDaysCount = DefaultGlobalSettings.defaultTimelineDaysCount; final List<bool> _selectedTimelineDaysCount = [];
int topArtistsDaysCount = DefaultGlobalSettings.defaultTopArtistsDaysCount; final List<bool> _selectedTopArtistsDaysCount = [];
int newArtistsCount = DefaultGlobalSettings.defaultNewArtistsCount; final List<bool> _selectedNewArtistsCount = [];
int newTracksCount = DefaultGlobalSettings.defaultNewTracksCount; final List<bool> _selectedNewTracksCount = [];
List<bool> _selectedDiscoveriesDaysCount = [];
List<bool> _selectedDistributionDaysCount = [];
List<bool> _selectedStatisticsRecentDaysCount = [];
List<bool> _selectedTimelineDaysCount = [];
List<bool> _selectedTopArtistsDaysCount = [];
List<bool> _selectedNewArtistsCount = [];
List<bool> _selectedNewTracksCount = [];
@override @override
void didChangeDependencies() { void didChangeDependencies() {
GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings;
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);
usernameController.text = settings.getUsername(); _selectedDiscoveriesDaysCount.clear();
securityTokenController.text = settings.getSecurityToken(); for (var parameterItemValue in ApplicationConfig.allowedDaysCountValues) {
_selectedDiscoveriesDaysCount.add(parameterItemValue.value == discoveriesDaysCount);
}
discoveriesDaysCount = settings.getDiscoveriesDaysCount(); _selectedDistributionDaysCount.clear();
distributionDaysCount = settings.getDistributionDaysCount(); for (var parameterItemValue in ApplicationConfig.allowedDaysCountValues) {
statisticsRecentDaysCount = settings.getStatisticsRecentDaysCount(); _selectedDistributionDaysCount.add(parameterItemValue.value == distributionDaysCount);
timelineDaysCount = settings.getTimelineDaysCount(); }
topArtistsDaysCount = settings.getTopArtistsDaysCount();
newArtistsCount = settings.getNewArtistsCount();
newTracksCount = settings.getNewTracksCount();
_selectedDiscoveriesDaysCount = DefaultGlobalSettings.allowedDaysCountValues _selectedStatisticsRecentDaysCount.clear();
.map((e) => (e == discoveriesDaysCount)) for (var parameterItemValue in ApplicationConfig.allowedDaysCountValues) {
.toList(); _selectedStatisticsRecentDaysCount
_selectedDistributionDaysCount = DefaultGlobalSettings.allowedDaysCountValues .add(parameterItemValue.value == statisticsRecentDaysCount);
.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();
super.didChangeDependencies(); _selectedTimelineDaysCount.clear();
for (var parameterItemValue in ApplicationConfig.allowedDaysCountValues) {
_selectedTimelineDaysCount.add(parameterItemValue.value == timelineDaysCount);
} }
@override _selectedTopArtistsDaysCount.clear();
void dispose() { for (var parameterItemValue in ApplicationConfig.allowedDaysCountValues) {
usernameController.dispose(); _selectedTopArtistsDaysCount.add(parameterItemValue.value == topArtistsDaysCount);
securityTokenController.dispose(); }
super.dispose();
_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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
void saveSettings() { void saveSettings() {
BlocProvider.of<GlobalSettingsCubit>(context).setValues( BlocProvider.of<ActivitySettingsCubit>(context).setValues(values: {
username: usernameController.text, ApplicationConfig.parameterCodeDiscoveriesDaysCount: discoveriesDaysCount,
securityToken: securityTokenController.text, ApplicationConfig.parameterCodeDistributionDaysCount: distributionDaysCount,
discoveriesDaysCount: discoveriesDaysCount, ApplicationConfig.parameterCodeStatisticsRecentDaysCount: statisticsRecentDaysCount,
distributionDaysCount: distributionDaysCount, ApplicationConfig.parameterCodeTimelineDaysCount: timelineDaysCount,
statisticsRecentDaysCount: statisticsRecentDaysCount, ApplicationConfig.parameterCodeTopArtistsDaysCount: topArtistsDaysCount,
timelineDaysCount: timelineDaysCount, ApplicationConfig.parameterCodeNewArtistsCount: newArtistsCount,
topArtistsDaysCount: topArtistsDaysCount, ApplicationConfig.parameterCodeNewTracksCount: newTracksCount,
newArtistsCount: newArtistsCount, });
newTracksCount: newTracksCount,
);
} }
return Column( return Column(
...@@ -128,30 +143,6 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -128,30 +143,6 @@ class _SettingsFormState extends State<SettingsForm> {
const SizedBox(height: 16), 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')), AppTitle(text: tr('settings_title_days_count')),
// Statistics (recent) // Statistics (recent)
...@@ -164,7 +155,7 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -164,7 +155,7 @@ class _SettingsFormState extends State<SettingsForm> {
onPressed: (int index) { onPressed: (int index) {
setState(() { setState(() {
statisticsRecentDaysCount = statisticsRecentDaysCount =
DefaultGlobalSettings.allowedDaysCountValues[index]; ApplicationConfig.allowedDaysCountValues[index].value;
for (int i = 0; i < _selectedStatisticsRecentDaysCount.length; i++) { for (int i = 0; i < _selectedStatisticsRecentDaysCount.length; i++) {
_selectedStatisticsRecentDaysCount[i] = i == index; _selectedStatisticsRecentDaysCount[i] = i == index;
} }
...@@ -174,8 +165,9 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -174,8 +165,9 @@ class _SettingsFormState extends State<SettingsForm> {
borderRadius: const BorderRadius.all(Radius.circular(8)), borderRadius: const BorderRadius.all(Radius.circular(8)),
constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
isSelected: _selectedStatisticsRecentDaysCount, isSelected: _selectedStatisticsRecentDaysCount,
children: DefaultGlobalSettings.allowedDaysCountValues children: ApplicationConfig.allowedDaysCountValues
.map((e) => Text(e.toString())) .map((ApplicationSettingsParameterItemValue parameterItemValue) =>
Text(parameterItemValue.toString()))
.toList(), .toList(),
), ),
], ],
...@@ -190,7 +182,7 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -190,7 +182,7 @@ class _SettingsFormState extends State<SettingsForm> {
ToggleButtons( ToggleButtons(
onPressed: (int index) { onPressed: (int index) {
setState(() { setState(() {
timelineDaysCount = DefaultGlobalSettings.allowedDaysCountValues[index]; timelineDaysCount = ApplicationConfig.allowedDaysCountValues[index].value;
for (int i = 0; i < _selectedTimelineDaysCount.length; i++) { for (int i = 0; i < _selectedTimelineDaysCount.length; i++) {
_selectedTimelineDaysCount[i] = i == index; _selectedTimelineDaysCount[i] = i == index;
} }
...@@ -200,8 +192,9 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -200,8 +192,9 @@ class _SettingsFormState extends State<SettingsForm> {
borderRadius: const BorderRadius.all(Radius.circular(8)), borderRadius: const BorderRadius.all(Radius.circular(8)),
constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
isSelected: _selectedTimelineDaysCount, isSelected: _selectedTimelineDaysCount,
children: DefaultGlobalSettings.allowedDaysCountValues children: ApplicationConfig.allowedDaysCountValues
.map((e) => Text(e.toString())) .map((ApplicationSettingsParameterItemValue parameterItemValue) =>
Text(parameterItemValue.toString()))
.toList(), .toList(),
), ),
], ],
...@@ -216,7 +209,7 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -216,7 +209,7 @@ class _SettingsFormState extends State<SettingsForm> {
ToggleButtons( ToggleButtons(
onPressed: (int index) { onPressed: (int index) {
setState(() { setState(() {
topArtistsDaysCount = DefaultGlobalSettings.allowedDaysCountValues[index]; topArtistsDaysCount = ApplicationConfig.allowedDaysCountValues[index].value;
for (int i = 0; i < _selectedTopArtistsDaysCount.length; i++) { for (int i = 0; i < _selectedTopArtistsDaysCount.length; i++) {
_selectedTopArtistsDaysCount[i] = i == index; _selectedTopArtistsDaysCount[i] = i == index;
} }
...@@ -226,8 +219,9 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -226,8 +219,9 @@ class _SettingsFormState extends State<SettingsForm> {
borderRadius: const BorderRadius.all(Radius.circular(8)), borderRadius: const BorderRadius.all(Radius.circular(8)),
constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
isSelected: _selectedTopArtistsDaysCount, isSelected: _selectedTopArtistsDaysCount,
children: DefaultGlobalSettings.allowedDaysCountValues children: ApplicationConfig.allowedDaysCountValues
.map((e) => Text(e.toString())) .map((ApplicationSettingsParameterItemValue parameterItemValue) =>
Text(parameterItemValue.toString()))
.toList(), .toList(),
), ),
], ],
...@@ -242,7 +236,7 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -242,7 +236,7 @@ class _SettingsFormState extends State<SettingsForm> {
ToggleButtons( ToggleButtons(
onPressed: (int index) { onPressed: (int index) {
setState(() { setState(() {
discoveriesDaysCount = DefaultGlobalSettings.allowedDaysCountValues[index]; discoveriesDaysCount = ApplicationConfig.allowedDaysCountValues[index].value;
for (int i = 0; i < _selectedDiscoveriesDaysCount.length; i++) { for (int i = 0; i < _selectedDiscoveriesDaysCount.length; i++) {
_selectedDiscoveriesDaysCount[i] = i == index; _selectedDiscoveriesDaysCount[i] = i == index;
} }
...@@ -252,8 +246,9 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -252,8 +246,9 @@ class _SettingsFormState extends State<SettingsForm> {
borderRadius: const BorderRadius.all(Radius.circular(8)), borderRadius: const BorderRadius.all(Radius.circular(8)),
constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
isSelected: _selectedDiscoveriesDaysCount, isSelected: _selectedDiscoveriesDaysCount,
children: DefaultGlobalSettings.allowedDaysCountValues children: ApplicationConfig.allowedDaysCountValues
.map((e) => Text(e.toString())) .map((ApplicationSettingsParameterItemValue parameterItemValue) =>
Text(parameterItemValue.toString()))
.toList(), .toList(),
), ),
], ],
...@@ -268,7 +263,8 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -268,7 +263,8 @@ class _SettingsFormState extends State<SettingsForm> {
ToggleButtons( ToggleButtons(
onPressed: (int index) { onPressed: (int index) {
setState(() { setState(() {
distributionDaysCount = DefaultGlobalSettings.allowedDaysCountValues[index]; distributionDaysCount =
ApplicationConfig.allowedDaysCountValues[index].value;
for (int i = 0; i < _selectedDistributionDaysCount.length; i++) { for (int i = 0; i < _selectedDistributionDaysCount.length; i++) {
_selectedDistributionDaysCount[i] = i == index; _selectedDistributionDaysCount[i] = i == index;
} }
...@@ -278,8 +274,9 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -278,8 +274,9 @@ class _SettingsFormState extends State<SettingsForm> {
borderRadius: const BorderRadius.all(Radius.circular(8)), borderRadius: const BorderRadius.all(Radius.circular(8)),
constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
isSelected: _selectedDistributionDaysCount, isSelected: _selectedDistributionDaysCount,
children: DefaultGlobalSettings.allowedDaysCountValues children: ApplicationConfig.allowedDaysCountValues
.map((e) => Text(e.toString())) .map((ApplicationSettingsParameterItemValue parameterItemValue) =>
Text(parameterItemValue.toString()))
.toList(), .toList(),
), ),
], ],
...@@ -297,7 +294,7 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -297,7 +294,7 @@ class _SettingsFormState extends State<SettingsForm> {
ToggleButtons( ToggleButtons(
onPressed: (int index) { onPressed: (int index) {
setState(() { setState(() {
newArtistsCount = DefaultGlobalSettings.allowedCountValues[index]; newArtistsCount = ApplicationConfig.allowedCountValues[index].value;
for (int i = 0; i < _selectedNewArtistsCount.length; i++) { for (int i = 0; i < _selectedNewArtistsCount.length; i++) {
_selectedNewArtistsCount[i] = i == index; _selectedNewArtistsCount[i] = i == index;
} }
...@@ -307,8 +304,9 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -307,8 +304,9 @@ class _SettingsFormState extends State<SettingsForm> {
borderRadius: const BorderRadius.all(Radius.circular(8)), borderRadius: const BorderRadius.all(Radius.circular(8)),
constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
isSelected: _selectedNewArtistsCount, isSelected: _selectedNewArtistsCount,
children: DefaultGlobalSettings.allowedCountValues children: ApplicationConfig.allowedCountValues
.map((e) => Text(e.toString())) .map((ApplicationSettingsParameterItemValue parameterItemValue) =>
Text(parameterItemValue.toString()))
.toList(), .toList(),
), ),
], ],
...@@ -323,7 +321,7 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -323,7 +321,7 @@ class _SettingsFormState extends State<SettingsForm> {
ToggleButtons( ToggleButtons(
onPressed: (int index) { onPressed: (int index) {
setState(() { setState(() {
newTracksCount = DefaultGlobalSettings.allowedCountValues[index]; newTracksCount = ApplicationConfig.allowedCountValues[index].value;
for (int i = 0; i < _selectedNewTracksCount.length; i++) { for (int i = 0; i < _selectedNewTracksCount.length; i++) {
_selectedNewTracksCount[i] = i == index; _selectedNewTracksCount[i] = i == index;
} }
...@@ -333,26 +331,13 @@ class _SettingsFormState extends State<SettingsForm> { ...@@ -333,26 +331,13 @@ class _SettingsFormState extends State<SettingsForm> {
borderRadius: const BorderRadius.all(Radius.circular(8)), borderRadius: const BorderRadius.all(Radius.circular(8)),
constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0), constraints: const BoxConstraints(minHeight: 30.0, minWidth: 30.0),
isSelected: _selectedNewTracksCount, isSelected: _selectedNewTracksCount,
children: DefaultGlobalSettings.allowedCountValues children: ApplicationConfig.allowedCountValues
.map((e) => Text(e.toString())) .map((ApplicationSettingsParameterItemValue parameterItemValue) =>
Text(parameterItemValue.toString()))
.toList(), .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(),
// ),
], ],
); );
} }
......
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 { 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) {},
);
} }
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 [];
}
}
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;
}
...@@ -2,8 +2,6 @@ import 'package:flutter/material.dart'; ...@@ -2,8 +2,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:scrobbles/models/activity/activity.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'; part 'activity_state.dart';
...@@ -23,7 +21,6 @@ class ActivityCubit extends HydratedCubit<ActivityState> { ...@@ -23,7 +21,6 @@ class ActivityCubit extends HydratedCubit<ActivityState> {
final Activity activity = Activity( final Activity activity = Activity(
// Settings // Settings
activitySettings: state.currentActivity.activitySettings, activitySettings: state.currentActivity.activitySettings,
globalSettings: state.currentActivity.globalSettings,
// State // State
isRunning: state.currentActivity.isRunning, isRunning: state.currentActivity.isRunning,
); );
...@@ -31,14 +28,13 @@ class ActivityCubit extends HydratedCubit<ActivityState> { ...@@ -31,14 +28,13 @@ class ActivityCubit extends HydratedCubit<ActivityState> {
updateState(activity); updateState(activity);
} }
void startNewActivity({ void startNewActivity(BuildContext context) {
required ActivitySettings activitySettings, final ActivitySettingsCubit activitySettingsCubit =
required GlobalSettings globalSettings, BlocProvider.of<ActivitySettingsCubit>(context);
}) {
final Activity newActivity = Activity.createNew( final Activity newActivity = Activity.createNew(
// Settings // Settings
activitySettings: activitySettings, activitySettings: activitySettingsCubit.state.settings,
globalSettings: globalSettings,
); );
newActivity.dump(); newActivity.dump();
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.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/models/data/counts_by_day.dart';
import 'package:scrobbles/network/scrobbles.dart'; import 'package:scrobbles/network/scrobbles.dart';
...@@ -53,8 +54,9 @@ class DataCountsByDayCubit extends HydratedCubit<DataCountsByDayState> { ...@@ -53,8 +54,9 @@ class DataCountsByDayCubit extends HydratedCubit<DataCountsByDayState> {
void refresh(BuildContext context) async { void refresh(BuildContext context) async {
setLoading(); setLoading();
GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings;
final int daysCount = settings.getDistributionDaysCount(); final int daysCount =
settings.getAsInt(ApplicationConfig.parameterCodeDistributionDaysCount);
final CountsByDayData? data = await ScrobblesApi.fetchCountsByDay(daysCount); final CountsByDayData? data = await ScrobblesApi.fetchCountsByDay(daysCount);
if (data != null) { if (data != null) {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.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/models/data/counts_by_hour.dart';
import 'package:scrobbles/network/scrobbles.dart'; import 'package:scrobbles/network/scrobbles.dart';
...@@ -53,8 +54,9 @@ class DataCountsByHourCubit extends HydratedCubit<DataCountsByHourState> { ...@@ -53,8 +54,9 @@ class DataCountsByHourCubit extends HydratedCubit<DataCountsByHourState> {
void refresh(BuildContext context) async { void refresh(BuildContext context) async {
setLoading(); setLoading();
GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings;
final int daysCount = settings.getDistributionDaysCount(); final int daysCount =
settings.getAsInt(ApplicationConfig.parameterCodeDistributionDaysCount);
final CountsByHourData? data = await ScrobblesApi.fetchCountsByHour(daysCount); final CountsByHourData? data = await ScrobblesApi.fetchCountsByHour(daysCount);
if (data != null) { if (data != null) {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.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/models/data/discoveries.dart';
import 'package:scrobbles/network/scrobbles.dart'; import 'package:scrobbles/network/scrobbles.dart';
...@@ -53,8 +54,9 @@ class DataDiscoveriesCubit extends HydratedCubit<DataDiscoveriesState> { ...@@ -53,8 +54,9 @@ class DataDiscoveriesCubit extends HydratedCubit<DataDiscoveriesState> {
void refresh(BuildContext context) async { void refresh(BuildContext context) async {
setLoading(); setLoading();
GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings;
final int daysCount = settings.getDiscoveriesDaysCount(); final int daysCount =
settings.getAsInt(ApplicationConfig.parameterCodeDiscoveriesDaysCount);
final DiscoveriesData? data = await ScrobblesApi.fetchDiscoveries(daysCount); final DiscoveriesData? data = await ScrobblesApi.fetchDiscoveries(daysCount);
if (data != null) { if (data != null) {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.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/models/data/heatmap.dart';
import 'package:scrobbles/network/scrobbles.dart'; import 'package:scrobbles/network/scrobbles.dart';
...@@ -53,8 +54,9 @@ class DataHeatmapCubit extends HydratedCubit<DataHeatmapState> { ...@@ -53,8 +54,9 @@ class DataHeatmapCubit extends HydratedCubit<DataHeatmapState> {
void refresh(BuildContext context) async { void refresh(BuildContext context) async {
setLoading(); setLoading();
GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings;
final int daysCount = settings.getDistributionDaysCount(); final int daysCount =
settings.getAsInt(ApplicationConfig.parameterCodeDistributionDaysCount);
final HeatmapData? data = await ScrobblesApi.fetchHeatmap(daysCount); final HeatmapData? data = await ScrobblesApi.fetchHeatmap(daysCount);
if (data != null) { if (data != null) {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.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/models/data/new_artists.dart';
import 'package:scrobbles/network/scrobbles.dart'; import 'package:scrobbles/network/scrobbles.dart';
...@@ -53,8 +54,8 @@ class DataNewArtistsCubit extends HydratedCubit<DataNewArtistsState> { ...@@ -53,8 +54,8 @@ class DataNewArtistsCubit extends HydratedCubit<DataNewArtistsState> {
void refresh(BuildContext context) async { void refresh(BuildContext context) async {
setLoading(); setLoading();
GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings;
final int count = settings.getNewArtistsCount(); final int count = settings.getAsInt(ApplicationConfig.parameterCodeNewArtistsCount);
final NewArtistsData? data = await ScrobblesApi.fetchNewArtists(count); final NewArtistsData? data = await ScrobblesApi.fetchNewArtists(count);
if (data != null) { if (data != null) {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.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/models/data/new_tracks.dart';
import 'package:scrobbles/network/scrobbles.dart'; import 'package:scrobbles/network/scrobbles.dart';
...@@ -53,8 +54,8 @@ class DataNewTracksCubit extends HydratedCubit<DataNewTracksState> { ...@@ -53,8 +54,8 @@ class DataNewTracksCubit extends HydratedCubit<DataNewTracksState> {
void refresh(BuildContext context) async { void refresh(BuildContext context) async {
setLoading(); setLoading();
GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings;
final int count = settings.getNewTracksCount(); final int count = settings.getAsInt(ApplicationConfig.parameterCodeNewTracksCount);
final NewTracksData? data = await ScrobblesApi.fetchNewTracks(count); final NewTracksData? data = await ScrobblesApi.fetchNewTracks(count);
if (data != null) { if (data != null) {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.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/models/data/statistics_recent.dart';
import 'package:scrobbles/network/scrobbles.dart'; import 'package:scrobbles/network/scrobbles.dart';
...@@ -54,8 +55,9 @@ class DataStatisticsRecentCubit extends HydratedCubit<DataStatisticsRecentState> ...@@ -54,8 +55,9 @@ class DataStatisticsRecentCubit extends HydratedCubit<DataStatisticsRecentState>
void refresh(BuildContext context) async { void refresh(BuildContext context) async {
setLoading(); setLoading();
GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings;
final int daysCount = settings.getStatisticsRecentDaysCount(); final int daysCount =
settings.getAsInt(ApplicationConfig.parameterCodeStatisticsRecentDaysCount);
final StatisticsRecentData? data = await ScrobblesApi.fetchRecentStatistics(daysCount); final StatisticsRecentData? data = await ScrobblesApi.fetchRecentStatistics(daysCount);
if (data != null) { if (data != null) {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.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/models/data/timeline.dart';
import 'package:scrobbles/network/scrobbles.dart'; import 'package:scrobbles/network/scrobbles.dart';
...@@ -53,8 +54,8 @@ class DataTimelineCubit extends HydratedCubit<DataTimelineState> { ...@@ -53,8 +54,8 @@ class DataTimelineCubit extends HydratedCubit<DataTimelineState> {
void refresh(BuildContext context) async { void refresh(BuildContext context) async {
setLoading(); setLoading();
GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings;
final int daysCount = settings.getTimelineDaysCount(); final int daysCount = settings.getAsInt(ApplicationConfig.parameterCodeTimelineDaysCount);
final TimelineData? data = await ScrobblesApi.fetchTimeline(daysCount); final TimelineData? data = await ScrobblesApi.fetchTimeline(daysCount);
if (data != null) { if (data != null) {
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.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/models/data/topartists.dart';
import 'package:scrobbles/network/scrobbles.dart'; import 'package:scrobbles/network/scrobbles.dart';
...@@ -53,8 +54,9 @@ class DataTopArtistsCubit extends HydratedCubit<DataTopArtistsState> { ...@@ -53,8 +54,9 @@ class DataTopArtistsCubit extends HydratedCubit<DataTopArtistsState> {
void refresh(BuildContext context) async { void refresh(BuildContext context) async {
setLoading(); setLoading();
GlobalSettingsCubit settings = BlocProvider.of<GlobalSettingsCubit>(context); ActivitySettings settings = BlocProvider.of<ActivitySettingsCubit>(context).state.settings;
final int daysCount = settings.getTopArtistsDaysCount(); final int daysCount =
settings.getAsInt(ApplicationConfig.parameterCodeTopArtistsDaysCount);
final TopArtistsData? data = await ScrobblesApi.fetchTopArtists(daysCount); final TopArtistsData? data = await ScrobblesApi.fetchTopArtists(daysCount);
if (data != null) { if (data != null) {
......
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,
};
}
}
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,
];
}
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,
};
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment