diff --git a/lib/components/generated_form_modal.dart b/lib/components/generated_form_modal.dart index 772eb59..2a24ae1 100644 --- a/lib/components/generated_form_modal.dart +++ b/lib/components/generated_form_modal.dart @@ -8,14 +8,12 @@ class GeneratedFormModal extends StatefulWidget { {super.key, required this.title, required this.items, - required this.defaultValues, this.initValid = false, this.message = ''}); final String title; final String message; final List> items; - final Map defaultValues; final bool initValid; @override @@ -29,9 +27,6 @@ class _GeneratedFormModalState extends State { @override void initState() { super.initState(); - widget.defaultValues.forEach((key, value) { - values[key] = value; - }); valid = widget.initValid || widget.items.isEmpty; } diff --git a/lib/pages/add_app.dart b/lib/pages/add_app.dart index 4e2809e..f2a67cf 100644 --- a/lib/pages/add_app.dart +++ b/lib/pages/add_app.dart @@ -84,7 +84,6 @@ class _AddAppPageState extends State { : tr('app') ]), items: const [], - defaultValues: const {}, message: '${pickedSource!.enforceTrackOnly ? tr('appsFromSourceAreTrackOnly') : tr('youPickedTrackOnly')}\n\n${tr('trackOnlyAppDescription')}', ); @@ -99,7 +98,6 @@ class _AddAppPageState extends State { return const GeneratedFormModal( title: 'Disable Version Detection', // TODO items: [], - defaultValues: {}, message: 'TODO', ); }) == diff --git a/lib/pages/app.dart b/lib/pages/app.dart index 3d4aae1..b978e07 100644 --- a/lib/pages/app.dart +++ b/lib/pages/app.dart @@ -214,12 +214,7 @@ class _AppPageState extends State { return GeneratedFormModal( title: 'Additional Options', items: source - .additionalSourceAppSpecificFormItems, - defaultValues: app != null - ? app.app.additionalData - : getDefaultValuesFromFormItems( - source - .additionalSourceAppSpecificFormItems)); + .additionalSourceAppSpecificFormItems); }).then((values) { if (app != null && values != null) { var changedApp = app.app; diff --git a/lib/pages/apps.dart b/lib/pages/apps.dart index ba99ca5..e9db472 100644 --- a/lib/pages/apps.dart +++ b/lib/pages/apps.dart @@ -349,7 +349,6 @@ class AppsPageState extends State { return GeneratedFormModal( title: tr('removeSelectedAppsQuestion'), items: const [], - defaultValues: const {}, initValid: true, message: tr( 'xWillBeRemovedButRemainInstalled', @@ -376,36 +375,40 @@ class AppsPageState extends State { ? null : () { HapticFeedback.heavyImpact(); - List formInputs = []; - Map defaultValues = {}; + List formItems = []; if (existingUpdateIdsAllOrSelected.isNotEmpty) { - formInputs.add(GeneratedFormItem('updates', + formItems.add(GeneratedFormItem('updates', label: tr('updateX', args: [ plural('apps', existingUpdateIdsAllOrSelected.length) ]), - type: FormItemType.bool)); - defaultValues['updates'] = 'true'; + type: FormItemType.bool, + defaultValue: 'true')); } if (newInstallIdsAllOrSelected.isNotEmpty) { - formInputs.add(GeneratedFormItem('installs', + formItems.add(GeneratedFormItem('installs', label: tr('installX', args: [ plural('apps', newInstallIdsAllOrSelected.length) ]), - type: FormItemType.bool)); - defaultValues['installs'] = - defaultValues.isEmpty ? 'true' : ''; + type: FormItemType.bool, + defaultValue: + existingUpdateIdsAllOrSelected.isNotEmpty + ? 'true' + : '')); } if (trackOnlyUpdateIdsAllOrSelected.isNotEmpty) { - formInputs.add(GeneratedFormItem('trackonlies', + formItems.add(GeneratedFormItem('trackonlies', label: tr('markXTrackOnlyAsUpdated', args: [ plural('apps', trackOnlyUpdateIdsAllOrSelected.length) ]), - type: FormItemType.bool)); - defaultValues['trackonlies'] = - defaultValues.isEmpty ? 'true' : ''; + type: FormItemType.bool, + defaultValue: existingUpdateIdsAllOrSelected + .isNotEmpty || + newInstallIdsAllOrSelected.isNotEmpty + ? 'true' + : '')); } showDialog?>( context: context, @@ -417,14 +420,14 @@ class AppsPageState extends State { return GeneratedFormModal( title: tr('changeX', args: [plural('apps', totalApps)]), - items: formInputs.map((e) => [e]).toList(), - defaultValues: defaultValues, + items: formItems.map((e) => [e]).toList(), initValid: true, ); }).then((values) { if (values != null) { if (values.isEmpty) { - values = defaultValues; + values = getDefaultValuesFromFormItems( + [formItems]); } bool shouldInstallUpdates = values['updates'] == 'true'; @@ -604,7 +607,6 @@ class AppsPageState extends State { title: tr( 'resetInstallStatusForSelectedAppsQuestion'), items: const [], - defaultValues: const {}, initValid: true, message: tr( 'installStatusOfXWillBeResetExplanation', @@ -677,29 +679,35 @@ class AppsPageState extends State { showDialog?>( context: context, builder: (BuildContext ctx) { + var vals = filter == null + ? AppsFilter().toValuesMap() + : filter!.toValuesMap(); return GeneratedFormModal( title: tr('filterApps'), items: [ [ GeneratedFormItem('appName', - label: tr('appName'), required: false), + label: tr('appName'), + required: false, + defaultValue: vals['appName']), GeneratedFormItem('author', - label: tr('author'), required: false) + label: tr('author'), + required: false, + defaultValue: vals['author']) ], [ GeneratedFormItem('upToDateApps', label: tr('upToDateApps'), - type: FormItemType.bool) + type: FormItemType.bool, + defaultValue: vals['upToDateApps']) ], [ GeneratedFormItem('nonInstalledApps', label: tr('nonInstalledApps'), - type: FormItemType.bool) + type: FormItemType.bool, + defaultValue: vals['nonInstalledApps']) ] - ], - defaultValues: filter == null - ? AppsFilter().toValuesMap() - : filter!.toValuesMap()); + ]); }).then((values) { if (values != null) { setState(() { diff --git a/lib/pages/import_export.dart b/lib/pages/import_export.dart index d6aede6..db69b7f 100644 --- a/lib/pages/import_export.dart +++ b/lib/pages/import_export.dart @@ -172,7 +172,6 @@ class _ImportExportPageState extends State { ]) ] ], - defaultValues: const {}, ); }).then((values) { if (values != null) { @@ -242,7 +241,6 @@ class _ImportExportPageState extends State { 'searchQuery')) ] ], - defaultValues: const {}, ); }); if (values != null && @@ -351,7 +349,6 @@ class _ImportExportPageState extends State { label: e) ]) .toList(), - defaultValues: const {}, ); }); if (values != null) { diff --git a/lib/providers/source_provider.dart b/lib/providers/source_provider.dart index 8d123ea..0b3692e 100644 --- a/lib/providers/source_provider.dart +++ b/lib/providers/source_provider.dart @@ -141,8 +141,9 @@ List getLinksFromParsedHTML( .map((e) => '$prependToLinks${e.attributes['href']!}') .toList(); -getDefaultValuesFromFormItems(List> items) { - Map.fromEntries(items +Map getDefaultValuesFromFormItems( + List> items) { + return Map.fromEntries(items .map((row) => row.map((el) => MapEntry(el.key, el.defaultValue ?? ''))) .reduce((value, element) => [...value, ...element])); }