Refresh campaign started date UI

This commit is contained in:
2025-11-05 16:31:50 +09:00
parent 4e6157e61e
commit 0e8616fb1e
4 changed files with 34 additions and 2 deletions

View File

@ -38,6 +38,7 @@ namespace Hcs.WebApp.BackgroundServices
{
managers.Add(manager);
manager.OnCampaignStarted += OnCampaignStarted;
manager.OnCampaignProgressStep += OnCampaignProgressStep;
}
else
@ -65,6 +66,7 @@ namespace Hcs.WebApp.BackgroundServices
{
campaignManagementState.InvokeOnCampaignEnded(manager.Campaign);
manager.OnCampaignStarted -= OnCampaignStarted;
manager.OnCampaignProgressStep -= OnCampaignProgressStep;
}
}
@ -102,6 +104,11 @@ namespace Hcs.WebApp.BackgroundServices
}
}
private void OnCampaignStarted(Campaign campaign)
{
campaignManagementState.InvokeOnCampaignStarted(campaign);
}
private void OnCampaignProgressStep(Campaign campaign)
{
campaignManagementState.InvokeOnCampaignProgressStep(campaign);

View File

@ -8,6 +8,7 @@ namespace Hcs.WebApp.BackgroundServices
private readonly ConcurrentQueue<Campaign> campaigns = new();
public event Action<Campaign> OnCampaignCreated;
public event Action<Campaign> OnCampaignStarted;
public event Action<Campaign> OnCampaignProgressStep;
public event Action<Campaign> OnCampaignEnded;
@ -23,11 +24,11 @@ namespace Hcs.WebApp.BackgroundServices
return campaigns.TryDequeue(out campaign);
}
public void InvokeOnCampaignEnded(Campaign campaign)
public void InvokeOnCampaignStarted(Campaign campaign)
{
try
{
OnCampaignEnded?.Invoke(campaign);
OnCampaignStarted?.Invoke(campaign);
}
catch { }
}
@ -40,5 +41,14 @@ namespace Hcs.WebApp.BackgroundServices
}
catch { }
}
public void InvokeOnCampaignEnded(Campaign campaign)
{
try
{
OnCampaignEnded?.Invoke(campaign);
}
catch { }
}
}
}

View File

@ -15,6 +15,7 @@ namespace Hcs.WebApp.BackgroundServices.CampaignManagers
public ManagerState State { get; }
event Action<Campaign> OnCampaignStarted;
event Action<Campaign> OnCampaignProgressStep;
Task ProcessAsync();

View File

@ -81,6 +81,7 @@
if (state.User.IsInRole(AppRole.ADMINISTRATOR_TYPE) || state.User.IsInRole(AppRole.OPERATOR_TYPE))
{
CampaignManagementState.OnCampaignCreated += OnCampaignCreated;
CampaignManagementState.OnCampaignStarted += OnCampaignStarted;
CampaignManagementState.OnCampaignProgressStep += OnCampaignProgressStep;
CampaignManagementState.OnCampaignEnded += OnCampaignEnded;
@ -113,6 +114,18 @@
Task.Run(RefreshCampaigns);
}
void OnCampaignStarted(Campaign campaign)
{
InvokeAsync(() =>
{
var targetCampaign = campaigns.FirstOrDefault(x => x.Id == campaign.Id);
if (targetCampaign != null)
{
targetCampaign.StartedAt = campaign.StartedAt;
}
});
}
void OnCampaignProgressStep(Campaign campaign)
{
InvokeAsync(() =>
@ -148,6 +161,7 @@
public void Dispose()
{
CampaignManagementState.OnCampaignCreated -= OnCampaignCreated;
CampaignManagementState.OnCampaignStarted -= OnCampaignStarted;
CampaignManagementState.OnCampaignProgressStep -= OnCampaignProgressStep;
CampaignManagementState.OnCampaignEnded -= OnCampaignEnded;
}