From 6ed4e06eb1c521af74b535b178ab50e204e941ad Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Mon, 23 Oct 2023 19:13:23 +0200 Subject: [PATCH] fix some shit maybe --- MareSynchronos/Services/Mediator/Messages.cs | 6 +++--- MareSynchronos/WebAPI/SignalR/ApiController.cs | 13 ++++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/MareSynchronos/Services/Mediator/Messages.cs b/MareSynchronos/Services/Mediator/Messages.cs index 05d0a4a..4d7b802 100644 --- a/MareSynchronos/Services/Mediator/Messages.cs +++ b/MareSynchronos/Services/Mediator/Messages.cs @@ -54,9 +54,9 @@ public record CharacterDataCreatedMessage(CharacterData CharacterData) : SameThr public record CharacterDataAnalyzedMessage : MessageBase; public record PenumbraStartRedrawMessage(IntPtr Address) : MessageBase; public record PenumbraEndRedrawMessage(IntPtr Address) : MessageBase; -public record HubReconnectingMessage(Exception? Exception) : MessageBase; -public record HubReconnectedMessage(string? Arg) : MessageBase; -public record HubClosedMessage(Exception? Exception) : MessageBase; +public record HubReconnectingMessage(Exception? Exception) : SameThreadMessage; +public record HubReconnectedMessage(string? Arg) : SameThreadMessage; +public record HubClosedMessage(Exception? Exception) : SameThreadMessage; public record DownloadReadyMessage(Guid RequestId) : MessageBase; public record DownloadStartedMessage(GameObjectHandler DownloadId, Dictionary DownloadStatus) : MessageBase; public record DownloadFinishedMessage(GameObjectHandler DownloadId) : MessageBase; diff --git a/MareSynchronos/WebAPI/SignalR/ApiController.cs b/MareSynchronos/WebAPI/SignalR/ApiController.cs index 2e08768..1b8e139 100644 --- a/MareSynchronos/WebAPI/SignalR/ApiController.cs +++ b/MareSynchronos/WebAPI/SignalR/ApiController.cs @@ -49,7 +49,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM Mediator.Subscribe(this, (_) => DalamudUtilOnLogIn()); Mediator.Subscribe(this, (_) => DalamudUtilOnLogOut()); Mediator.Subscribe(this, (msg) => MareHubOnClosed(msg.Exception)); - Mediator.Subscribe(this, (msg) => _ = Task.Run(MareHubOnReconnected)); + Mediator.Subscribe(this, async (msg) => await MareHubOnReconnected().ConfigureAwait(false)); Mediator.Subscribe(this, (msg) => MareHubOnReconnecting(msg.Exception)); Mediator.Subscribe(this, (msg) => _ = CyclePause(msg.UserData)); @@ -187,7 +187,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM $"Your client is outdated ({currentClientVer.Major}.{currentClientVer.Minor}.{currentClientVer.Build}), current is: " + $"{_connectionDto.CurrentClientVersion.Major}.{_connectionDto.CurrentClientVersion.Minor}.{_connectionDto.CurrentClientVersion.Build}. " + $"Please keep your Mare Synchronos client up-to-date.", - Dalamud.Interface.Internal.Notifications.NotificationType.Error)); + Dalamud.Interface.Internal.Notifications.NotificationType.Warning)); } await LoadIninitialPairs().ConfigureAwait(false); @@ -370,13 +370,13 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM try { InitializeApiHooks(); - await LoadIninitialPairs().ConfigureAwait(false); _connectionDto = await GetConnectionDto().ConfigureAwait(false); if (_connectionDto.ServerVersion != IMareHub.ApiVersion) { await StopConnection(ServerState.VersionMisMatch).ConfigureAwait(false); return; } + await LoadIninitialPairs().ConfigureAwait(false); await LoadOnlinePairs().ConfigureAwait(false); ServerState = ServerState.Connected; } @@ -418,6 +418,13 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM await StopConnection(ServerState.Unauthorized).ConfigureAwait(false); requireReconnect = true; } + catch (Exception ex) + { + Logger.LogWarning(ex, "Could not refresh token, forcing reconnect"); + _doNotNotifyOnNextInfo = true; + await CreateConnections().ConfigureAwait(false); + requireReconnect = true; + } return requireReconnect; }