diff --git a/web/repertory/lib/widgets/mount_settings.dart b/web/repertory/lib/widgets/mount_settings.dart index 95c6a52d..6d8cbe2a 100644 --- a/web/repertory/lib/widgets/mount_settings.dart +++ b/web/repertory/lib/widgets/mount_settings.dart @@ -364,440 +364,244 @@ class _MountSettingsWidgetState extends State { List siaConfigSettings = []; widget.settings.forEach((key, value) { - if (key == 'ApiAuth') { - _addPasswordSetting( - commonSettings, - widget.settings, - key, - value, - true, - validators: getSettingValidators(key), - ); - } else if (key == 'ApiPort') { - _addIntSetting( - commonSettings, - widget.settings, - key, - value, - true, - validators: getSettingValidators(key), - ); - } else if (key == 'ApiUser') { - _addStringSetting( - commonSettings, - widget.settings, - key, - value, - Icons.person, - true, - validators: getSettingValidators(key), - ); - } else if (key == 'DatabaseType') { - _addListSetting( - commonSettings, - widget.settings, - key, - value, - databaseTypeList, - Icons.dataset, - true, - ); - } else if (key == 'DownloadTimeoutSeconds') { - _addIntSetting( - commonSettings, - widget.settings, - key, - value, - true, - validators: getSettingValidators(key), - ); - } else if (key == 'EnableDownloadTimeout') { - _addBooleanSetting(commonSettings, widget.settings, key, value, true); - } else if (key == 'EnableDriveEvents') { - _addBooleanSetting(commonSettings, widget.settings, key, value, true); - } else if (key == 'EventLevel') { - _addListSetting( - commonSettings, - widget.settings, - key, - value, - eventLevelList, - Icons.event, - false, - ); - } else if (key == 'EvictionDelayMinutes') { - _addIntSetting( - commonSettings, - widget.settings, - key, - value, - true, - validators: getSettingValidators(key), - ); - } else if (key == 'EvictionUseAccessedTime') { - _addBooleanSetting(commonSettings, widget.settings, key, value, true); - } else if (key == 'MaxCacheSizeBytes') { - _addIntSetting( - commonSettings, - widget.settings, - key, - value, - false, - validators: getSettingValidators(key), - ); - } else if (key == 'MaxUploadCount') { - _addIntSetting( - commonSettings, - widget.settings, - key, - value, - true, - validators: getSettingValidators(key), - ); - } else if (key == 'OnlineCheckRetrySeconds') { - _addIntSetting( - commonSettings, - widget.settings, - key, - value, - true, - validators: getSettingValidators(key), - ); - } else if (key == 'PreferredDownloadType') { - _addListSetting( - commonSettings, - widget.settings, - key, - value, - downloadTypeList, - Icons.download, - false, - ); - } else if (key == 'RetryReadCount') { - _addIntSetting( - commonSettings, - widget.settings, - key, - value, - true, - validators: getSettingValidators(key), - ); - } else if (key == 'RingBufferFileSize') { - _addIntListSetting( - commonSettings, - widget.settings, - key, - value, - ringBufferSizeList, - 512, - Icons.animation, - false, - ); - } else if (key == 'EncryptConfig') { - value.forEach((subKey, subValue) { - if (subKey == 'EncryptionToken') { + switch (key) { + case 'ApiAuth': + { _addPasswordSetting( - encryptConfigSettings, - widget.settings[key], - subKey, - subValue, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'Path') { - _addStringSetting( - encryptConfigSettings, - widget.settings[key], - subKey, - subValue, - Icons.folder, - false, - validators: getSettingValidators('$key.$subKey'), + commonSettings, + widget.settings, + key, + value, + true, + validators: getSettingValidators(key), ); } - }); - } else if (key == 'HostConfig') { - value.forEach((subKey, subValue) { - if (subKey == 'AgentString') { - _addStringSetting( - hostConfigSettings, - widget.settings[key], - subKey, - subValue, - Icons.support_agent, - true, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'ApiPassword') { - _addPasswordSetting( - hostConfigSettings, - widget.settings[key], - subKey, - subValue, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'ApiPort') { + break; + case 'ApiPort': + { _addIntSetting( - hostConfigSettings, - widget.settings[key], - subKey, - subValue, - false, - validators: getSettingValidators('$key.$subKey'), + commonSettings, + widget.settings, + key, + value, + true, + validators: getSettingValidators(key), ); - } else if (subKey == 'ApiUser') { + } + break; + case 'ApiUser': + { _addStringSetting( - hostConfigSettings, - widget.settings[key], - subKey, - subValue, + commonSettings, + widget.settings, + key, + value, Icons.person, true, - validators: getSettingValidators('$key.$subKey'), + validators: getSettingValidators(key), ); - } else if (subKey == 'HostNameOrIp') { - _addStringSetting( - hostConfigSettings, - widget.settings[key], - subKey, - subValue, - Icons.computer, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'Path') { - _addStringSetting( - hostConfigSettings, - widget.settings[key], - subKey, - subValue, - Icons.route, - true, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'Protocol') { + } + break; + case 'DatabaseType': + { _addListSetting( - hostConfigSettings, - widget.settings[key], - subKey, - subValue, - protocolTypeList, - Icons.http, + commonSettings, + widget.settings, + key, + value, + databaseTypeList, + Icons.dataset, true, ); - } else if (subKey == 'TimeoutMs') { - _addIntSetting( - hostConfigSettings, - widget.settings[key], - subKey, - subValue, - true, - validators: getSettingValidators('$key.$subKey'), - ); } - }); - } else if (key == 'RemoteConfig') { - value.forEach((subKey, subValue) { - if (subKey == 'ApiPort') { + break; + case 'DownloadTimeoutSeconds': + { _addIntSetting( - remoteConfigSettings, - widget.settings[key], - subKey, - subValue, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'EncryptionToken') { - _addPasswordSetting( - remoteConfigSettings, - widget.settings[key], - subKey, - subValue, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'HostNameOrIp') { - _addStringSetting( - remoteConfigSettings, - widget.settings[key], - subKey, - subValue, - Icons.computer, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'MaxConnections') { - _addIntSetting( - remoteConfigSettings, - widget.settings[key], - subKey, - subValue, + commonSettings, + widget.settings, + key, + value, true, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'ReceiveTimeoutMs') { - _addIntSetting( - remoteConfigSettings, - widget.settings[key], - subKey, - subValue, - true, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'SendTimeoutMs') { - _addIntSetting( - remoteConfigSettings, - widget.settings[key], - subKey, - subValue, - true, - validators: getSettingValidators('$key.$subKey'), + validators: getSettingValidators(key), ); } - }); - } else if (key == 'RemoteMount') { - value.forEach((subKey, subValue) { - if (subKey == 'Enable') { - List tempSettings = []; + break; + case 'EnableDownloadTimeout': + { _addBooleanSetting( - tempSettings, - widget.settings[key], - subKey, - subValue, - false, - ); - remoteMountSettings.insertAll(0, tempSettings); - } else if (subKey == 'ApiPort') { - _addIntSetting( - remoteMountSettings, - widget.settings[key], - subKey, - subValue, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'ClientPoolSize') { - _addIntSetting( - remoteMountSettings, - widget.settings[key], - subKey, - subValue, + commonSettings, + widget.settings, + key, + value, true, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'EncryptionToken') { - _addPasswordSetting( - remoteMountSettings, - widget.settings[key], - subKey, - subValue, - false, - validators: getSettingValidators('$key.$subKey'), ); } - }); - } else if (key == 'S3Config') { - value.forEach((subKey, subValue) { - if (subKey == 'AccessKey') { - _addStringSetting( - s3ConfigSettings, - widget.settings[key], - subKey, - subValue, - Icons.key, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'Bucket') { - _addStringSetting( - s3ConfigSettings, - widget.settings[key], - subKey, - subValue, - Icons.folder, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'EncryptionToken') { - _addPasswordSetting( - s3ConfigSettings, - widget.settings[key], - subKey, - subValue, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'Region') { - _addStringSetting( - s3ConfigSettings, - widget.settings[key], - subKey, - subValue, - Icons.map, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'SecretKey') { - _addPasswordSetting( - s3ConfigSettings, - widget.settings[key], - subKey, - subValue, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'TimeoutMs') { - _addIntSetting( - s3ConfigSettings, - widget.settings[key], - subKey, - subValue, + break; + case 'EnableDriveEvents': + { + _addBooleanSetting( + commonSettings, + widget.settings, + key, + value, true, - validators: getSettingValidators('$key.$subKey'), ); - } else if (subKey == 'URL') { - _addStringSetting( - s3ConfigSettings, - widget.settings[key], - subKey, - subValue, - Icons.http, - false, - validators: getSettingValidators('$key.$subKey'), - ); - } else if (subKey == 'UsePathStyle') { - _addBooleanSetting( - s3ConfigSettings, - widget.settings[key], - subKey, - subValue, - false, - ); - } else if (subKey == 'UseRegionInURL') { - _addBooleanSetting( - s3ConfigSettings, - widget.settings[key], - subKey, - subValue, + } + break; + case 'EventLevel': + { + _addListSetting( + commonSettings, + widget.settings, + key, + value, + eventLevelList, + Icons.event, false, ); } - }); - } else if (key == 'SiaConfig') { - value.forEach((subKey, subValue) { - if (subKey == 'Bucket') { - _addStringSetting( - siaConfigSettings, - widget.settings[key], - subKey, - subValue, - Icons.folder, - false, - validators: getSettingValidators('$key.$subKey'), + break; + case 'EvictionDelayMinutes': + { + _addIntSetting( + commonSettings, + widget.settings, + key, + value, + true, + validators: getSettingValidators(key), ); } - }); + break; + case 'EvictionUseAccessedTime': + { + _addBooleanSetting( + commonSettings, + widget.settings, + key, + value, + true, + ); + } + break; + case 'MaxCacheSizeBytes': + { + _addIntSetting( + commonSettings, + widget.settings, + key, + value, + false, + validators: getSettingValidators(key), + ); + } + break; + case 'MaxUploadCount': + { + _addIntSetting( + commonSettings, + widget.settings, + key, + value, + true, + validators: getSettingValidators(key), + ); + } + break; + case 'OnlineCheckRetrySeconds': + { + _addIntSetting( + commonSettings, + widget.settings, + key, + value, + true, + validators: getSettingValidators(key), + ); + } + break; + case 'PreferredDownloadType': + { + _addListSetting( + commonSettings, + widget.settings, + key, + value, + downloadTypeList, + Icons.download, + false, + ); + } + break; + case 'RetryReadCount': + { + _addIntSetting( + commonSettings, + widget.settings, + key, + value, + true, + validators: getSettingValidators(key), + ); + } + break; + case 'RingBufferFileSize': + { + _addIntListSetting( + commonSettings, + widget.settings, + key, + value, + ringBufferSizeList, + 512, + Icons.animation, + false, + ); + } + break; + case 'EncryptConfig': + { + _parseEncryptConfig(encryptConfigSettings, key, value); + } + break; + case 'HostConfig': + { + _parseHostConfig(hostConfigSettings, key, value); + } + break; + case 'RemoteConfig': + { + _parseRemoteConfig(remoteConfigSettings, key, value); + } + break; + case 'RemoteMount': + { + _parseRemoteMount(remoteMountSettings, key, value); + } + break; + case 'S3Config': + { + _parseS3Config(s3ConfigSettings, key, value); + } + break; + case 'SiaConfig': + { + value.forEach((subKey, subValue) { + if (subKey == 'Bucket') { + _addStringSetting( + siaConfigSettings, + widget.settings[key], + subKey, + subValue, + Icons.folder, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + }); + } + break; } }); @@ -843,6 +647,150 @@ class _MountSettingsWidgetState extends State { ); } + void _parseHostConfig(List hostConfigSettings, key, value) { + value.forEach((subKey, subValue) { + switch (subKey) { + case 'AgentString': + { + _addStringSetting( + hostConfigSettings, + widget.settings[key], + subKey, + subValue, + Icons.support_agent, + true, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'ApiPassword': + { + _addPasswordSetting( + hostConfigSettings, + widget.settings[key], + subKey, + subValue, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'ApiPort': + { + _addIntSetting( + hostConfigSettings, + widget.settings[key], + subKey, + subValue, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'ApiUser': + { + _addStringSetting( + hostConfigSettings, + widget.settings[key], + subKey, + subValue, + Icons.person, + true, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'HostNameOrIp': + { + _addStringSetting( + hostConfigSettings, + widget.settings[key], + subKey, + subValue, + Icons.computer, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'Path': + { + _addStringSetting( + hostConfigSettings, + widget.settings[key], + subKey, + subValue, + Icons.route, + true, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'Protocol': + { + _addListSetting( + hostConfigSettings, + widget.settings[key], + subKey, + subValue, + protocolTypeList, + Icons.http, + true, + ); + } + break; + case 'TimeoutMs': + { + _addIntSetting( + hostConfigSettings, + widget.settings[key], + subKey, + subValue, + true, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + } + }); + } + + void _parseEncryptConfig( + List encryptConfigSettings, + key, + value, + ) { + value.forEach((subKey, subValue) { + switch (subKey) { + case 'EncryptionToken': + { + _addPasswordSetting( + encryptConfigSettings, + widget.settings[key], + subKey, + subValue, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'Path': + { + _addStringSetting( + encryptConfigSettings, + widget.settings[key], + subKey, + subValue, + Icons.folder, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + } + }); + } + @override void dispose() { if (!widget.isAdd) { @@ -869,4 +817,265 @@ class _MountSettingsWidgetState extends State { super.dispose(); } + + void _parseS3Config(List s3ConfigSettings, String key, value) { + value.forEach((subKey, subValue) { + switch (subKey) { + case 'AccessKey': + { + _addStringSetting( + s3ConfigSettings, + widget.settings[key], + subKey, + subValue, + Icons.key, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'Bucket': + { + _addStringSetting( + s3ConfigSettings, + widget.settings[key], + subKey, + subValue, + Icons.folder, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'EncryptionToken': + { + _addPasswordSetting( + s3ConfigSettings, + widget.settings[key], + subKey, + subValue, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'Region': + { + _addStringSetting( + s3ConfigSettings, + widget.settings[key], + subKey, + subValue, + Icons.map, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'SecretKey': + { + _addPasswordSetting( + s3ConfigSettings, + widget.settings[key], + subKey, + subValue, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'TimeoutMs': + { + _addIntSetting( + s3ConfigSettings, + widget.settings[key], + subKey, + subValue, + true, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'URL': + { + _addStringSetting( + s3ConfigSettings, + widget.settings[key], + subKey, + subValue, + Icons.http, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'UsePathStyle': + { + _addBooleanSetting( + s3ConfigSettings, + widget.settings[key], + subKey, + subValue, + false, + ); + } + break; + case 'UseRegionInURL': + { + _addBooleanSetting( + s3ConfigSettings, + widget.settings[key], + subKey, + subValue, + false, + ); + } + break; + } + }); + } + + void _parseRemoteMount( + List remoteMountSettings, + String key, + value, + ) { + value.forEach((subKey, subValue) { + switch (subKey) { + case 'Enable': + { + List tempSettings = []; + _addBooleanSetting( + tempSettings, + widget.settings[key], + subKey, + subValue, + false, + ); + remoteMountSettings.insertAll(1, tempSettings); + } + break; + case 'ApiPort': + { + _addIntSetting( + remoteMountSettings, + widget.settings[key], + subKey, + subValue, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'ClientPoolSize': + { + _addIntSetting( + remoteMountSettings, + widget.settings[key], + subKey, + subValue, + true, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'EncryptionToken': + { + _addPasswordSetting( + remoteMountSettings, + widget.settings[key], + subKey, + subValue, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + } + }); + } + + void _parseRemoteConfig( + List remoteConfigSettings, + String key, + value, + ) { + value.forEach((subKey, subValue) { + switch (subKey) { + case 'ApiPort': + { + _addIntSetting( + remoteConfigSettings, + widget.settings[key], + subKey, + subValue, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'EncryptionToken': + { + _addPasswordSetting( + remoteConfigSettings, + widget.settings[key], + subKey, + subValue, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'HostNameOrIp': + { + _addStringSetting( + remoteConfigSettings, + widget.settings[key], + subKey, + subValue, + Icons.computer, + false, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'MaxConnections': + { + _addIntSetting( + remoteConfigSettings, + widget.settings[key], + subKey, + subValue, + true, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'ReceiveTimeoutMs': + { + _addIntSetting( + remoteConfigSettings, + widget.settings[key], + subKey, + subValue, + true, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + case 'SendTimeoutMs': + { + _addIntSetting( + remoteConfigSettings, + widget.settings[key], + subKey, + subValue, + true, + validators: getSettingValidators('$key.$subKey'), + ); + } + break; + } + }); + } }