diff --git a/web/src/views/repo/RepoPullRequests.vue b/web/src/views/repo/RepoPullRequests.vue
index 79562f838..a4f83f49f 100644
--- a/web/src/views/repo/RepoPullRequests.vue
+++ b/web/src/views/repo/RepoPullRequests.vue
@@ -1,25 +1,23 @@
-
-
-
- #{{ pullRequest.index }}
-
- -
- {{
- pullRequest.title
- }}
-
-
-
+
+
+ #{{ pullRequest.index }}
+
+ -
+ {{
+ pullRequest.title
+ }}
+
+
-
+
{{ $t('empty_list', { entity: $t('repo.pull_requests') }) }}
diff --git a/web/src/views/repo/settings/Crons.vue b/web/src/views/repo/settings/Crons.vue
index 08cd54a47..9e0c7959e 100644
--- a/web/src/views/repo/settings/Crons.vue
+++ b/web/src/views/repo/settings/Crons.vue
@@ -46,7 +46,10 @@
/>
-
{{ $t('repo.settings.crons.none') }}
+
+
+
+
{{ $t('repo.settings.crons.none') }}
@@ -109,6 +112,7 @@ import { computed, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import Button from '~/components/atomic/Button.vue';
+import Icon from '~/components/atomic/Icon.vue';
import IconButton from '~/components/atomic/IconButton.vue';
import ListItem from '~/components/atomic/ListItem.vue';
import InputField from '~/components/form/InputField.vue';
@@ -137,7 +141,7 @@ async function loadCrons(page: number): Promise {
return apiClient.getCronList(repo.value.id, { page });
}
-const { resetPage, data: crons } = usePagination(loadCrons, () => !selectedCron.value);
+const { resetPage, data: crons, loading } = usePagination(loadCrons, () => !selectedCron.value);
const { doSubmit: createCron, isLoading: isSaving } = useAsyncAction(async () => {
if (!selectedCron.value) {
@@ -154,13 +158,13 @@ const { doSubmit: createCron, isLoading: isSaving } = useAsyncAction(async () =>
type: 'success',
});
selectedCron.value = undefined;
- resetPage();
+ await resetPage();
});
const { doSubmit: deleteCron, isLoading: isDeleting } = useAsyncAction(async (_cron: Cron) => {
await apiClient.deleteCron(repo.value.id, _cron.id);
notifications.notify({ title: i18n.t('repo.settings.crons.deleted'), type: 'success' });
- resetPage();
+ await resetPage();
});
const { doSubmit: runCron } = useAsyncAction(async (_cron: Cron) => {
diff --git a/web/src/views/repo/settings/Registries.vue b/web/src/views/repo/settings/Registries.vue
index 827d8f547..7955598a1 100644
--- a/web/src/views/repo/settings/Registries.vue
+++ b/web/src/views/repo/settings/Registries.vue
@@ -14,6 +14,7 @@
v-if="!selectedRegistry"
v-model="registries"
:is-deleting="isDeleting"
+ :loading="loading"
@edit="editRegistry"
@delete="deleteRegistry"
/>
@@ -63,7 +64,7 @@ async function loadRegistries(page: number): Promise {
return apiClient.getRegistryList(repo.value.id, { page });
}
-const { resetPage, data: registries } = usePagination(loadRegistries, () => !selectedRegistry.value);
+const { resetPage, data: registries, loading } = usePagination(loadRegistries, () => !selectedRegistry.value);
const { doSubmit: createRegistry, isLoading: isSaving } = useAsyncAction(async () => {
if (!selectedRegistry.value) {
@@ -80,14 +81,14 @@ const { doSubmit: createRegistry, isLoading: isSaving } = useAsyncAction(async (
type: 'success',
});
selectedRegistry.value = undefined;
- resetPage();
+ await resetPage();
});
const { doSubmit: deleteRegistry, isLoading: isDeleting } = useAsyncAction(async (_registry: Registry) => {
const registryAddress = encodeURIComponent(_registry.address);
await apiClient.deleteRegistry(repo.value.id, registryAddress);
notifications.notify({ title: i18n.t('registries.deleted'), type: 'success' });
- resetPage();
+ await resetPage();
});
function editRegistry(registry: Registry) {
diff --git a/web/src/views/repo/settings/Secrets.vue b/web/src/views/repo/settings/Secrets.vue
index efa0945b9..104daca52 100644
--- a/web/src/views/repo/settings/Secrets.vue
+++ b/web/src/views/repo/settings/Secrets.vue
@@ -9,6 +9,7 @@
v-if="!selectedSecret"
:model-value="secrets"
:is-deleting="isDeleting"
+ :loading="loading"
@edit="editSecret"
@delete="deleteSecret"
/>
@@ -69,7 +70,11 @@ async function loadSecrets(page: number, level: 'repo' | 'org' | 'global'): Prom
}
}
-const { resetPage, data: _secrets } = usePagination(loadSecrets, () => !selectedSecret.value, {
+const {
+ resetPage,
+ data: _secrets,
+ loading,
+} = usePagination(loadSecrets, () => !selectedSecret.value, {
each: ['repo', 'org', 'global'],
});
const secrets = computed(() => {
diff --git a/web/src/views/user/UserRegistries.vue b/web/src/views/user/UserRegistries.vue
index 25c7afe9c..e565fa29d 100644
--- a/web/src/views/user/UserRegistries.vue
+++ b/web/src/views/user/UserRegistries.vue
@@ -18,6 +18,7 @@
v-if="!selectedRegistry"
v-model="registries"
:is-deleting="isDeleting"
+ :loading="loading"
@edit="editRegistry"
@delete="deleteRegistry"
/>
@@ -74,7 +75,7 @@ async function loadRegistries(page: number): Promise {
return apiClient.getOrgRegistryList(user.org_id, { page });
}
-const { resetPage, data: registries } = usePagination(loadRegistries, () => !selectedRegistry.value);
+const { resetPage, data: registries, loading } = usePagination(loadRegistries, () => !selectedRegistry.value);
const { doSubmit: createRegistry, isLoading: isSaving } = useAsyncAction(async () => {
if (!selectedRegistry.value) {
@@ -91,13 +92,13 @@ const { doSubmit: createRegistry, isLoading: isSaving } = useAsyncAction(async (
type: 'success',
});
selectedRegistry.value = undefined;
- resetPage();
+ await resetPage();
});
const { doSubmit: deleteRegistry, isLoading: isDeleting } = useAsyncAction(async (_registry: Registry) => {
await apiClient.deleteOrgRegistry(user.org_id, _registry.address);
notifications.notify({ title: i18n.t('registries.deleted'), type: 'success' });
- resetPage();
+ await resetPage();
});
function editRegistry(registry: Registry) {
diff --git a/web/src/views/user/UserSecrets.vue b/web/src/views/user/UserSecrets.vue
index af2e3625e..ee44b2dfc 100644
--- a/web/src/views/user/UserSecrets.vue
+++ b/web/src/views/user/UserSecrets.vue
@@ -13,6 +13,7 @@
v-if="!selectedSecret"
v-model="secrets"
:is-deleting="isDeleting"
+ :loading="loading"
@edit="editSecret"
@delete="deleteSecret"
/>
@@ -71,7 +72,7 @@ async function loadSecrets(page: number): Promise {
return apiClient.getOrgSecretList(user.org_id, { page });
}
-const { resetPage, data: secrets } = usePagination(loadSecrets, () => !selectedSecret.value);
+const { resetPage, data: secrets, loading } = usePagination(loadSecrets, () => !selectedSecret.value);
const { doSubmit: createSecret, isLoading: isSaving } = useAsyncAction(async () => {
if (!selectedSecret.value) {
@@ -88,13 +89,13 @@ const { doSubmit: createSecret, isLoading: isSaving } = useAsyncAction(async ()
type: 'success',
});
selectedSecret.value = undefined;
- resetPage();
+ await resetPage();
});
const { doSubmit: deleteSecret, isLoading: isDeleting } = useAsyncAction(async (_secret: Secret) => {
await apiClient.deleteOrgSecret(user.org_id, _secret.name);
notifications.notify({ title: i18n.t('secrets.deleted'), type: 'success' });
- resetPage();
+ await resetPage();
});
function editSecret(secret: Secret) {