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