Files

71 lines
1.7 KiB
C#
Raw Permalink Normal View History

#nullable enable
using System;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Launch;
namespace Wino.Services;
public class ShareActivationService : IShareActivationService
{
private readonly object _syncRoot = new();
private MailShareRequest? _pendingShareRequest;
private PendingComposeMailShareRequest? _pendingComposeShareRequest;
public MailShareRequest? PendingShareRequest
{
get
{
lock (_syncRoot)
{
return _pendingShareRequest;
}
}
set
{
lock (_syncRoot)
{
_pendingShareRequest = value;
}
}
}
public MailShareRequest? ConsumePendingShareRequest()
{
lock (_syncRoot)
{
var pendingRequest = _pendingShareRequest;
_pendingShareRequest = null;
return pendingRequest;
}
}
public void ClearPendingShareRequest()
{
lock (_syncRoot)
{
_pendingShareRequest = null;
}
}
public void StagePendingComposeShareRequest(Guid draftUniqueId, MailShareRequest shareRequest)
{
lock (_syncRoot)
{
_pendingComposeShareRequest = new PendingComposeMailShareRequest(draftUniqueId, shareRequest);
}
}
public MailShareRequest? ConsumePendingComposeShareRequest(Guid draftUniqueId)
{
lock (_syncRoot)
{
if (_pendingComposeShareRequest?.DraftUniqueId != draftUniqueId)
return null;
var pendingRequest = _pendingComposeShareRequest.ShareRequest;
_pendingComposeShareRequest = null;
return pendingRequest;
}
}
}