Skip to content

Commit 7e09f13

Browse files
committed
fix: Ports not refreshed when links are added in OnInitializedAsync
1 parent 7eb65eb commit 7e09f13

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

src/Blazor.Diagrams/Components/Renderers/PortRenderer.cs

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public class PortRenderer : ComponentBase, IDisposable
1616
{
1717
private bool _shouldRender = true;
1818
private ElementReference _element;
19+
private bool _updatingDimensions;
20+
private bool _shouldRefreshPort;
1921

2022
[CascadingParameter]
2123
public Diagram Diagram { get; set; }
@@ -105,6 +107,7 @@ private PortModel FindPortOn(double clientX, double clientY)
105107

106108
private async Task UpdateDimensions()
107109
{
110+
_updatingDimensions = true;
108111
var zoom = Diagram.Zoom;
109112
var pan = Diagram.Pan;
110113
var rect = await JSRuntime.GetBoundingClientRect(_element);
@@ -114,14 +117,28 @@ private async Task UpdateDimensions()
114117
(rect.Top - Diagram.Container.Top - pan.Y) / zoom);
115118

116119
Port.Initialized = true;
120+
_updatingDimensions = false;
117121

118-
// We don't really need to refresh the port again,
119-
// let's just refresh the links so that they use the new port's position
120-
Port.RefreshLinks();
122+
if (_shouldRefreshPort)
123+
{
124+
_shouldRefreshPort = false;
125+
Port.RefreshAll();
126+
}
127+
else
128+
{
129+
Port.RefreshLinks();
130+
}
121131
}
122132

123133
private async void OnPortChanged()
124134
{
135+
// If an update is ongoing and the port is refreshed again,
136+
// it's highly likely the port needs to be refreshed (e.g. link added)
137+
if (_updatingDimensions)
138+
{
139+
_shouldRefreshPort = true;
140+
}
141+
125142
if (Port.Initialized)
126143
{
127144
_shouldRender = true;

0 commit comments

Comments
 (0)