@using cwebplusApp.Shared.Services; @using cwebplusApp.Components; @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() { base.OnInitialized(); AppState.OnChange += StateHasChanged; NavigationManager.LocationChanged += LocationChanged; PageHistoryManager.AddPageToHistory(NavigationManager.Uri); locUrl = i18n.GetString(NavigationManager.Uri.Replace(NavigationManager.BaseUri, "")); StateHasChanged(); } private void ButtonClicked() { Opened = !Opened; } private void ButtonClicked(int _Index) { Index = _Index; ButtonClicked(); } private void ButtonBackClicked() { PageHistoryManager.NavigateBack(); } 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 = 4; } else { Index = 3; } 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.Equals("caritas_services")) { Index = 1; } else if (delta.Equals("account")) { Index = 2; } else if (delta.Equals("info")) { Index = 4; } else { Index = 3; } return true; } private bool BackButtonDisabled() { return !PageHistoryManager.CanGoBack(); } }