From d920a55fc0ab23bb8c0994b83dc952d7f3d68a4d Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Fri, 14 Mar 2025 14:47:23 -0500 Subject: [PATCH] Create management portal in Flutter #39 --- web/repertory/lib/helpers.dart | 2 + web/repertory/lib/widgets/mount_settings.dart | 55 ++++++++++++------- 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/web/repertory/lib/helpers.dart b/web/repertory/lib/helpers.dart index b72b3aa7..f8b25eb6 100644 --- a/web/repertory/lib/helpers.dart +++ b/web/repertory/lib/helpers.dart @@ -79,6 +79,8 @@ String getBaseUri() { List getSettingValidators(String settingPath) { switch (settingPath) { + case 'ApiAuth': + return [(value) => value.isNotEmpty]; case 'EncryptConfig.EncryptionToken': return [(value) => value.isNotEmpty]; case 'EncryptConfig.Path': diff --git a/web/repertory/lib/widgets/mount_settings.dart b/web/repertory/lib/widgets/mount_settings.dart index 60dba3e8..722e7b8f 100644 --- a/web/repertory/lib/widgets/mount_settings.dart +++ b/web/repertory/lib/widgets/mount_settings.dart @@ -237,24 +237,34 @@ class _MountSettingsWidgetState extends State { }, ), ], - content: Row( - children: [ - TextField( - autofocus: true, - controller: TextEditingController(text: updatedValue1), - obscureText: true, - obscuringCharacter: '*', - onChanged: (value) => updatedValue1 = value, - ), - const SizedBox(height: _padding), - TextField( - autofocus: true, - controller: TextEditingController(text: updatedValue2), - obscureText: true, - obscuringCharacter: '*', - onChanged: (value) => updatedValue2 = value, - ), - ], + content: Container( + constraints: BoxConstraints(maxWidth: 200, maxHeight: 200), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + autofocus: true, + controller: TextEditingController( + text: updatedValue1, + ), + obscureText: true, + obscuringCharacter: '*', + onChanged: (value) => updatedValue1 = value, + ), + const SizedBox(height: _padding, width: _padding), + TextField( + autofocus: false, + controller: TextEditingController( + text: updatedValue2, + ), + obscureText: true, + obscuringCharacter: '*', + onChanged: (value) => updatedValue2 = value, + ), + ], + ), ), title: Text(key), ); @@ -342,7 +352,14 @@ class _MountSettingsWidgetState extends State { widget.settings.forEach((key, value) { if (key == 'ApiAuth') { - _addPasswordSetting(commonSettings, widget.settings, key, value, true); + _addPasswordSetting( + commonSettings, + widget.settings, + key, + value, + true, + validators: getSettingValidators(key), + ); } else if (key == 'ApiPort') { _addIntSetting( commonSettings,