Update 0.1.6 - Deploy AutoDetect, last debug and optimization
This commit is contained in:
@@ -11,14 +11,17 @@ public sealed class NearbyPendingService : IMediatorSubscriber
|
||||
private readonly ILogger<NearbyPendingService> _logger;
|
||||
private readonly MareMediator _mediator;
|
||||
private readonly ApiController _api;
|
||||
private readonly AutoDetectRequestService _requestService;
|
||||
private readonly ConcurrentDictionary<string, string> _pending = new(StringComparer.Ordinal);
|
||||
private static readonly Regex ReqRegex = new(@"^Nearby Request: (.+) \[(?<uid>[A-Z0-9]+)\]$", RegexOptions.Compiled);
|
||||
private static readonly Regex AcceptRegex = new(@"^Nearby Accept: (.+) \[(?<uid>[A-Z0-9]+)\]$", RegexOptions.Compiled);
|
||||
|
||||
public NearbyPendingService(ILogger<NearbyPendingService> logger, MareMediator mediator, ApiController api)
|
||||
public NearbyPendingService(ILogger<NearbyPendingService> logger, MareMediator mediator, ApiController api, AutoDetectRequestService requestService)
|
||||
{
|
||||
_logger = logger;
|
||||
_mediator = mediator;
|
||||
_api = api;
|
||||
_requestService = requestService;
|
||||
_mediator.Subscribe<NotificationMessage>(this, OnNotification);
|
||||
}
|
||||
|
||||
@@ -30,6 +33,19 @@ public sealed class NearbyPendingService : IMediatorSubscriber
|
||||
{
|
||||
// Watch info messages for Nearby request pattern
|
||||
if (msg.Type != MareSynchronos.MareConfiguration.Models.NotificationType.Info) return;
|
||||
var ma = AcceptRegex.Match(msg.Message);
|
||||
if (ma.Success)
|
||||
{
|
||||
var uidA = ma.Groups["uid"].Value;
|
||||
if (!string.IsNullOrEmpty(uidA))
|
||||
{
|
||||
_ = _api.UserAddPair(new MareSynchronos.API.Dto.User.UserDto(new MareSynchronos.API.Data.UserData(uidA)));
|
||||
_pending.TryRemove(uidA, out _);
|
||||
_logger.LogInformation("NearbyPending: auto-accepted pairing with {uid}", uidA);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var m = ReqRegex.Match(msg.Message);
|
||||
if (!m.Success) return;
|
||||
var uid = m.Groups["uid"].Value;
|
||||
@@ -59,6 +75,7 @@ public sealed class NearbyPendingService : IMediatorSubscriber
|
||||
{
|
||||
await _api.UserAddPair(new MareSynchronos.API.Dto.User.UserDto(new MareSynchronos.API.Data.UserData(uid))).ConfigureAwait(false);
|
||||
_pending.TryRemove(uid, out _);
|
||||
_ = _requestService.SendAcceptNotifyAsync(uid);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
Reference in New Issue
Block a user