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; InstallDirectory = folder;
LoadServerFileAdministrators(); LoadServerFiles(true, true, true);
LoadServerFileExclusive();
LoadServerFileWhitelisted();
SetupServerFilesWatcher(); SetupServerFilesWatcher();
} }
@ -3561,9 +3559,7 @@ namespace ServerManagerTool.Lib
settings.MutagenLevelBoostBred.Reset(); settings.MutagenLevelBoostBred.Reset();
settings.PerLevelStatsMultiplier_Player.Reset(); settings.PerLevelStatsMultiplier_Player.Reset();
settings.PlayerBaseStatMultipliers.Reset(); settings.PlayerBaseStatMultipliers.Reset();
settings.LoadServerFileAdministrators(); settings.LoadServerFiles(true, true, true);
settings.LoadServerFileExclusive();
settings.LoadServerFileWhitelisted();
settings.SetupServerFilesWatcher(); settings.SetupServerFilesWatcher();
return settings; return settings;
} }
@ -4140,9 +4136,7 @@ namespace ServerManagerTool.Lib
if (Config.Default.SectionPreventTransferOverridesEnabled) if (Config.Default.SectionPreventTransferOverridesEnabled)
profile.PreventTransferForClassNames.RenderToView(); profile.PreventTransferForClassNames.RenderToView();
profile.LoadServerFileAdministrators(); profile.LoadServerFiles(true, true, true);
profile.LoadServerFileExclusive();
profile.LoadServerFileWhitelisted();
profile.SetupServerFilesWatcher(); profile.SetupServerFilesWatcher();
profile._lastSaveLocation = file; profile._lastSaveLocation = file;
@ -6364,18 +6358,24 @@ namespace ServerManagerTool.Lib
#region Server Files #region Server Files
private void ServerFilesWatcher_Changed(object sender, FileSystemEventArgs e) 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)) 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) private void ServerFilesWatcher_Error(object sender, ErrorEventArgs e)
@ -6447,74 +6447,76 @@ namespace ServerManagerTool.Lib
_serverFilesWatcherSaved.EnableRaisingEvents = true; _serverFilesWatcherSaved.EnableRaisingEvents = true;
} }
public void LoadServerFileAdministrators() public void LoadServerFiles(bool adminFile, bool exclusiveFile, bool whitelistFile)
{ {
try 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 allSteamIds = new List<string>();
string[] adminSteamIds = null;
string[] exclusiveSteamIds = null;
string[] whitelistSteamIds = null;
if (adminFile)
{
var file = Path.Combine(InstallDirectory, Config.Default.SavedRelativePath, Config.Default.ArkAdminFile); var file = Path.Combine(InstallDirectory, Config.Default.SavedRelativePath, Config.Default.ArkAdminFile);
if (File.Exists(file)) if (File.Exists(file))
{ {
var steamIds = File.ReadAllLines(file); adminSteamIds = File.ReadAllLines(file);
var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList()); allSteamIds.AddRange(adminSteamIds);
}
list = PlayerUserList.GetList(steamUsers, steamIds);
} }
this.ServerFilesAdmins = list; if (exclusiveFile)
}
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); var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ArkExclusiveFile);
if (File.Exists(file)) if (File.Exists(file))
{ {
var steamIds = File.ReadAllLines(file); exclusiveSteamIds = File.ReadAllLines(file);
var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList()); allSteamIds.AddRange(exclusiveSteamIds);
}
list = PlayerUserList.GetList(steamUsers, steamIds);
} }
this.ServerFilesExclusive = list; if (whitelistFile)
}
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); var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ArkWhitelistFile);
if (File.Exists(file)) if (File.Exists(file))
{ {
var steamIds = File.ReadAllLines(file); whitelistSteamIds = File.ReadAllLines(file);
var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList()); allSteamIds.AddRange(whitelistSteamIds);
}
list = PlayerUserList.GetList(steamUsers, steamIds);
} }
this.ServerFilesWhitelisted = list; // 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) catch (Exception ex)
{ {
this.ServerFilesWhitelisted = new PlayerUserList();
MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ServerFilesLoadErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); 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); Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait);
await Task.Delay(500); await Task.Delay(500);
Settings.LoadServerFileAdministrators(); Settings.LoadServerFiles(true, false, false);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -2714,7 +2714,7 @@ namespace ServerManagerTool
Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait); Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait);
await Task.Delay(500); await Task.Delay(500);
Settings.LoadServerFileExclusive(); Settings.LoadServerFiles(false, true, false);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -2735,7 +2735,7 @@ namespace ServerManagerTool
Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait); Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait);
await Task.Delay(500); await Task.Delay(500);
Settings.LoadServerFileWhitelisted(); Settings.LoadServerFiles(false, false, true);
} }
catch (Exception ex) catch (Exception ex)
{ {

View file

@ -688,8 +688,7 @@ namespace ServerManagerTool.Lib
{ {
InstallDirectory = folder; InstallDirectory = folder;
LoadServerFileBlacklisted(); LoadServerFiles(true, true);
LoadServerFileWhitelisted();
SetupServerFilesWatcher(); SetupServerFilesWatcher();
} }
@ -759,8 +758,7 @@ namespace ServerManagerTool.Lib
internal static ServerProfile FromDefaults() internal static ServerProfile FromDefaults()
{ {
var settings = new ServerProfile(); var settings = new ServerProfile();
settings.LoadServerFileBlacklisted(); settings.LoadServerFiles(true, true);
settings.LoadServerFileWhitelisted();
settings.SetupServerFilesWatcher(); settings.SetupServerFilesWatcher();
return settings; return settings;
} }
@ -949,8 +947,7 @@ namespace ServerManagerTool.Lib
profile = LoadFromConfigFiles(serverConfigFile, profile); profile = LoadFromConfigFiles(serverConfigFile, profile);
} }
profile.LoadServerFileBlacklisted(); profile.LoadServerFiles(true, true);
profile.LoadServerFileWhitelisted();
profile.SetupServerFilesWatcher(); profile.SetupServerFilesWatcher();
profile._lastSaveLocation = file; profile._lastSaveLocation = file;
@ -1536,14 +1533,19 @@ namespace ServerManagerTool.Lib
#region Server Files #region Server Files
private void ServerFilesWatcher_Changed(object sender, FileSystemEventArgs e) private void ServerFilesWatcher_Changed(object sender, FileSystemEventArgs e)
{ {
var blacklistFile = false;
var whitelistFile = false;
if (e.Name.Equals(Config.Default.ServerBlacklistFile, StringComparison.OrdinalIgnoreCase)) if (e.Name.Equals(Config.Default.ServerBlacklistFile, StringComparison.OrdinalIgnoreCase))
{ {
TaskUtils.RunOnUIThreadAsync(() => LoadServerFileBlacklisted()).DoNotWait(); blacklistFile = true;
} }
if (e.Name.Equals(Config.Default.ServerWhitelistFile, StringComparison.OrdinalIgnoreCase)) 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) private void ServerFilesWatcher_Error(object sender, ErrorEventArgs e)
@ -1589,58 +1591,58 @@ namespace ServerManagerTool.Lib
_serverFilesWatcher.EnableRaisingEvents = true; _serverFilesWatcher.EnableRaisingEvents = true;
} }
public void LoadServerFileBlacklisted() public void LoadServerFiles(bool blacklistFile, bool whitelistFile)
{ {
try 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); var allSteamIds = new List<string>();
string[] blacklistSteamIds = null;
string[] whitelistSteamIds = null;
if (blacklistFile)
{
var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ServerBlacklistFile);
if (File.Exists(file)) if (File.Exists(file))
{ {
var steamIds = File.ReadAllLines(file); blacklistSteamIds = File.ReadAllLines(file);
var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList()); allSteamIds.AddRange(blacklistSteamIds);
}
list = PlayerUserList.GetList(steamUsers, steamIds);
} }
this.ServerFilesBlacklisted = list; if (whitelistFile)
}
catch (IOException)
{ {
// do nothing 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) 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); 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); Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait);
await Task.Delay(500); await Task.Delay(500);
Settings.LoadServerFileBlacklisted(); Settings.LoadServerFiles(true, false);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -1151,7 +1151,7 @@ namespace ServerManagerTool
Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait); Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait);
await Task.Delay(500); await Task.Delay(500);
Settings.LoadServerFileWhitelisted(); Settings.LoadServerFiles(false, true);
} }
catch (Exception ex) catch (Exception ex)
{ {