added multithreaded api calling on homepage
All checks were successful
Portfolio CI/CD / build (push) Successful in 1m8s
Portfolio CI/CD / test (push) Successful in 1m51s
Portfolio CI/CD / publish (push) Has been skipped

This commit is contained in:
2026-02-22 12:22:20 +01:00
parent 53bd0e107e
commit aac2f5180b
11 changed files with 58 additions and 7 deletions

View File

@@ -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;
}
}

View File

@@ -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>();
}
}

View File

@@ -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 ?? [];
}
}