From 27c1b29eb64ec8f54f6d9254d5c2ed247ba29fe9 Mon Sep 17 00:00:00 2001 From: Anbraten Date: Sun, 8 Oct 2023 20:40:35 +0200 Subject: [PATCH 01/21] use useStorage and same prefix --- .../components/repo/pipeline/PipelineLog.vue | 2 +- web/src/components/repo/settings/BadgeTab.vue | 2 +- web/src/components/user/UserGeneralTab.vue | 4 +-- web/src/compositions/useDarkMode.ts | 28 +++++++++++++++++++ web/src/compositions/useUserConfig.ts | 21 +++----------- web/src/utils/locale.ts | 4 +-- 6 files changed, 38 insertions(+), 23 deletions(-) create mode 100644 web/src/compositions/useDarkMode.ts diff --git a/web/src/components/repo/pipeline/PipelineLog.vue b/web/src/components/repo/pipeline/PipelineLog.vue index 5fa128cb635..124d7ada3e0 100644 --- a/web/src/components/repo/pipeline/PipelineLog.vue +++ b/web/src/components/repo/pipeline/PipelineLog.vue @@ -163,7 +163,7 @@ const hasLogs = computed( // we do not have logs for skipped steps repo?.value && pipeline.value && step.value && step.value.state !== 'skipped', ); -const autoScroll = useStorage('log-auto-scroll', false); +const autoScroll = useStorage('woodpecker:log-auto-scroll', false); const showActions = ref(false); const downloadInProgress = ref(false); const ansiUp = ref(new AnsiUp()); diff --git a/web/src/components/repo/settings/BadgeTab.vue b/web/src/components/repo/settings/BadgeTab.vue index 0ace5d1bb77..b7171a66c08 100644 --- a/web/src/components/repo/settings/BadgeTab.vue +++ b/web/src/components/repo/settings/BadgeTab.vue @@ -55,7 +55,7 @@ import type { Repo } from '~/lib/api/types'; const apiClient = useApiClient(); const repo = inject>('repo'); -const badgeType = useStorage('last-badge-type', 'markdown'); +const badgeType = useStorage('woodpecker:last-badge-type', 'markdown'); if (!repo) { throw new Error('Unexpected: "repo" should be provided at this place'); diff --git a/web/src/components/user/UserGeneralTab.vue b/web/src/components/user/UserGeneralTab.vue index fea7cc8336b..f46dc44d646 100644 --- a/web/src/components/user/UserGeneralTab.vue +++ b/web/src/components/user/UserGeneralTab.vue @@ -18,7 +18,7 @@ diff --git a/web/src/views/RepoList.vue b/web/src/views/RepoList.vue new file mode 100644 index 00000000000..aa46e9957bf --- /dev/null +++ b/web/src/views/RepoList.vue @@ -0,0 +1,49 @@ + + + From 5783bce68783eeec2ba33418b59f5da586db0df9 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 17 Nov 2024 00:45:40 +0100 Subject: [PATCH 08/21] fix typo --- web/src/views/RepoList.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/views/RepoList.vue b/web/src/views/RepoList.vue index aa46e9957bf..ddb4bf87616 100644 --- a/web/src/views/RepoList.vue +++ b/web/src/views/RepoList.vue @@ -14,7 +14,7 @@
- +
@@ -41,7 +41,7 @@ const { searchedRepos } = useRepoSearch(repos, search); const { sortReposByLastAccess, sortReposByLastActivity } = useRepos(); const repoListAccess = computed(() => sortReposByLastAccess(repos.value || [])); -const repoListActivit = computed(() => sortReposByLastActivity(searchedRepos.value || [])); +const repoListActivity = computed(() => sortReposByLastActivity(searchedRepos.value || [])); router.beforeEach(async () => { await repoStore.loadRepos(); From 76c5441b5156e5702ba2af75fba3ed11d9c6be50 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 17 Nov 2024 20:37:36 +0100 Subject: [PATCH 09/21] add back repos without pipelines and apply to orgRepos --- web/src/components/atomic/Icon.vue | 5 +- web/src/components/repo/RepoItems.vue | 82 ++++++++++++++++++++++++ web/src/components/repo/RepoListItem.vue | 47 -------------- web/src/router.ts | 2 +- web/src/views/RepoList.vue | 49 -------------- web/src/views/Repos.vue | 40 +++--------- web/src/views/org/OrgRepos.vue | 6 +- 7 files changed, 99 insertions(+), 132 deletions(-) create mode 100644 web/src/components/repo/RepoItems.vue delete mode 100644 web/src/components/repo/RepoListItem.vue delete mode 100644 web/src/views/RepoList.vue diff --git a/web/src/components/atomic/Icon.vue b/web/src/components/atomic/Icon.vue index ba406fbaeea..861a40a705a 100644 --- a/web/src/components/atomic/Icon.vue +++ b/web/src/components/atomic/Icon.vue @@ -50,6 +50,7 @@ + @@ -119,6 +120,7 @@ import { mdiTagOutline, mdiTimelapse, mdiTrashCanOutline, + mdiCircleOutline, } from '@mdi/js'; import { siForgejo, siGitea } from 'simple-icons'; @@ -175,7 +177,8 @@ export type IconNames = | 'attention' | 'spinner' | 'error' - | 'remove'; + | 'remove' + | 'new'; defineProps<{ name: IconNames; diff --git a/web/src/components/repo/RepoItems.vue b/web/src/components/repo/RepoItems.vue new file mode 100644 index 00000000000..5cffe78c16d --- /dev/null +++ b/web/src/components/repo/RepoItems.vue @@ -0,0 +1,82 @@ + + + diff --git a/web/src/components/repo/RepoListItem.vue b/web/src/components/repo/RepoListItem.vue deleted file mode 100644 index 5fb87944829..00000000000 --- a/web/src/components/repo/RepoListItem.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - diff --git a/web/src/router.ts b/web/src/router.ts index 8b4858adc1b..ad807561bbc 100644 --- a/web/src/router.ts +++ b/web/src/router.ts @@ -19,7 +19,7 @@ const routes: RouteRecordRaw[] = [ { path: '', name: 'repos', - component: (): Component => import('~/views/RepoList.vue'), + component: (): Component => import('~/views/Repos.vue'), meta: { authentication: 'required' }, }, { diff --git a/web/src/views/RepoList.vue b/web/src/views/RepoList.vue deleted file mode 100644 index ddb4bf87616..00000000000 --- a/web/src/views/RepoList.vue +++ /dev/null @@ -1,49 +0,0 @@ - - - diff --git a/web/src/views/Repos.vue b/web/src/views/Repos.vue index a8b2bd527e0..249c29b2823 100644 --- a/web/src/views/Repos.vue +++ b/web/src/views/Repos.vue @@ -10,60 +10,40 @@
- -
-
- ... - - {{ `${repo.owner} / ${repo.name}` }} - -
-
-
+
- -
-
- ... - - {{ `${repo.owner} / ${repo.name}` }} - -
-
-
+
diff --git a/web/src/views/org/OrgRepos.vue b/web/src/views/org/OrgRepos.vue index 84aeec8b964..e2472197089 100644 --- a/web/src/views/org/OrgRepos.vue +++ b/web/src/views/org/OrgRepos.vue @@ -14,9 +14,7 @@
- - {{ `${repo.owner} / ${repo.name}` }} - +
{{ $t('repo.user_none') }} @@ -28,7 +26,7 @@ import { computed, onMounted, ref } from 'vue'; import IconButton from '~/components/atomic/IconButton.vue'; -import ListItem from '~/components/atomic/ListItem.vue'; +import RepoItems from '~/components/repo/RepoItems.vue'; import Scaffold from '~/components/layout/scaffold/Scaffold.vue'; import { inject } from '~/compositions/useInjectProvide'; import { useRepoSearch } from '~/compositions/useRepoSearch'; From 9f2749aef46ccccfdf9f6bae53f3175f126dbe91 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 17 Nov 2024 21:57:33 +0100 Subject: [PATCH 10/21] fmt --- web/src/components/atomic/Icon.vue | 2 +- web/src/components/repo/RepoItems.vue | 2 +- web/src/lib/api/types/repo.ts | 2 +- web/src/views/org/OrgRepos.vue | 2 +- web/src/views/repo/RepoWrapper.vue | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/web/src/components/atomic/Icon.vue b/web/src/components/atomic/Icon.vue index 861a40a705a..2e415763c8b 100644 --- a/web/src/components/atomic/Icon.vue +++ b/web/src/components/atomic/Icon.vue @@ -89,6 +89,7 @@ import { mdiBitbucket, mdiCheckCircle, mdiChevronRight, + mdiCircleOutline, mdiClockTimeEightOutline, mdiClose, mdiCloseCircleOutline, @@ -120,7 +121,6 @@ import { mdiTagOutline, mdiTimelapse, mdiTrashCanOutline, - mdiCircleOutline, } from '@mdi/js'; import { siForgejo, siGitea } from 'simple-icons'; diff --git a/web/src/components/repo/RepoItems.vue b/web/src/components/repo/RepoItems.vue index 5cffe78c16d..81d8ee23f5d 100644 --- a/web/src/components/repo/RepoItems.vue +++ b/web/src/components/repo/RepoItems.vue @@ -42,8 +42,8 @@ import { computed, toRef } from 'vue'; import { useI18n } from 'vue-i18n'; -import Icon from '~/components/atomic/Icon.vue'; import Badge from '~/components/atomic/Badge.vue'; +import Icon from '~/components/atomic/Icon.vue'; import PipelineStatusIcon from '~/components/repo/pipeline/PipelineStatusIcon.vue'; import usePipeline from '~/compositions/usePipeline'; import type { Repo } from '~/lib/api/types'; diff --git a/web/src/lib/api/types/repo.ts b/web/src/lib/api/types/repo.ts index dc3bd8e3d00..20e1ba641c7 100644 --- a/web/src/lib/api/types/repo.ts +++ b/web/src/lib/api/types/repo.ts @@ -1,4 +1,4 @@ -import type { Pipeline } from "./pipeline"; +import type { Pipeline } from './pipeline'; // A version control repository. export interface Repo { diff --git a/web/src/views/org/OrgRepos.vue b/web/src/views/org/OrgRepos.vue index e2472197089..db1f1a42ec3 100644 --- a/web/src/views/org/OrgRepos.vue +++ b/web/src/views/org/OrgRepos.vue @@ -26,8 +26,8 @@ import { computed, onMounted, ref } from 'vue'; import IconButton from '~/components/atomic/IconButton.vue'; -import RepoItems from '~/components/repo/RepoItems.vue'; import Scaffold from '~/components/layout/scaffold/Scaffold.vue'; +import RepoItems from '~/components/repo/RepoItems.vue'; import { inject } from '~/compositions/useInjectProvide'; import { useRepoSearch } from '~/compositions/useRepoSearch'; import { useRepoStore } from '~/store/repos'; diff --git a/web/src/views/repo/RepoWrapper.vue b/web/src/views/repo/RepoWrapper.vue index 60de665922d..ef9c25e5358 100644 --- a/web/src/views/repo/RepoWrapper.vue +++ b/web/src/views/repo/RepoWrapper.vue @@ -67,8 +67,8 @@ import useAuthentication from '~/compositions/useAuthentication'; import useConfig from '~/compositions/useConfig'; import { useForgeStore } from '~/compositions/useForgeStore'; import useNotifications from '~/compositions/useNotifications'; -import type { Forge, RepoPermissions } from '~/lib/api/types'; import useRepos from '~/compositions/useRepos'; +import type { Forge, RepoPermissions } from '~/lib/api/types'; import { usePipelineStore } from '~/store/pipelines'; import { useRepoStore } from '~/store/repos'; From 139d1820ca8d87b5d1234de4ff03c29b6d74fe9f Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Mon, 18 Nov 2024 00:25:05 +0100 Subject: [PATCH 11/21] rework repo items layout --- web/src/components/repo/RepoItems.vue | 57 +++++++++++++++++---------- web/src/compositions/useRepos.ts | 4 +- web/src/lib/api/types/repo.ts | 4 +- web/src/store/repos.ts | 2 +- 4 files changed, 42 insertions(+), 25 deletions(-) diff --git a/web/src/components/repo/RepoItems.vue b/web/src/components/repo/RepoItems.vue index 81d8ee23f5d..fa0ce4a6598 100644 --- a/web/src/components/repo/RepoItems.vue +++ b/web/src/components/repo/RepoItems.vue @@ -3,36 +3,51 @@
-
- - - {{ `${repo.owner} / ${repo.name}` }} - +
+
{{ `${repo.owner} / ${repo.name}` }}
+
- +
-
-
- - - - - - - - - +
+
+ + {{ shortMessage }} -
-
+
{{ $t('repo.pipeline.no_pipelines') }}
+ +
+
+
+ + + + + + + + + + {{ prettyRef }} +
+ +
+ + {{ since }} +
+
+
@@ -54,8 +69,8 @@ const props = defineProps<{ }>(); const repo = props.repo; -const pipeline = toRef(repo.last_pipeline); -const { since, shortMessage } = usePipeline(pipeline); +const pipeline = toRef(repo.last_pipeline_item); +const { since, shortMessage, prettyRef } = usePipeline(pipeline); const { t } = useI18n(); diff --git a/web/src/compositions/useRepos.ts b/web/src/compositions/useRepos.ts index 4f3d505f81e..ac754727a82 100644 --- a/web/src/compositions/useRepos.ts +++ b/web/src/compositions/useRepos.ts @@ -16,8 +16,8 @@ export default function useRepos() { function sortReposByLastActivity(repos: Repo[]): Repo[] { return repos.sort((a, b) => { - const aLastActivity = a.last_pipeline?.created || 0; - const bLastActivity = b.last_pipeline?.created || 0; + const aLastActivity = a.last_pipeline_item?.created || 0; + const bLastActivity = b.last_pipeline_item?.created || 0; return bLastActivity - aLastActivity; }); diff --git a/web/src/lib/api/types/repo.ts b/web/src/lib/api/types/repo.ts index 20e1ba641c7..cfb323b2bd6 100644 --- a/web/src/lib/api/types/repo.ts +++ b/web/src/lib/api/types/repo.ts @@ -67,7 +67,9 @@ export interface Repo { visibility: RepoVisibility; - last_pipeline: Pipeline; + last_pipeline: number; + + last_pipeline_item: Pipeline; require_approval: RepoRequireApproval; diff --git a/web/src/store/repos.ts b/web/src/store/repos.ts index 467a9105d96..f14d9a5b857 100644 --- a/web/src/store/repos.ts +++ b/web/src/store/repos.ts @@ -35,7 +35,7 @@ export const useRepoStore = defineStore('repos', () => { await Promise.all( _ownedRepos.map(async (repo) => { const latestPipeline = await apiClient.getPipelineList(repo.id, { page: 1, perPage: 1 }); - repo.last_pipeline = latestPipeline[0]; + repo.last_pipeline_item = latestPipeline[0]; repos.set(repo.id, repo); }), ); From bc76428555e48e8b046fc515e900ce32798c2a3c Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Mon, 18 Nov 2024 00:29:16 +0100 Subject: [PATCH 12/21] adjust spacing --- web/src/components/repo/RepoItems.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/components/repo/RepoItems.vue b/web/src/components/repo/RepoItems.vue index fa0ce4a6598..a9cb17b5cdf 100644 --- a/web/src/components/repo/RepoItems.vue +++ b/web/src/components/repo/RepoItems.vue @@ -3,7 +3,7 @@
-
+
{{ `${repo.owner} / ${repo.name}` }}
-
+
From 3a198212004bebe663498451d789f13be660e3e4 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Mon, 18 Nov 2024 20:43:19 +0100 Subject: [PATCH 13/21] flatten translation --- web/src/assets/locales/en.json | 30 +++++++++---------- web/src/components/repo/RepoItems.vue | 5 +--- .../components/repo/settings/GeneralTab.vue | 17 +++++------ web/src/views/Repos.vue | 7 ++--- 4 files changed, 25 insertions(+), 34 deletions(-) diff --git a/web/src/assets/locales/en.json b/web/src/assets/locales/en.json index 4df57fb0bbe..613c1525121 100644 --- a/web/src/assets/locales/en.json +++ b/web/src/assets/locales/en.json @@ -67,6 +67,21 @@ "success": "Repository enabled" }, "open_in_forge": "Open repository in forge", + "visibility": { + "visibility": "Project visibility", + "public": { + "public": "Public", + "desc": "Every user can see your project without being logged in." + }, + "private": { + "private": "Private", + "desc": "Only you and other owners of the repository can see this project." + }, + "internal": { + "internal": "Internal", + "desc": "Only authenticated users of the Woodpecker instance can see this project." + } + }, "settings": { "not_allowed": "You are not allowed to access this repository's settings", "general": { @@ -107,21 +122,6 @@ "desc": "Underlying pipeline containers get access to security privileges." } }, - "visibility": { - "visibility": "Project visibility", - "public": { - "public": "Public", - "desc": "Every user can see your project without being logged in." - }, - "private": { - "private": "Private", - "desc": "Only you and other owners of the repository can see this project." - }, - "internal": { - "internal": "Internal", - "desc": "Only authenticated users of the Woodpecker instance can see this project." - } - }, "timeout": { "timeout": "Timeout", "minutes": "minutes" diff --git a/web/src/components/repo/RepoItems.vue b/web/src/components/repo/RepoItems.vue index a9cb17b5cdf..fd7de0f9dd7 100644 --- a/web/src/components/repo/RepoItems.vue +++ b/web/src/components/repo/RepoItems.vue @@ -6,10 +6,7 @@
{{ `${repo.owner} / ${repo.name}` }}
- +
diff --git a/web/src/components/repo/settings/GeneralTab.vue b/web/src/components/repo/settings/GeneralTab.vue index e57bdc14980..f6e148fa3d1 100644 --- a/web/src/components/repo/settings/GeneralTab.vue +++ b/web/src/components/repo/settings/GeneralTab.vue @@ -74,10 +74,7 @@ - + @@ -215,18 +212,18 @@ onMounted(() => { const projectVisibilityOptions: RadioOption[] = [ { value: RepoVisibility.Public, - text: i18n.t('repo.settings.general.visibility.public.public'), - description: i18n.t('repo.settings.general.visibility.public.desc'), + text: i18n.t('repo.visibility.public.public'), + description: i18n.t('repo.visibility.public.desc'), }, { value: RepoVisibility.Internal, - text: i18n.t('repo.settings.general.visibility.internal.internal'), - description: i18n.t('repo.settings.general.visibility.internal.desc'), + text: i18n.t('repo.visibility.internal.internal'), + description: i18n.t('repo.visibility.internal.desc'), }, { value: RepoVisibility.Private, - text: i18n.t('repo.settings.general.visibility.private.private'), - description: i18n.t('repo.settings.general.visibility.private.desc'), + text: i18n.t('repo.visibility.private.private'), + description: i18n.t('repo.visibility.private.desc'), }, ]; diff --git a/web/src/views/Repos.vue b/web/src/views/Repos.vue index 249c29b2823..92820b536ba 100644 --- a/web/src/views/Repos.vue +++ b/web/src/views/Repos.vue @@ -21,8 +21,7 @@ From c1e16f89a010e5fe7587525670936c90e343872a Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Mon, 18 Nov 2024 20:53:34 +0100 Subject: [PATCH 14/21] fix org repos --- web/src/components/atomic/Icon.vue | 2 -- web/src/views/org/OrgRepos.vue | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/web/src/components/atomic/Icon.vue b/web/src/components/atomic/Icon.vue index 2e415763c8b..30ad3682d15 100644 --- a/web/src/components/atomic/Icon.vue +++ b/web/src/components/atomic/Icon.vue @@ -50,7 +50,6 @@ - @@ -89,7 +88,6 @@ import { mdiBitbucket, mdiCheckCircle, mdiChevronRight, - mdiCircleOutline, mdiClockTimeEightOutline, mdiClose, mdiCloseCircleOutline, diff --git a/web/src/views/org/OrgRepos.vue b/web/src/views/org/OrgRepos.vue index db1f1a42ec3..5a9da6042d6 100644 --- a/web/src/views/org/OrgRepos.vue +++ b/web/src/views/org/OrgRepos.vue @@ -13,7 +13,7 @@ /> -
+
From d9f759f3f670f1781fe5cc5c4033c74c14420a5b Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Mon, 18 Nov 2024 21:25:34 +0100 Subject: [PATCH 15/21] fix layout --- web/src/components/atomic/Icon.vue | 3 +-- web/src/components/repo/RepoItems.vue | 19 +++++++++---------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/web/src/components/atomic/Icon.vue b/web/src/components/atomic/Icon.vue index 30ad3682d15..ba406fbaeea 100644 --- a/web/src/components/atomic/Icon.vue +++ b/web/src/components/atomic/Icon.vue @@ -175,8 +175,7 @@ export type IconNames = | 'attention' | 'spinner' | 'error' - | 'remove' - | 'new'; + | 'remove'; defineProps<{ name: IconNames; diff --git a/web/src/components/repo/RepoItems.vue b/web/src/components/repo/RepoItems.vue index fd7de0f9dd7..486b3bd0876 100644 --- a/web/src/components/repo/RepoItems.vue +++ b/web/src/components/repo/RepoItems.vue @@ -12,7 +12,6 @@
- {{ shortMessage }}
@@ -25,22 +24,22 @@
- - - - - - - + + + + + + + {{ prettyRef }}
- + {{ since }}
From b7e01f863a236c3db351c111121a5fd94fd0ff30 Mon Sep 17 00:00:00 2001 From: Anbraten Date: Tue, 19 Nov 2024 09:16:06 +0100 Subject: [PATCH 16/21] fix setting last pipeline and rename to repo-card --- web/src/components/repo/RepoCard.vue | 93 +++++++++++++++++++++++++++ web/src/components/repo/RepoItems.vue | 93 --------------------------- web/src/lib/api/types/repo.ts | 2 +- web/src/store/repos.ts | 9 ++- web/src/views/Repos.vue | 8 +-- web/src/views/org/OrgRepos.vue | 4 +- 6 files changed, 106 insertions(+), 103 deletions(-) create mode 100644 web/src/components/repo/RepoCard.vue delete mode 100644 web/src/components/repo/RepoItems.vue diff --git a/web/src/components/repo/RepoCard.vue b/web/src/components/repo/RepoCard.vue new file mode 100644 index 00000000000..ab7106261fd --- /dev/null +++ b/web/src/components/repo/RepoCard.vue @@ -0,0 +1,93 @@ + + + diff --git a/web/src/components/repo/RepoItems.vue b/web/src/components/repo/RepoItems.vue deleted file mode 100644 index 486b3bd0876..00000000000 --- a/web/src/components/repo/RepoItems.vue +++ /dev/null @@ -1,93 +0,0 @@ - - - diff --git a/web/src/lib/api/types/repo.ts b/web/src/lib/api/types/repo.ts index cfb323b2bd6..4de26888422 100644 --- a/web/src/lib/api/types/repo.ts +++ b/web/src/lib/api/types/repo.ts @@ -69,7 +69,7 @@ export interface Repo { last_pipeline: number; - last_pipeline_item: Pipeline; + last_pipeline_item?: Pipeline; require_approval: RepoRequireApproval; diff --git a/web/src/store/repos.ts b/web/src/store/repos.ts index f14d9a5b857..2f29349b0c1 100644 --- a/web/src/store/repos.ts +++ b/web/src/store/repos.ts @@ -21,12 +21,15 @@ export const useRepoStore = defineStore('repos', () => { } function setRepo(repo: Repo) { - repos.set(repo.id, repo); + repos.set(repo.id, { + ...repos.get(repo.id), + ...repo, + }); } async function loadRepo(repoId: number) { const repo = await apiClient.getRepo(repoId); - repos.set(repo.id, repo); + setRepo(repo); return repo; } @@ -36,7 +39,7 @@ export const useRepoStore = defineStore('repos', () => { _ownedRepos.map(async (repo) => { const latestPipeline = await apiClient.getPipelineList(repo.id, { page: 1, perPage: 1 }); repo.last_pipeline_item = latestPipeline[0]; - repos.set(repo.id, repo); + setRepo(repo); }), ); ownedRepoIds.value = _ownedRepos.map((repo) => repo.id); diff --git a/web/src/views/Repos.vue b/web/src/views/Repos.vue index 92820b536ba..100bbe1b56b 100644 --- a/web/src/views/Repos.vue +++ b/web/src/views/Repos.vue @@ -8,13 +8,13 @@