@page "/" @inject TafsirApiClient Api @inject PlayerSessionService Player @inject NavigationManager Nav @implements IDisposable تفسیر قرآن @if (Player.HasTrack) { ادامه از آخرین مراجعه @Player.DisplayTitle } @if (loading) { } else if (tafsirs.Count == 0) { تفسیر قطره چکانی قرائتی } else { @foreach (var t in tafsirs) { @t.Title @t.Author } } @code { private List tafsirs = []; private bool loading = true; protected override void OnInitialized() => Player.Changed += OnPlayerChanged; protected override async Task OnAfterRenderAsync(bool firstRender) { if (!firstRender) return; try { await Player.EnsureLoadedAsync(); tafsirs = (await Api.GetTafsirsAsync()).ToList(); } catch { tafsirs = []; } finally { loading = false; await InvokeAsync(StateHasChanged); } } private void Resume() => Nav.NavigateTo(Player.ResumeHref); private void OnPlayerChanged() => InvokeAsync(StateHasChanged); public void Dispose() => Player.Changed -= OnPlayerChanged; }