merged individual LoadServerFiles into one method to fetch steam users only once.

This commit is contained in:
Brett Hewitson 2021-12-15 18:25:35 +10:00
parent 89a03123bb
commit f73b8c530d
4 changed files with 131 additions and 127 deletions

View file

@ -3473,9 +3473,7 @@ namespace ServerManagerTool.Lib
{
InstallDirectory = folder;
LoadServerFileAdministrators();
LoadServerFileExclusive();
LoadServerFileWhitelisted();
LoadServerFiles(true, true, true);
SetupServerFilesWatcher();
}
@ -3561,9 +3559,7 @@ namespace ServerManagerTool.Lib
settings.MutagenLevelBoostBred.Reset();
settings.PerLevelStatsMultiplier_Player.Reset();
settings.PlayerBaseStatMultipliers.Reset();
settings.LoadServerFileAdministrators();
settings.LoadServerFileExclusive();
settings.LoadServerFileWhitelisted();
settings.LoadServerFiles(true, true, true);
settings.SetupServerFilesWatcher();
return settings;
}
@ -4140,9 +4136,7 @@ namespace ServerManagerTool.Lib
if (Config.Default.SectionPreventTransferOverridesEnabled)
profile.PreventTransferForClassNames.RenderToView();
profile.LoadServerFileAdministrators();
profile.LoadServerFileExclusive();
profile.LoadServerFileWhitelisted();
profile.LoadServerFiles(true, true, true);
profile.SetupServerFilesWatcher();
profile._lastSaveLocation = file;
@ -6364,18 +6358,24 @@ namespace ServerManagerTool.Lib
#region Server Files
private void ServerFilesWatcher_Changed(object sender, FileSystemEventArgs e)
{
var adminFile = false;
var exclusiveFile = false;
var whitelistFile = false;
if (e.Name.Equals(Config.Default.ArkAdminFile, StringComparison.OrdinalIgnoreCase))
{
TaskUtils.RunOnUIThreadAsync(() => LoadServerFileAdministrators()).DoNotWait();
adminFile = true;
}
else if (e.Name.Equals(Config.Default.ArkExclusiveFile, StringComparison.OrdinalIgnoreCase))
if (e.Name.Equals(Config.Default.ArkExclusiveFile, StringComparison.OrdinalIgnoreCase))
{
TaskUtils.RunOnUIThreadAsync(() => LoadServerFileExclusive()).DoNotWait();
exclusiveFile = true;
}
else if (e.Name.Equals(Config.Default.ArkWhitelistFile, StringComparison.OrdinalIgnoreCase))
if (e.Name.Equals(Config.Default.ArkWhitelistFile, StringComparison.OrdinalIgnoreCase))
{
TaskUtils.RunOnUIThreadAsync(() => LoadServerFileWhitelisted()).DoNotWait();
whitelistFile = true;
}
TaskUtils.RunOnUIThreadAsync(() => LoadServerFiles(adminFile, exclusiveFile, whitelistFile)).DoNotWait();
}
private void ServerFilesWatcher_Error(object sender, ErrorEventArgs e)
@ -6447,74 +6447,76 @@ namespace ServerManagerTool.Lib
_serverFilesWatcherSaved.EnableRaisingEvents = true;
}
public void LoadServerFileAdministrators()
public void LoadServerFiles(bool adminFile, bool exclusiveFile, bool whitelistFile)
{
try
{
var list = this.ServerFilesAdmins ?? new PlayerUserList();
var list1 = this.ServerFilesAdmins ?? new PlayerUserList();
var list2 = this.ServerFilesExclusive ?? new PlayerUserList();
var list3 = this.ServerFilesWhitelisted ?? new PlayerUserList();
var file = Path.Combine(InstallDirectory, Config.Default.SavedRelativePath, Config.Default.ArkAdminFile);
if (File.Exists(file))
var allSteamIds = new List<string>();
string[] adminSteamIds = null;
string[] exclusiveSteamIds = null;
string[] whitelistSteamIds = null;
if (adminFile)
{
var steamIds = File.ReadAllLines(file);
var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList());
list = PlayerUserList.GetList(steamUsers, steamIds);
var file = Path.Combine(InstallDirectory, Config.Default.SavedRelativePath, Config.Default.ArkAdminFile);
if (File.Exists(file))
{
adminSteamIds = File.ReadAllLines(file);
allSteamIds.AddRange(adminSteamIds);
}
}
this.ServerFilesAdmins = list;
if (exclusiveFile)
{
var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ArkExclusiveFile);
if (File.Exists(file))
{
exclusiveSteamIds = File.ReadAllLines(file);
allSteamIds.AddRange(exclusiveSteamIds);
}
}
if (whitelistFile)
{
var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ArkWhitelistFile);
if (File.Exists(file))
{
whitelistSteamIds = File.ReadAllLines(file);
allSteamIds.AddRange(whitelistSteamIds);
}
}
// remove all duplicates
allSteamIds = allSteamIds.Distinct().ToList();
// fetch the details of all steam users in the list
var steamUsers = SteamUtils.GetSteamUserDetails(allSteamIds);
if (adminFile && adminSteamIds != null)
{
list1 = PlayerUserList.GetList(steamUsers, adminSteamIds);
}
if (exclusiveFile && exclusiveSteamIds != null)
{
list2 = PlayerUserList.GetList(steamUsers, exclusiveSteamIds);
}
if (whitelistFile && whitelistSteamIds != null)
{
list3 = PlayerUserList.GetList(steamUsers, whitelistSteamIds);
}
this.ServerFilesAdmins = list1;
this.ServerFilesExclusive = list2;
this.ServerFilesWhitelisted = list3;
}
catch (Exception ex)
{
this.ServerFilesAdmins = new PlayerUserList();
MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ServerFilesLoadErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error);
}
}
public void LoadServerFileExclusive()
{
try
{
var list = this.ServerFilesExclusive ?? new PlayerUserList();
var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ArkExclusiveFile);
if (File.Exists(file))
{
var steamIds = File.ReadAllLines(file);
var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList());
list = PlayerUserList.GetList(steamUsers, steamIds);
}
this.ServerFilesExclusive = list;
}
catch (Exception ex)
{
this.ServerFilesExclusive = new PlayerUserList();
MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ServerFilesLoadErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error);
}
}
public void LoadServerFileWhitelisted()
{
try
{
var list = this.ServerFilesWhitelisted ?? new PlayerUserList();
var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ArkWhitelistFile);
if (File.Exists(file))
{
var steamIds = File.ReadAllLines(file);
var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList());
list = PlayerUserList.GetList(steamUsers, steamIds);
}
this.ServerFilesWhitelisted = list;
}
catch (Exception ex)
{
this.ServerFilesWhitelisted = new PlayerUserList();
MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ServerFilesLoadErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error);
}
}

View file

@ -2693,7 +2693,7 @@ namespace ServerManagerTool
Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait);
await Task.Delay(500);
Settings.LoadServerFileAdministrators();
Settings.LoadServerFiles(true, false, false);
}
catch (Exception ex)
{
@ -2714,7 +2714,7 @@ namespace ServerManagerTool
Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait);
await Task.Delay(500);
Settings.LoadServerFileExclusive();
Settings.LoadServerFiles(false, true, false);
}
catch (Exception ex)
{
@ -2735,7 +2735,7 @@ namespace ServerManagerTool
Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait);
await Task.Delay(500);
Settings.LoadServerFileWhitelisted();
Settings.LoadServerFiles(false, false, true);
}
catch (Exception ex)
{

View file

@ -688,8 +688,7 @@ namespace ServerManagerTool.Lib
{
InstallDirectory = folder;
LoadServerFileBlacklisted();
LoadServerFileWhitelisted();
LoadServerFiles(true, true);
SetupServerFilesWatcher();
}
@ -759,8 +758,7 @@ namespace ServerManagerTool.Lib
internal static ServerProfile FromDefaults()
{
var settings = new ServerProfile();
settings.LoadServerFileBlacklisted();
settings.LoadServerFileWhitelisted();
settings.LoadServerFiles(true, true);
settings.SetupServerFilesWatcher();
return settings;
}
@ -949,8 +947,7 @@ namespace ServerManagerTool.Lib
profile = LoadFromConfigFiles(serverConfigFile, profile);
}
profile.LoadServerFileBlacklisted();
profile.LoadServerFileWhitelisted();
profile.LoadServerFiles(true, true);
profile.SetupServerFilesWatcher();
profile._lastSaveLocation = file;
@ -1536,14 +1533,19 @@ namespace ServerManagerTool.Lib
#region Server Files
private void ServerFilesWatcher_Changed(object sender, FileSystemEventArgs e)
{
var blacklistFile = false;
var whitelistFile = false;
if (e.Name.Equals(Config.Default.ServerBlacklistFile, StringComparison.OrdinalIgnoreCase))
{
TaskUtils.RunOnUIThreadAsync(() => LoadServerFileBlacklisted()).DoNotWait();
blacklistFile = true;
}
if (e.Name.Equals(Config.Default.ServerWhitelistFile, StringComparison.OrdinalIgnoreCase))
{
TaskUtils.RunOnUIThreadAsync(() => LoadServerFileWhitelisted()).DoNotWait();
whitelistFile = true;
}
TaskUtils.RunOnUIThreadAsync(() => LoadServerFiles(blacklistFile, whitelistFile)).DoNotWait();
}
private void ServerFilesWatcher_Error(object sender, ErrorEventArgs e)
@ -1589,58 +1591,58 @@ namespace ServerManagerTool.Lib
_serverFilesWatcher.EnableRaisingEvents = true;
}
public void LoadServerFileBlacklisted()
public void LoadServerFiles(bool blacklistFile, bool whitelistFile)
{
try
{
var list = this.ServerFilesBlacklisted ?? new PlayerUserList();
var list1 = this.ServerFilesBlacklisted ?? new PlayerUserList();
var list2 = this.ServerFilesWhitelisted ?? new PlayerUserList();
var file = Path.Combine(InstallDirectory, Config.Default.SavedFilesRelativePath, Config.Default.ServerBlacklistFile);
if (File.Exists(file))
var allSteamIds = new List<string>();
string[] blacklistSteamIds = null;
string[] whitelistSteamIds = null;
if (blacklistFile)
{
var steamIds = File.ReadAllLines(file);
var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList());
list = PlayerUserList.GetList(steamUsers, steamIds);
var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ServerBlacklistFile);
if (File.Exists(file))
{
blacklistSteamIds = File.ReadAllLines(file);
allSteamIds.AddRange(blacklistSteamIds);
}
}
this.ServerFilesBlacklisted = list;
}
catch (IOException)
{
// do nothing
if (whitelistFile)
{
var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ServerWhitelistFile);
if (File.Exists(file))
{
whitelistSteamIds = File.ReadAllLines(file);
allSteamIds.AddRange(whitelistSteamIds);
}
}
// remove all duplicates
allSteamIds = allSteamIds.Distinct().ToList();
// fetch the details of all steam users in the list
var steamUsers = SteamUtils.GetSteamUserDetails(allSteamIds);
if (blacklistFile && blacklistSteamIds != null)
{
list1 = PlayerUserList.GetList(steamUsers, blacklistSteamIds);
}
if (whitelistFile && whitelistSteamIds != null)
{
list2 = PlayerUserList.GetList(steamUsers, whitelistSteamIds);
}
this.ServerFilesBlacklisted = list1;
this.ServerFilesWhitelisted = list2;
}
catch (Exception ex)
{
this.ServerFilesBlacklisted = new PlayerUserList();
MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ServerFilesLoadErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error);
}
}
public void LoadServerFileWhitelisted()
{
try
{
var list = this.ServerFilesWhitelisted ?? new PlayerUserList();
var file = Path.Combine(InstallDirectory, Config.Default.SavedFilesRelativePath, Config.Default.ServerWhitelistFile);
if (File.Exists(file))
{
var steamIds = File.ReadAllLines(file);
var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList());
list = PlayerUserList.GetList(steamUsers, steamIds);
}
this.ServerFilesWhitelisted = list;
}
catch (IOException)
{
// do nothing
}
catch (Exception ex)
{
this.ServerFilesWhitelisted = new PlayerUserList();
MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ServerFilesLoadErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error);
}
}

View file

@ -1130,7 +1130,7 @@ namespace ServerManagerTool
Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait);
await Task.Delay(500);
Settings.LoadServerFileBlacklisted();
Settings.LoadServerFiles(true, false);
}
catch (Exception ex)
{
@ -1151,7 +1151,7 @@ namespace ServerManagerTool
Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait);
await Task.Delay(500);
Settings.LoadServerFileWhitelisted();
Settings.LoadServerFiles(false, true);
}
catch (Exception ex)
{