mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-10-30 16:50:47 +08:00
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:
@@ -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
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user