sort repo list by last pipeline activity

This commit is contained in:
Robert Kaussow
2024-11-17 00:35:40 +01:00
parent 5b3b56b8b4
commit ec424f7668
4 changed files with 13 additions and 7 deletions

View File

@@ -16,8 +16,8 @@ export default function useRepos() {
function sortReposByLastActivity(repos: Repo[]): Repo[] {
return repos.sort((a, b) => {
const aLastActivity = a.last_pipeline || 0;
const bLastActivity = b.last_pipeline || 0;
const aLastActivity = a.last_pipeline?.created || 0;
const bLastActivity = b.last_pipeline?.created || 0;
return bLastActivity - aLastActivity;
});

View File

@@ -1,3 +1,5 @@
import type { Pipeline } from "./pipeline";
// A version control repository.
export interface Repo {
// Is the repo currently active or not
@@ -65,7 +67,7 @@ export interface Repo {
visibility: RepoVisibility;
last_pipeline: number;
last_pipeline: Pipeline;
require_approval: RepoRequireApproval;

View File

@@ -19,7 +19,7 @@ const routes: RouteRecordRaw[] = [
{
path: '',
name: 'repos',
component: (): Component => import('~/views/Repos.vue'),
component: (): Component => import('~/views/RepoList.vue'),
meta: { authentication: 'required' },
},
{

View File

@@ -32,9 +32,13 @@ export const useRepoStore = defineStore('repos', () => {
async function loadRepos() {
const _ownedRepos = await apiClient.getRepoList();
_ownedRepos.forEach((repo) => {
repos.set(repo.id, repo);
});
await Promise.all(
_ownedRepos.map(async (repo) => {
const latestPipeline = await apiClient.getPipelineList(repo.id, { page: 1, perPage: 1 });
repo.last_pipeline = latestPipeline[0];
repos.set(repo.id, repo);
}),
);
ownedRepoIds.value = _ownedRepos.map((repo) => repo.id);
}