Skip to content

Commit b36db8b

Browse files
committed
Fix exception - driven navigation.
1 parent dc45f3e commit b36db8b

File tree

1 file changed

+27
-26
lines changed

1 file changed

+27
-26
lines changed

src/Components/Server/src/Circuits/RemoteNavigationManager.cs

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -101,18 +101,28 @@ public async ValueTask<bool> HandleLocationChangingAsync(string uri, string? sta
101101
protected override void NavigateToCore(string uri, NavigationOptions options)
102102
{
103103
Log.RequestingNavigation(_logger, uri, options);
104+
105+
if (_jsRuntime == null)
106+
{
107+
var absoluteUriString = ToAbsoluteUri(uri).AbsoluteUri;
108+
if (_throwNavigationException)
109+
{
110+
throw new NavigationException(absoluteUriString);
111+
}
112+
if (_onNavigateTo == null)
113+
{
114+
throw new InvalidOperationException($"'{GetType().Name}' method for endpoint-based navigation has not been initialized.");
115+
}
116+
_ = _onNavigateTo(absoluteUriString);
117+
return;
118+
}
119+
104120
_ = PerformNavigationAsync();
105121

106122
async Task PerformNavigationAsync()
107123
{
108124
try
109125
{
110-
if (_jsRuntime == null)
111-
{
112-
await NavigateWithEndpoint(uri);
113-
return;
114-
}
115-
116126
var shouldContinueNavigation = await NotifyLocationChangingAsync(uri, options.HistoryEntryState, false);
117127

118128
if (!shouldContinueNavigation)
@@ -139,40 +149,31 @@ async Task PerformNavigationAsync()
139149
}
140150
}
141151

142-
private async Task NavigateWithEndpoint(string uri)
152+
/// <inheritdoc />
153+
public override void Refresh(bool forceReload = false)
143154
{
144-
var absoluteUriString = ToAbsoluteUri(uri).AbsoluteUri;
145-
if (_throwNavigationException)
146-
{
147-
throw new NavigationException(absoluteUriString);
148-
}
149-
else
155+
if (_jsRuntime == null)
150156
{
157+
var absoluteUriString = ToAbsoluteUri(Uri).AbsoluteUri;
158+
if (_throwNavigationException)
159+
{
160+
throw new NavigationException(absoluteUriString);
161+
}
151162
if (_onNavigateTo == null)
152163
{
153164
throw new InvalidOperationException($"'{GetType().Name}' method for endpoint-based navigation has not been initialized.");
154165
}
155-
await _onNavigateTo(absoluteUriString);
166+
_ = _onNavigateTo(absoluteUriString);
167+
return;
156168
}
157-
}
158169

159-
/// <inheritdoc />
160-
public override void Refresh(bool forceReload = false)
161-
{
162170
_ = RefreshAsync();
163171

164172
async Task RefreshAsync()
165173
{
166174
try
167175
{
168-
if (_jsRuntime == null)
169-
{
170-
await NavigateWithEndpoint(Uri);
171-
}
172-
else
173-
{
174-
await _jsRuntime.InvokeVoidAsync(Interop.Refresh, forceReload);
175-
}
176+
await _jsRuntime.InvokeVoidAsync(Interop.Refresh, forceReload);
176177
}
177178
catch (Exception ex)
178179
{

0 commit comments

Comments
 (0)