From 0d27beb2a623b561536173cee1f2f4481b2e86cd Mon Sep 17 00:00:00 2001 From: "HOME-LAPTOP\\kshkulev" Date: Wed, 5 Nov 2025 18:51:42 +0900 Subject: [PATCH] Do not reload data when campaign ends UI --- Hcs.WebApp/Components/Pages/Campaigns.razor | 47 ++++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/Hcs.WebApp/Components/Pages/Campaigns.razor b/Hcs.WebApp/Components/Pages/Campaigns.razor index 89d25c9..ecc35ad 100644 --- a/Hcs.WebApp/Components/Pages/Campaigns.razor +++ b/Hcs.WebApp/Components/Pages/Campaigns.razor @@ -137,6 +137,21 @@ Task.Run(RefreshCampaigns); } + async Task RefreshCampaigns() + { + await InvokeAsync(() => ChangeState(CampaignsPageState.Loading)); + + var refreshedCampaigns = await HeadquartersService.GetCampaignsAsync(); + + await InvokeAsync(() => + { + campaigns = refreshedCampaigns; + expandedCampaign = null; + + ChangeState(CampaignsPageState.Idle); + }); + } + void OnCampaignStarted(int campaignId, DateTime startedAt) { InvokeAsync(() => @@ -178,7 +193,22 @@ void OnCampaignEnded(int campaignId, Campaign.CampaignType type, DateTime endedAt, string failureReason) { - Task.Run(RefreshCampaigns); + InvokeAsync(() => + { + var targetCampaign = campaigns?.FirstOrDefault(x => x.Id == campaignId); + if (targetCampaign != null) + { + targetCampaign.EndedAt = endedAt; + targetCampaign.FailureReason = failureReason; + + campaignsDataGrid.Reload(); + } + + if (expandedCampaign != null && expandedCampaign.Id == campaignId) + { + campaignsDataGrid.CollapseAll(); + } + }); } void OnOperationStarted(int operationId, int campaignId, DateTime startedAt) @@ -233,21 +263,6 @@ }); } - async Task RefreshCampaigns() - { - await InvokeAsync(() => ChangeState(CampaignsPageState.Loading)); - - var refreshedCampaigns = await HeadquartersService.GetCampaignsAsync(); - - await InvokeAsync(() => - { - campaigns = refreshedCampaigns; - expandedCampaign = null; - - ChangeState(CampaignsPageState.Idle); - }); - } - public void Dispose() { CampaignManagementState.OnCampaignCreated -= OnCampaignCreated;