mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2026-01-01 14:10:53 +00:00
Use events for handling Save()
This commit is contained in:
@@ -57,7 +57,7 @@ namespace ArchiSteamFarm {
|
||||
|
||||
[JsonProperty(Required = Required.DisallowNull)]
|
||||
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")]
|
||||
internal JsonStorageServerListProvider ServerListProvider { get; private set; }
|
||||
internal JsonStorageServerListProvider ServerListProvider { get; private set; } = new JsonStorageServerListProvider();
|
||||
|
||||
private readonly object FileLock = new object();
|
||||
|
||||
@@ -88,11 +88,20 @@ namespace ArchiSteamFarm {
|
||||
}
|
||||
|
||||
globalDatabase.FilePath = filePath;
|
||||
globalDatabase.ServerListProvider.GlobalDatabase = globalDatabase;
|
||||
globalDatabase.ServerListProvider.ServerListUpdated += globalDatabase.OnServerListUpdated;
|
||||
|
||||
return globalDatabase;
|
||||
}
|
||||
|
||||
private void OnServerListUpdated(object sender, EventArgs e) {
|
||||
if ((sender == null) || (e == null)) {
|
||||
Logging.LogNullError(nameof(sender) + " || " + nameof(e));
|
||||
return;
|
||||
}
|
||||
|
||||
Save();
|
||||
}
|
||||
|
||||
// This constructor is used when creating new database
|
||||
private GlobalDatabase(string filePath) : this() {
|
||||
if (string.IsNullOrEmpty(filePath)) {
|
||||
@@ -106,10 +115,10 @@ namespace ArchiSteamFarm {
|
||||
// This constructor is used only by deserializer
|
||||
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
||||
private GlobalDatabase() {
|
||||
ServerListProvider = new JsonStorageServerListProvider(this);
|
||||
ServerListProvider.ServerListUpdated += OnServerListUpdated;
|
||||
}
|
||||
|
||||
internal void Save() {
|
||||
private void Save() {
|
||||
string json = JsonConvert.SerializeObject(this, CustomSerializerSettings);
|
||||
if (string.IsNullOrEmpty(json)) {
|
||||
Logging.LogNullError(nameof(json));
|
||||
|
||||
@@ -37,19 +37,7 @@ namespace ArchiSteamFarm {
|
||||
[SuppressMessage("ReSharper", "FieldCanBeMadeReadOnly.Local")]
|
||||
private HashSet<IPEndPoint> Servers = new HashSet<IPEndPoint>();
|
||||
|
||||
internal GlobalDatabase GlobalDatabase { private get; set; }
|
||||
|
||||
internal JsonStorageServerListProvider(GlobalDatabase globalDatabase) {
|
||||
if (globalDatabase == null) {
|
||||
throw new ArgumentNullException(nameof(globalDatabase));
|
||||
}
|
||||
|
||||
GlobalDatabase = globalDatabase;
|
||||
}
|
||||
|
||||
// This constructor is used only by deserializer
|
||||
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
||||
private JsonStorageServerListProvider() { }
|
||||
internal event EventHandler ServerListUpdated = delegate { };
|
||||
|
||||
public Task<IEnumerable<IPEndPoint>> FetchServerListAsync() => Task.FromResult(Servers.Select(endpoint => endpoint));
|
||||
|
||||
@@ -64,7 +52,7 @@ namespace ArchiSteamFarm {
|
||||
Servers.Add(endpoint);
|
||||
}
|
||||
|
||||
GlobalDatabase.Save();
|
||||
ServerListUpdated(this, EventArgs.Empty);
|
||||
|
||||
return Task.Delay(0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user