Skip to content

Commit 7f8a12f

Browse files
committed
Refactor insert RemovePageSegment
1 parent a33db2f commit 7f8a12f

File tree

1 file changed

+9
-20
lines changed

1 file changed

+9
-20
lines changed

src/Maui/Prism.Maui/Navigation/PageNavigationService.cs

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ public virtual async Task<INavigationResult> NavigateFromAsync(string viewName,
355355
var foundPage = navigationPages.FirstOrDefault(page => ViewModelLocator.GetNavigationName(page) == viewName);
356356
if (foundPage is null)
357357
{
358+
// Find a page from parents.
358359
var page = currentPage;
359360
while (page != null)
360361
{
@@ -366,14 +367,19 @@ public virtual async Task<INavigationResult> NavigateFromAsync(string viewName,
366367
}
367368
else
368369
{
370+
// Insert RemovePageSegment.
369371
var removePageCount = navigationPages.IndexOf(foundPage);
370372

371-
// Insert RemovePageSegment.
372-
var routeString = route.ToString();
373+
var tempQueue = new Queue<string>();
373374
for (int i = 0; i < removePageCount; i++)
374375
{
375-
AddToFront(navigationSegments, RemovePageSegment);
376+
tempQueue.Enqueue(RemovePageSegment);
377+
}
378+
while(navigationSegments.Count > 0)
379+
{
380+
tempQueue.Enqueue(navigationSegments.Dequeue());
376381
}
382+
navigationSegments = tempQueue;
377383
}
378384

379385
await ProcessNavigation(currentPage, navigationSegments, parameters, null, null);
@@ -392,23 +398,6 @@ public virtual async Task<INavigationResult> NavigateFromAsync(string viewName,
392398
}
393399
}
394400

395-
private static void AddToFront<T>(Queue<T> queue, T element)
396-
{
397-
var tempQueue = new Queue<T>();
398-
399-
while (queue.Count > 0)
400-
{
401-
tempQueue.Enqueue(queue.Dequeue());
402-
}
403-
404-
queue.Enqueue(element);
405-
406-
while (tempQueue.Count > 0)
407-
{
408-
queue.Enqueue(tempQueue.Dequeue());
409-
}
410-
}
411-
412401
/// <summary>
413402
/// Selects a Tab of the TabbedPage parent.
414403
/// </summary>

0 commit comments

Comments
 (0)