diff --git a/lib/components/generated_form.dart b/lib/components/generated_form.dart index 6a74181..1a7e45e 100644 --- a/lib/components/generated_form.dart +++ b/lib/components/generated_form.dart @@ -130,6 +130,21 @@ class GeneratedForm extends StatefulWidget { State createState() => _GeneratedFormState(); } +// Generates a random light color +// Courtesy of ChatGPT 😭 (with a bugfix 🥳) +Color generateRandomLightColor() { + // Create a random number generator + final Random random = Random(); + + // Generate random hue, saturation, and value values + final double hue = random.nextDouble() * 360; + final double saturation = 0.5 + random.nextDouble() * 0.5; + final double value = 0.9 + random.nextDouble() * 0.1; + + // Create a HSV color with the random values + return HSVColor.fromAHSV(1.0, hue, saturation, value).toColor(); +} + class _GeneratedFormState extends State { final _formKey = GlobalKey(); Map values = {}; @@ -154,21 +169,6 @@ class _GeneratedFormState extends State { widget.onValueChanges(returnValues, valid, isBuilding); } - // Generates a random light color - // Courtesy of ChatGPT 😭 (with a bugfix 🥳) - Color generateRandomLightColor() { - // Create a random number generator - final Random random = Random(); - - // Generate random hue, saturation, and value values - final double hue = random.nextDouble() * 360; - final double saturation = 0.5 + random.nextDouble() * 0.5; - final double value = 0.9 + random.nextDouble() * 0.1; - - // Create a HSV color with the random values - return HSVColor.fromAHSV(1.0, hue, saturation, value).toColor(); - } - @override void initState() { super.initState(); diff --git a/lib/pages/import_export.dart b/lib/pages/import_export.dart index 5d09d00..f6d1dcf 100644 --- a/lib/pages/import_export.dart +++ b/lib/pages/import_export.dart @@ -9,6 +9,7 @@ import 'package:obtainium/components/generated_form.dart'; import 'package:obtainium/components/generated_form_modal.dart'; import 'package:obtainium/custom_errors.dart'; import 'package:obtainium/providers/apps_provider.dart'; +import 'package:obtainium/providers/settings_provider.dart'; import 'package:obtainium/providers/source_provider.dart'; import 'package:provider/provider.dart'; import 'package:file_picker/file_picker.dart'; @@ -28,6 +29,7 @@ class _ImportExportPageState extends State { Widget build(BuildContext context) { SourceProvider sourceProvider = SourceProvider(); var appsProvider = context.read(); + var settingsProvider = context.read(); var outlineButtonStyle = ButtonStyle( shape: MaterialStateProperty.all( StadiumBorder( @@ -100,6 +102,21 @@ class _ImportExportPageState extends State { appsProvider .importApps(data) .then((value) { + var cats = + settingsProvider.categories; + appsProvider.apps + .forEach((key, value) { + for (var c + in value.app.categories) { + if (!cats.containsKey(c)) { + cats[c] = + generateRandomLightColor() + .value; + } + } + }); + settingsProvider.categories = + cats; showError( tr('importedX', args: [ plural('apps', value)