From 5b3b56b8b4689e021ddbc631985451f8dc460192 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sat, 16 Nov 2024 20:27:56 +0100 Subject: [PATCH] rework repo list --- web/src/compositions/useRepos.ts | 16 +++++++++--- web/src/views/Repos.vue | 45 ++++++++++++++++++++------------ 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/web/src/compositions/useRepos.ts b/web/src/compositions/useRepos.ts index 75abc6f76..f921bfb4a 100644 --- a/web/src/compositions/useRepos.ts +++ b/web/src/compositions/useRepos.ts @@ -1,25 +1,35 @@ import { useStorage } from '@vueuse/core'; -import { Repo } from '~/lib/api/types'; +import type { Repo } from '~/lib/api/types'; export default function useRepos() { const lastAccess = useStorage('woodpecker:repo-last-access', new Map()); function sortReposByLastAccess(repos: Repo[]): Repo[] { return repos.sort((a, b) => { - const aLastAccess = lastAccess.value.get(a.id) || 0; - const bLastAccess = lastAccess.value.get(b.id) || 0; + const aLastAccess = lastAccess.value.get(a.id) ?? 0; + const bLastAccess = lastAccess.value.get(b.id) ?? 0; return bLastAccess - aLastAccess; }); } + function sortReposByLastActivity(repos: Repo[]): Repo[] { + return repos.sort((a, b) => { + const aLastActivity = a.last_pipeline || 0; + const bLastActivity = b.last_pipeline || 0; + + return bLastActivity - aLastActivity; + }); + } + function updateLastAccess(repoId: number) { lastAccess.value.set(repoId, Date.now()); } return { sortReposByLastAccess, + sortReposByLastActivity, updateLastAccess, }; } diff --git a/web/src/views/Repos.vue b/web/src/views/Repos.vue index 9cd12a3fc..a8b2bd527 100644 --- a/web/src/views/Repos.vue +++ b/web/src/views/Repos.vue @@ -8,24 +8,36 @@