@using cwebplusApp.Shared.Services; @inject AppState AppState; @inject NavigationManager NavigationManager; @inject IStringLocalizer i18n @inject IJSRuntime jsRuntime; @inject PageHistoryManager PageHistoryManager; @implements IDisposable; @if (HandleAppBarContainer()) { } @code { private bool Opened = false; private static int Index = 1; private string locUrl; private string LocationUrl { get => locUrl; set { locUrl = value; StateHasChanged(); } } public void Dispose() { AppState.OnChange -= StateHasChanged; NavigationManager.LocationChanged -= LocationChanged; } protected override void OnInitialized() { AppState.OnChange += StateHasChanged; NavigationManager.LocationChanged += LocationChanged; PageHistoryManager.AddPageToHistory(NavigationManager.Uri); base.OnInitialized(); } private void ButtonClicked() { Opened = !Opened; } private void ButtonClicked(int _Index) { Index = _Index; ButtonClicked(); if (_Index == 4) { AppState.LoggedIn = false; } } private void ButtonBackClicked() { NavigationManager.NavigateTo(PageHistoryManager.GetPreviousPage()); } private void LocationChanged(object sender, LocationChangedEventArgs e) { locUrl = i18n.GetString(e.Location.Replace(NavigationManager.BaseUri, "")); if (IsInServicesUrl(e)) { Index = 1; } else if (e.Location.Contains("account")) { Index = 2; } else if (e.Location.Contains("info")) { Index = 3; } else { Index = 4; } StateHasChanged(); } private bool IsInServicesUrl(LocationChangedEventArgs e) { return (e.Location.Contains("caritas_services") || e.Location.Contains("lost_found") || e.Location.Contains("keydata") || e.Location.Contains("account/") || e.Location.Contains("conclusion_")); } private bool HandleAppBarContainer() { string uri = NavigationManager.Uri; string baseUri = NavigationManager.BaseUri; string delta = uri.Replace(baseUri, ""); if (delta == null || delta.Equals("")) { Index = 4; return false; } else { if (delta.Equals("caritas_services")) { Index = 1; } else if (delta.Equals("account")) { Index = 2; } else if (delta.Equals("info")) { Index = 3; } return true; } } private bool BackButtonDisabled() { return !PageHistoryManager.CanGoBack(); } }