Remove latestCommitHeader and sorting by head from loadProjects

Querying all the head commits for every project that is to be shown in a
nodes listing, can get compute intensive and only required for sorting,
which is now done by the `radicle-httpd`.

It is also error prone e.g. when a project has some issue with some of the
commits it can bring down the entire project listing.

This commit also introduces a small console.error for debugging and a
gracefull fallback to hide project activity if an error ocurrs.
This commit is contained in:
Sebastian Martinez
2023-12-19 15:21:52 +00:00
committed by Rūdolfs Ošiņš
parent 55f8f4ba87
commit 5f116cff95
2 changed files with 12 additions and 20 deletions
-5
View File
@@ -29,11 +29,6 @@
const result = await loadProjects(projectPageIndex, baseUrl);
projectCount = result.total;
projects = [...projects, ...result.projects];
projects.sort(
(a, b) =>
b.latestCommitHeader.committer.time -
a.latestCommitHeader.committer.time,
);
projectPageIndex += 1;
} catch (err) {
error = err;
+12 -15
View File
@@ -1,4 +1,4 @@
import type { BaseUrl, CommitHeader, Project } from "@httpd-client";
import type { BaseUrl, Project } from "@httpd-client";
import type {
LoadErrorRoute,
NotFoundRoute,
@@ -16,7 +16,6 @@ export interface NodesRouteParams {
export interface ProjectActivity {
project: Project;
latestCommitHeader: CommitHeader;
activity: WeeklyActivity[];
}
@@ -56,28 +55,26 @@ export async function loadProjects(
const results = await Promise.all(
projects.map(async project => {
const activity = await loadProjectActivity(project.id, baseUrl);
const { commit: latestCommitHeader } = await api.project.getCommitBySha(
project.id,
project.head,
);
let activity: WeeklyActivity[] = [];
try {
activity = await loadProjectActivity(project.id, baseUrl);
} catch (error) {
console.error(
`Failed to obtain project activity for: ${project.id}`,
error,
);
}
return {
project,
latestCommitHeader,
activity,
};
}),
);
// Sorts projects by most recent commit descending.
const sortedProjects = results.sort(
(a, b) =>
b.latestCommitHeader.committer.time - a.latestCommitHeader.committer.time,
);
return {
total: nodeStats.projects.count,
projects: sortedProjects,
projects: results,
};
}