fix(centralui): pass siteId+connectionName into ShowAsync explicitly
Razor parameter binding propagates on the next render, so reading SiteId inside LoadRootAsync raced against the parent's "set field, then call ShowAsync()" pattern — central received an empty siteId and rejected with "No ClusterClient for site ,". Take the values as args instead.
This commit is contained in:
@@ -96,11 +96,18 @@
|
||||
public bool Truncated { get; set; }
|
||||
}
|
||||
|
||||
public async Task ShowAsync()
|
||||
private string _runtimeSiteId = "";
|
||||
private string _runtimeConnectionName = "";
|
||||
|
||||
public async Task ShowAsync(string siteId, string connectionName, string? initialNodeId)
|
||||
{
|
||||
// Snapshot at click time. Razor parameter binding propagates on the next
|
||||
// render, which would race the immediate LoadRootAsync below.
|
||||
_runtimeSiteId = siteId;
|
||||
_runtimeConnectionName = connectionName;
|
||||
_isVisible = true;
|
||||
_manualNodeId = InitialNodeId ?? "";
|
||||
_selectedNodeId = InitialNodeId;
|
||||
_manualNodeId = initialNodeId ?? "";
|
||||
_selectedNodeId = initialNodeId;
|
||||
await LoadRootAsync();
|
||||
}
|
||||
|
||||
@@ -110,7 +117,7 @@
|
||||
_rootNodes = new();
|
||||
StateHasChanged();
|
||||
|
||||
var result = await BrowseService.BrowseChildrenAsync(SiteId, ConnectionName, parentNodeId: null);
|
||||
var result = await BrowseService.BrowseChildrenAsync(_runtimeSiteId, _runtimeConnectionName, parentNodeId: null);
|
||||
if (result.Failure is not null)
|
||||
{
|
||||
SetFailure(result.Failure);
|
||||
@@ -135,7 +142,7 @@
|
||||
{
|
||||
node.Loading = true;
|
||||
StateHasChanged();
|
||||
var result = await BrowseService.BrowseChildrenAsync(SiteId, ConnectionName, node.NodeId);
|
||||
var result = await BrowseService.BrowseChildrenAsync(_runtimeSiteId, _runtimeConnectionName, node.NodeId);
|
||||
node.Loading = false;
|
||||
|
||||
if (result.Failure is not null)
|
||||
|
||||
+1
-1
@@ -573,7 +573,7 @@
|
||||
?? GetTemplateDefault(attrName);
|
||||
|
||||
if (_browserRef is not null)
|
||||
await _browserRef.ShowAsync();
|
||||
await _browserRef.ShowAsync(_siteIdentifier, conn.Name, _browserInitial);
|
||||
}
|
||||
|
||||
private void OnBrowserSelected(string nodeId)
|
||||
|
||||
Reference in New Issue
Block a user