From a57e249ab36d3ec819758fb36e2be44188887777 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 10 Mar 2026 20:47:52 +0800 Subject: [PATCH] fix: guard against null provider key and stale search results in ResourcePermissionManagementModal --- ...ResourcePermissionManagementModal.razor.cs | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/ResourcePermissionManagementModal.razor.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/ResourcePermissionManagementModal.razor.cs index a69eacea3c..964fc6ed63 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/ResourcePermissionManagementModal.razor.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/ResourcePermissionManagementModal.razor.cs @@ -129,6 +129,12 @@ public partial class ResourcePermissionManagementModal ProviderKey = value; ProviderDisplayName = ProviderKeys.FirstOrDefault(p => p.ProviderKey == value)?.ProviderDisplayName; + if (value.IsNullOrWhiteSpace()) + { + await InvokeAsync(StateHasChanged); + return; + } + var permissionGrants = await PermissionAppService.GetResourceByProviderAsync(ResourceName, ResourceKey, CurrentLookupService, ProviderKey); foreach (var permission in CreateEntity.Permissions) { @@ -140,16 +146,23 @@ public partial class ResourcePermissionManagementModal private async Task SearchProviderKeyAsync(AutocompleteReadDataEventArgs autocompleteReadDataEventArgs) { - if ( !autocompleteReadDataEventArgs.CancellationToken.IsCancellationRequested ) + if (autocompleteReadDataEventArgs.CancellationToken.IsCancellationRequested) { - if (autocompleteReadDataEventArgs.SearchValue.IsNullOrWhiteSpace()) - { - ProviderKeys = new List(); - return; - } + return; + } - ProviderKeys = (await PermissionAppService.SearchResourceProviderKeyAsync(ResourceName, CurrentLookupService, autocompleteReadDataEventArgs.SearchValue, 1)).Keys; + if (autocompleteReadDataEventArgs.SearchValue.IsNullOrWhiteSpace()) + { + ProviderKeys = new List(); + return; + } + var lookupService = CurrentLookupService; + var results = (await PermissionAppService.SearchResourceProviderKeyAsync(ResourceName, lookupService, autocompleteReadDataEventArgs.SearchValue, 1)).Keys; + + if (!autocompleteReadDataEventArgs.CancellationToken.IsCancellationRequested) + { + ProviderKeys = results; await InvokeAsync(StateHasChanged); } }