mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2026-04-15 01:41:56 +00:00
sort repo list by last pipeline activity
This commit is contained in:
@@ -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;
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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' },
|
||||
},
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user