This commit is contained in:
Scott E. Graves 2025-03-14 16:17:25 -05:00
parent 3eb4ad85d3
commit 85beb3dfea

View File

@ -364,7 +364,9 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
List<SettingsTile> siaConfigSettings = []; List<SettingsTile> siaConfigSettings = [];
widget.settings.forEach((key, value) { widget.settings.forEach((key, value) {
if (key == 'ApiAuth') { switch (key) {
case 'ApiAuth':
{
_addPasswordSetting( _addPasswordSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -373,7 +375,10 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
true, true,
validators: getSettingValidators(key), validators: getSettingValidators(key),
); );
} else if (key == 'ApiPort') { }
break;
case 'ApiPort':
{
_addIntSetting( _addIntSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -382,7 +387,10 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
true, true,
validators: getSettingValidators(key), validators: getSettingValidators(key),
); );
} else if (key == 'ApiUser') { }
break;
case 'ApiUser':
{
_addStringSetting( _addStringSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -392,7 +400,10 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
true, true,
validators: getSettingValidators(key), validators: getSettingValidators(key),
); );
} else if (key == 'DatabaseType') { }
break;
case 'DatabaseType':
{
_addListSetting( _addListSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -402,7 +413,10 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
Icons.dataset, Icons.dataset,
true, true,
); );
} else if (key == 'DownloadTimeoutSeconds') { }
break;
case 'DownloadTimeoutSeconds':
{
_addIntSetting( _addIntSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -411,11 +425,32 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
true, true,
validators: getSettingValidators(key), validators: getSettingValidators(key),
); );
} else if (key == 'EnableDownloadTimeout') { }
_addBooleanSetting(commonSettings, widget.settings, key, value, true); break;
} else if (key == 'EnableDriveEvents') { case 'EnableDownloadTimeout':
_addBooleanSetting(commonSettings, widget.settings, key, value, true); {
} else if (key == 'EventLevel') { _addBooleanSetting(
commonSettings,
widget.settings,
key,
value,
true,
);
}
break;
case 'EnableDriveEvents':
{
_addBooleanSetting(
commonSettings,
widget.settings,
key,
value,
true,
);
}
break;
case 'EventLevel':
{
_addListSetting( _addListSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -425,7 +460,10 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
Icons.event, Icons.event,
false, false,
); );
} else if (key == 'EvictionDelayMinutes') { }
break;
case 'EvictionDelayMinutes':
{
_addIntSetting( _addIntSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -434,9 +472,21 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
true, true,
validators: getSettingValidators(key), validators: getSettingValidators(key),
); );
} else if (key == 'EvictionUseAccessedTime') { }
_addBooleanSetting(commonSettings, widget.settings, key, value, true); break;
} else if (key == 'MaxCacheSizeBytes') { case 'EvictionUseAccessedTime':
{
_addBooleanSetting(
commonSettings,
widget.settings,
key,
value,
true,
);
}
break;
case 'MaxCacheSizeBytes':
{
_addIntSetting( _addIntSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -445,7 +495,10 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
false, false,
validators: getSettingValidators(key), validators: getSettingValidators(key),
); );
} else if (key == 'MaxUploadCount') { }
break;
case 'MaxUploadCount':
{
_addIntSetting( _addIntSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -454,7 +507,10 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
true, true,
validators: getSettingValidators(key), validators: getSettingValidators(key),
); );
} else if (key == 'OnlineCheckRetrySeconds') { }
break;
case 'OnlineCheckRetrySeconds':
{
_addIntSetting( _addIntSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -463,7 +519,10 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
true, true,
validators: getSettingValidators(key), validators: getSettingValidators(key),
); );
} else if (key == 'PreferredDownloadType') { }
break;
case 'PreferredDownloadType':
{
_addListSetting( _addListSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -473,7 +532,10 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
Icons.download, Icons.download,
false, false,
); );
} else if (key == 'RetryReadCount') { }
break;
case 'RetryReadCount':
{
_addIntSetting( _addIntSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -482,7 +544,10 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
true, true,
validators: getSettingValidators(key), validators: getSettingValidators(key),
); );
} else if (key == 'RingBufferFileSize') { }
break;
case 'RingBufferFileSize':
{
_addIntListSetting( _addIntListSetting(
commonSettings, commonSettings,
widget.settings, widget.settings,
@ -493,298 +558,35 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
Icons.animation, Icons.animation,
false, false,
); );
} else if (key == 'EncryptConfig') {
value.forEach((subKey, subValue) {
if (subKey == 'EncryptionToken') {
_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'),
);
} }
}); break;
} else if (key == 'HostConfig') { case 'EncryptConfig':
value.forEach((subKey, subValue) { {
if (subKey == 'AgentString') { _parseEncryptConfig(encryptConfigSettings, key, value);
_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') {
_addIntSetting(
hostConfigSettings,
widget.settings[key],
subKey,
subValue,
false,
validators: getSettingValidators('$key.$subKey'),
);
} else if (subKey == 'ApiUser') {
_addStringSetting(
hostConfigSettings,
widget.settings[key],
subKey,
subValue,
Icons.person,
true,
validators: getSettingValidators('$key.$subKey'),
);
} 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') {
_addListSetting(
hostConfigSettings,
widget.settings[key],
subKey,
subValue,
protocolTypeList,
Icons.http,
true,
);
} else if (subKey == 'TimeoutMs') {
_addIntSetting(
hostConfigSettings,
widget.settings[key],
subKey,
subValue,
true,
validators: getSettingValidators('$key.$subKey'),
);
} }
}); break;
} else if (key == 'RemoteConfig') { case 'HostConfig':
value.forEach((subKey, subValue) { {
if (subKey == 'ApiPort') { _parseHostConfig(hostConfigSettings, key, value);
_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,
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'),
);
} }
}); break;
} else if (key == 'RemoteMount') { case 'RemoteConfig':
value.forEach((subKey, subValue) { {
if (subKey == 'Enable') { _parseRemoteConfig(remoteConfigSettings, key, value);
List<SettingsTile> tempSettings = [];
_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,
true,
validators: getSettingValidators('$key.$subKey'),
);
} else if (subKey == 'EncryptionToken') {
_addPasswordSetting(
remoteMountSettings,
widget.settings[key],
subKey,
subValue,
false,
validators: getSettingValidators('$key.$subKey'),
);
} }
}); break;
} else if (key == 'S3Config') { case 'RemoteMount':
value.forEach((subKey, subValue) { {
if (subKey == 'AccessKey') { _parseRemoteMount(remoteMountSettings, key, value);
_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,
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,
false,
);
} }
}); break;
} else if (key == 'SiaConfig') { case 'S3Config':
{
_parseS3Config(s3ConfigSettings, key, value);
}
break;
case 'SiaConfig':
{
value.forEach((subKey, subValue) { value.forEach((subKey, subValue) {
if (subKey == 'Bucket') { if (subKey == 'Bucket') {
_addStringSetting( _addStringSetting(
@ -799,6 +601,8 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
} }
}); });
} }
break;
}
}); });
return SettingsList( return SettingsList(
@ -843,6 +647,150 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
); );
} }
void _parseHostConfig(List<SettingsTile> 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<SettingsTile> 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 @override
void dispose() { void dispose() {
if (!widget.isAdd) { if (!widget.isAdd) {
@ -869,4 +817,265 @@ class _MountSettingsWidgetState extends State<MountSettingsWidget> {
super.dispose(); super.dispose();
} }
void _parseS3Config(List<SettingsTile> 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<SettingsTile> remoteMountSettings,
String key,
value,
) {
value.forEach((subKey, subValue) {
switch (subKey) {
case 'Enable':
{
List<SettingsTile> 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<SettingsTile> 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;
}
});
}
} }