added multithreaded api calling on homepage
This commit is contained in:
@@ -82,7 +82,6 @@
|
||||
if (displayElement.innerText !== jobs.display)
|
||||
displayElement.innerText = jobs.display;
|
||||
}, 50)
|
||||
|
||||
</script>
|
||||
|
||||
@inherits CancellableComponent
|
||||
@@ -98,13 +97,15 @@
|
||||
private IEnumerable<TimelineEntry> _timeline = [];
|
||||
|
||||
protected override async Task OnInitializedAsync() {
|
||||
var projects = await ProjectRepository.GetProjects(TokenSource.Token);
|
||||
_projects = projects.Where(p => p.Featured);
|
||||
var projectsTask = ProjectRepository.GetFeaturedProjects(TokenSource.Token);
|
||||
var technologiesTask = TechnologyRepository.GetFeaturedTechnologies(TokenSource.Token);
|
||||
var timelineTask = TimelineRepository.GetFeaturedTimeline(TokenSource.Token);
|
||||
|
||||
var technologies = await TechnologyRepository.GetTechnologies(TokenSource.Token);
|
||||
_technologies = technologies.Where(t => t.Featured);
|
||||
await Task.WhenAll(projectsTask, technologiesTask, timelineTask);
|
||||
|
||||
_timeline = await TimelineRepository.GetFeaturedTimeline(TokenSource.Token);
|
||||
_projects = projectsTask.Result;
|
||||
_technologies = technologiesTask.Result;
|
||||
_timeline = timelineTask.Result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,4 +12,13 @@ internal sealed class ProjectRepository(IHttpClientFactory factory) : IProjectRe
|
||||
var data = await response.Content.ReadFromJsonAsync<IEnumerable<Project>>(ct);
|
||||
return data?.OrderByDescending(p => p.OrderIndex) ?? Enumerable.Empty<Project>();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Project>> GetFeaturedProjects(CancellationToken ct) {
|
||||
var client = factory.CreateClient("api");
|
||||
var response = await client.GetAsync("api/projects/featured", ct);
|
||||
if (!response.IsSuccessStatusCode) return [];
|
||||
|
||||
var data = await response.Content.ReadFromJsonAsync<IEnumerable<Project>>(ct);
|
||||
return data?.OrderByDescending(p => p.OrderIndex) ?? Enumerable.Empty<Project>();
|
||||
}
|
||||
}
|
||||
@@ -12,4 +12,13 @@ internal sealed class TechnologyRepository(IHttpClientFactory factory) : ITechno
|
||||
var data = await response.Content.ReadFromJsonAsync<IEnumerable<Technology>>(ct);
|
||||
return data ?? [];
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Technology>> GetFeaturedTechnologies(CancellationToken ct) {
|
||||
var client = factory.CreateClient("api");
|
||||
var response = await client.GetAsync("api/technologies/featured", ct);
|
||||
if (!response.IsSuccessStatusCode) return [];
|
||||
|
||||
var data = await response.Content.ReadFromJsonAsync<IEnumerable<Technology>>(ct);
|
||||
return data ?? [];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user