PWA Fundvelo der Caritas.
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

PageHistoryManager.cs 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Microsoft.AspNetCore.Components;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. namespace cwebplusApp.Shared.Services {
  6. public class PageHistoryManager {
  7. public EventCallback OnBeforeNavigateBack;
  8. private readonly List<string> previousPages;
  9. private readonly NavigationManager navigationManager;
  10. public PageHistoryManager(NavigationManager _navigationManager) {
  11. previousPages = new List<string>();
  12. this.navigationManager = _navigationManager;
  13. }
  14. public void Reset() {
  15. previousPages.Clear();
  16. }
  17. public void AddPageToHistory(string pageName) {
  18. previousPages.Add(pageName);
  19. }
  20. public string GetPreviousPage() {
  21. if (CanGoBack()) {
  22. // You add a page on initialization, so you need to return the 2nd from the last
  23. string previousPage = previousPages.ElementAt(previousPages.Count - 1);
  24. previousPages.RemoveAt(previousPages.Count - 1);
  25. return previousPage;
  26. }
  27. // Can't go back because you didn't navigate enough
  28. return previousPages.FirstOrDefault();
  29. }
  30. public bool CanGoBack() {
  31. return previousPages.Count >= 1;
  32. }
  33. public async void NavigateBack() {
  34. await FireOnBeforeNavigateBackEvent();
  35. navigationManager.NavigateTo(GetPreviousPage());
  36. }
  37. protected async Task FireOnBeforeNavigateBackEvent() {
  38. await OnBeforeNavigateBack.InvokeAsync();
  39. }
  40. }
  41. }