@@ -18,14 +18,22 @@ public partial class Index(NavigationManager navManager, BlogPostService blogPos
1818
1919 protected IOrderedEnumerable < BlogPostMetaData > ? BlogPosts { get ; set ; }
2020
21- protected override async void OnInitialized ( )
21+ protected override async Task OnInitializedAsync ( )
2222 {
2323 BlogPosts = await blogPostService . GetPosts ( ) ;
24+ await PreloadCurrentPagePosts ( ) ;
2425
2526 await InvokeAsync ( StateHasChanged ) ;
2627 base . OnInitialized ( ) ;
2728 }
2829
30+ protected override async Task OnParametersSetAsync ( )
31+ {
32+ await PreloadCurrentPagePosts ( ) ;
33+
34+ await base . OnParametersSetAsync ( ) ;
35+ }
36+
2937 public void NavigateToPage ( int page )
3038 {
3139 if ( page < TotalPages || page > 0 )
@@ -50,8 +58,22 @@ public void NavigateToPreviousPage()
5058 }
5159 }
5260
53- public void NavigateToPost ( string slug )
61+ public static string GetPostUrlFromSlug ( string slug )
5462 {
55- navManager . NavigateTo ( SiteUrls . BlogPost . Replace ( SiteUrls . POST_SLUG_PARAM , slug ) ) ;
63+ return SiteUrls . BlogPost . Replace ( SiteUrls . POST_SLUG_PARAM , slug ) ;
64+ }
65+
66+ private async Task PreloadCurrentPagePosts ( )
67+ {
68+ if ( BlogPosts is null )
69+ {
70+ return ;
71+ }
72+
73+ int startIndex = CurrentPage * PostsPerPage ;
74+ int endIndex = Math . Min ( startIndex + PostsPerPage , BlogPosts . Count ( ) ) ;
75+
76+ IEnumerable < string > slugsToPreload = BlogPosts . Skip ( startIndex ) . Take ( endIndex - startIndex ) . Select ( x => x . Slug ) ;
77+ await blogPostService . PreloadPostMarkdown ( slugsToPreload ) ;
5678 }
5779}
0 commit comments