diff --git a/web/repertory/lib/helpers.dart b/web/repertory/lib/helpers.dart index 100edc39..94f03118 100644 --- a/web/repertory/lib/helpers.dart +++ b/web/repertory/lib/helpers.dart @@ -26,4 +26,36 @@ String initialCaps(String txt) { return txt[0].toUpperCase() + txt.substring(1).toLowerCase(); } -Map createDefaultSettings() => {'EventLevel': 'info'}; +Map createDefaultSettings(String mountType) { + switch (mountType) { + case 'Encrypt': + return { + 'EncryptConfig': {'EncryptionToken': '', 'Path': ''}, + }; + case 'Remote': + return {'EventLevel': 'info'}; + case 'S3': + return { + 'S3Config': { + 'AccessKey': '', + 'Bucket': '', + 'Region': 'any', + 'SecretKey': '', + 'URL': '', + 'UsePathStyle': false, + 'UseRegionInURL': false, + }, + }; + case 'Sia': + return { + 'HostConfig': { + 'ApiPassword': '', + 'ApiPort': '9980', + 'HostNameOrIp': 'localhost', + }, + 'SiaConfig': {'Bucket': 'default'}, + }; + } + + return {}; +} diff --git a/web/repertory/lib/screens/add_mount_screen.dart b/web/repertory/lib/screens/add_mount_screen.dart index bf17d9d5..62b40234 100644 --- a/web/repertory/lib/screens/add_mount_screen.dart +++ b/web/repertory/lib/screens/add_mount_screen.dart @@ -19,7 +19,13 @@ class _AddMountScreenState extends State { Mount? _mount; final _mountNameController = TextEditingController(); String _mountType = ""; - var _settings = createDefaultSettings(); + final Map> _settings = { + "": {}, + "Encrypt": createDefaultSettings("Encrypt"), + "Remote": createDefaultSettings("Remote"), + "S3": createDefaultSettings("S3"), + "Sia": createDefaultSettings("Sia"), + }; bool _showAdvanced = false; @override @@ -45,77 +51,87 @@ class _AddMountScreenState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.min, + mainAxisSize: MainAxisSize.max, children: [ Card( - margin: EdgeInsets.all(_padding), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - const Text('Provider Type'), - const SizedBox(width: _padding), - DropdownButton( - value: _mountType, - onChanged: (newValue) { - setState(() { - _mountType = newValue ?? ""; - }); - }, - items: - providerTypeList.map>((item) { - return DropdownMenuItem( - value: item, - child: Text(item), - ); - }).toList(), - ), - ], + child: Padding( + padding: const EdgeInsets.all(_padding), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + const Text('Provider Type'), + const SizedBox(width: _padding), + DropdownButton( + value: _mountType, + onChanged: (newValue) { + setState(() { + _mountType = newValue ?? ""; + }); + }, + items: + providerTypeList.map>(( + item, + ) { + return DropdownMenuItem( + value: item, + child: Text(item), + ); + }).toList(), + ), + ], + ), ), ), if (_mountType.isNotEmpty) const SizedBox(height: _padding), if (_mountType.isNotEmpty) Card( - margin: EdgeInsets.all(_padding), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - const Text('Configuration Name'), - const SizedBox(width: _padding), - TextField( - autofocus: true, - controller: _mountNameController, - keyboardType: TextInputType.text, - onChanged: (_) { - setState(() { - _mount = - (_mountNameController.text.isEmpty) - ? null - : Mount( - MountConfig( - name: _mountNameController.text, - settings: _settings, - type: _mountType, - ), - isAdd: true, - ); - }); - }, - ), - ], + child: Padding( + padding: const EdgeInsets.all(_padding), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + const Text('Configuration Name'), + const SizedBox(width: _padding), + TextField( + autofocus: true, + controller: _mountNameController, + keyboardType: TextInputType.text, + onChanged: (_) { + setState(() { + _mount = + (_mountNameController.text.isEmpty) + ? null + : Mount( + MountConfig( + name: _mountNameController.text, + settings: _settings[_mountType], + type: _mountType, + ), + isAdd: true, + ); + }); + }, + ), + ], + ), ), ), if (_mount != null) - Card( - margin: EdgeInsets.all(_padding), - child: MountSettingsWidget( - isAdd: true, - mount: _mount!, - onChanged: (settings) => _settings = settings, - showAdvanced: _showAdvanced, + Expanded( + child: Card( + child: Padding( + padding: const EdgeInsets.all(_padding), + child: MountSettingsWidget( + isAdd: true, + mount: _mount!, + onChanged: (settings) => _settings[_mountType] = settings, + showAdvanced: _showAdvanced, + ), + ), ), ), ],