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

View File

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

View File

@ -81,6 +81,7 @@
if (state.User.IsInRole(AppRole.ADMINISTRATOR_TYPE) || state.User.IsInRole(AppRole.OPERATOR_TYPE)) if (state.User.IsInRole(AppRole.ADMINISTRATOR_TYPE) || state.User.IsInRole(AppRole.OPERATOR_TYPE))
{ {
CampaignManagementState.OnCampaignCreated += OnCampaignCreated; CampaignManagementState.OnCampaignCreated += OnCampaignCreated;
CampaignManagementState.OnCampaignStarted += OnCampaignStarted;
CampaignManagementState.OnCampaignProgressStep += OnCampaignProgressStep; CampaignManagementState.OnCampaignProgressStep += OnCampaignProgressStep;
CampaignManagementState.OnCampaignEnded += OnCampaignEnded; CampaignManagementState.OnCampaignEnded += OnCampaignEnded;
@ -113,6 +114,18 @@
Task.Run(RefreshCampaigns); 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) void OnCampaignProgressStep(Campaign campaign)
{ {
InvokeAsync(() => InvokeAsync(() =>
@ -148,6 +161,7 @@
public void Dispose() public void Dispose()
{ {
CampaignManagementState.OnCampaignCreated -= OnCampaignCreated; CampaignManagementState.OnCampaignCreated -= OnCampaignCreated;
CampaignManagementState.OnCampaignStarted -= OnCampaignStarted;
CampaignManagementState.OnCampaignProgressStep -= OnCampaignProgressStep; CampaignManagementState.OnCampaignProgressStep -= OnCampaignProgressStep;
CampaignManagementState.OnCampaignEnded -= OnCampaignEnded; CampaignManagementState.OnCampaignEnded -= OnCampaignEnded;
} }