diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index bed2026..10c6ff4 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -3,7 +3,7 @@ - 0.7.37 + 0.7.38 https://github.com/Penumbra-Sync/client diff --git a/MareSynchronos/WebAPI/ApiController.Functions.Callbacks.cs b/MareSynchronos/WebAPI/ApiController.Functions.Callbacks.cs index 5ea9ec0..fc6abcb 100644 --- a/MareSynchronos/WebAPI/ApiController.Functions.Callbacks.cs +++ b/MareSynchronos/WebAPI/ApiController.Functions.Callbacks.cs @@ -261,9 +261,9 @@ public partial class ApiController Mediator.Publish(new NotificationMessage("Warning from " + _serverManager.CurrentServer!.ServerName, message, NotificationType.Warning, 7500)); break; case MessageSeverity.Information: - if (_doNotNotifiyOnNextInfo) + if (_doNotNotifyOnNextInfo) { - _doNotNotifiyOnNextInfo = false; + _doNotNotifyOnNextInfo = false; break; } Mediator.Publish(new NotificationMessage("Info from " + _serverManager.CurrentServer!.ServerName, message, NotificationType.Info, 5000)); diff --git a/MareSynchronos/WebAPI/ApiController.cs b/MareSynchronos/WebAPI/ApiController.cs index 910adf2..5f97fc6 100644 --- a/MareSynchronos/WebAPI/ApiController.cs +++ b/MareSynchronos/WebAPI/ApiController.cs @@ -20,7 +20,6 @@ public partial class ApiController : MediatorSubscriberBase, IDisposable, IMareH public const string MainServer = "Lunae Crescere Incipientis (Central Server EU)"; public const string MainServiceUri = "wss://maresynchronos.com"; - public readonly int[] SupportedServerVersions = { IMareHub.ApiVersion }; private readonly HubFactory _hubFactory; private readonly MareConfigService _configService; private readonly DalamudUtil _dalamudUtil; @@ -32,16 +31,13 @@ public partial class ApiController : MediatorSubscriberBase, IDisposable, IMareH private CancellationTokenSource? _uploadCancellationTokenSource = new(); private CancellationTokenSource? _healthCheckTokenSource = new(); - private bool _doNotNotifiyOnNextInfo = false; + private bool _doNotNotifyOnNextInfo = false; private ConnectionDto? _connectionDto; public ServerInfo ServerInfo => _connectionDto?.ServerInfo ?? new ServerInfo(); public string AuthFailureMessage { get; private set; } = string.Empty; public SystemInfoDto SystemInfoDto { get; private set; } = new(); - public bool IsModerator => (_connectionDto?.IsAdmin ?? false) || (_connectionDto?.IsModerator ?? false); - - public bool IsAdmin => _connectionDto?.IsAdmin ?? false; private HttpClient _httpClient; @@ -326,7 +322,7 @@ public partial class ApiController : MediatorSubscriberBase, IDisposable, IMareH private void MareHubOnReconnecting(Exception? arg) { - _doNotNotifiyOnNextInfo = true; + _doNotNotifyOnNextInfo = true; _healthCheckTokenSource?.Cancel(); ServerState = ServerState.Reconnecting; Mediator.Publish(new NotificationMessage("Connection lost", "Connection lost to " + _serverManager.CurrentServer!.ServerName, NotificationType.Warning, 5000)); @@ -336,14 +332,23 @@ public partial class ApiController : MediatorSubscriberBase, IDisposable, IMareH private async void MareHubOnReconnected(string? arg) { ServerState = ServerState.Connecting; - await InitializeData().ConfigureAwait(false); - _connectionDto = await GetConnectionDto().ConfigureAwait(false); - if (_connectionDto.ServerVersion != IMareHub.ApiVersion) + try { - await StopConnection(ServerState.VersionMisMatch).ConfigureAwait(false); - return; + await InitializeData().ConfigureAwait(false); + _connectionDto = await GetConnectionDto().ConfigureAwait(false); + if (_connectionDto.ServerVersion != IMareHub.ApiVersion) + { + await StopConnection(ServerState.VersionMisMatch).ConfigureAwait(false); + return; + } + ServerState = ServerState.Connected; } - ServerState = ServerState.Connected; + catch (Exception ex) + { + _logger.LogCritical(ex, "Failure to obtain data after reconnection"); + await StopConnection(ServerState.Disconnected).ConfigureAwait(false); + } + } private async Task StopConnection(ServerState state) @@ -361,6 +366,7 @@ public partial class ApiController : MediatorSubscriberBase, IDisposable, IMareH CurrentDownloads.Clear(); Mediator.Publish(new DisconnectedMessage()); _mareHub = null; + _connectionDto = null; } }