using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Routing; using Front.Program.Views.Project; using Front.Program.Views.Academy; using Front.Program.Services; using Front.Program.ViewModels; namespace Front.Program.Layout; public partial class MainLayout : LayoutComponentBase, IDisposable { [Inject] NavigationManager Navigation { get; set; } = default!; [Inject] LoadingService LoadingService { get; set; } = default!; [Inject] UserStateService UserStateService { get; set; } = default!; // 경로의 시작 부분 // protected bool isHidePrjTop => Navigation.ToBaseRelativePath(Navigation.Uri).StartsWith("auth", StringComparison.OrdinalIgnoreCase); // 경로의 끝 부분 protected bool isHidePrjTop => Navigation.ToBaseRelativePath(Navigation.Uri).EndsWith("auth", StringComparison.OrdinalIgnoreCase); protected bool isAcademy => Navigation.ToBaseRelativePath(Navigation.Uri).StartsWith("am", StringComparison.OrdinalIgnoreCase); // 경로 일치 protected bool isIntro => Navigation.ToBaseRelativePath(Navigation.Uri).Equals("am/intro", StringComparison.OrdinalIgnoreCase); protected override void OnInitialized() { LoadingService.OnChange += StateHasChanged; Navigation.LocationChanged += HandleLocationChanged; HandleLocationChanged(this, new LocationChangedEventArgs(Navigation.Uri, false)); } // 페이지의 URL이 변경될 때마다 실행되는 이벤트 핸들러 private async void HandleLocationChanged(object? sender, LocationChangedEventArgs e) { LoadingService.HideNavigationLoading(); } public void Dispose() { LoadingService.OnChange -= StateHasChanged; Navigation.LocationChanged -= HandleLocationChanged; } }