@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 MatNavMenu extrasNavMenu; private bool navSubMenuOpen = false; private bool opened = false; private 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; locUrl = I18n.GetString(NavigationManager.Uri.Replace(NavigationManager.BaseUri, "")); StateHasChanged(); } private void ButtonClicked() { opened = !opened; } private void ButtonClicked(int _Index) { index = _Index; navSubMenuOpen = (index == 3 || index == 4 || index == 5); PageHistoryManager.AddPageToHistory(NavigationManager.Uri); StateHasChanged(); ButtonClicked(); } private void ButtonBackClicked() { PageHistoryManager.NavigateBack(); } private void LocationChanged(object sender, LocationChangedEventArgs e) { locUrl = I18n.GetString(e.Location.Replace(NavigationManager.BaseUri, "")); if (IsInServicesUrl(e.Location)) { index = 1; } else if (e.Location.Contains("account")) { index = 2; } else if (e.Location.Contains("history_found")) { index = 3; } else if (e.Location.Contains("history_missing")) { index = 4; } else if (e.Location.Contains("info")) { index = 5; } else { index = 0; } StateHasChanged(); } private bool IsInServicesUrl(string location) { return (location.Contains("caritas_services") || location.Contains("lost_found") || location.Contains("keydata") || location.Contains("account/") || location.Contains("conclusion_")); } private bool HandleAppBarContainer() { string uri = NavigationManager.Uri; string baseUri = NavigationManager.BaseUri; string delta = uri.Replace(baseUri, ""); if (delta == null || delta.Equals("")) { return false; } else { if (IsInServicesUrl(delta)) { index = 1; } else if (delta.Equals("account")) { index = 2; } else if (delta.Equals("fundvelo/history_found")) { index = 3; } else if (delta.Equals("fundvelo/history_missing")) { index = 4; } else if (delta.Equals("info")) { index = 5; } else { index = 0; } return true; } } private bool BackButtonDisabled() { return !PageHistoryManager.CanGoBack(); } }