fix(front): admin channel detail fetch button

This commit is contained in:
ArneBo 2025-05-03 23:48:40 +02:00 committed by Arne Bollinger
parent 8cd951ad78
commit 56d2242674
2 changed files with 24 additions and 36 deletions

View File

@ -9,6 +9,8 @@ import { useI18n } from 'vue-i18n'
import Modal from '~/components/ui/Modal.vue'
import Button from '~/components/ui/Button.vue'
import Alert from '~/components/ui/Alert.vue'
import Loader from '~/components/ui/Loader.vue'
const { t } = useI18n()
@ -43,15 +45,15 @@ const fetch = async () => {
data.value = undefined
try {
const response = await axios.post(props.url)
const response = await axios.get(props.url)
data.value = response.data
startPolling()
} catch (error) {
errors.value = (error as BackendError).backendErrors
}
} finally {
isLoading.value = false
}
}
const poll = async () => {
isPolling.value = true
@ -104,9 +106,9 @@ const { start: startPolling } = useTimeoutFn(poll, 1000, { immediate: false })
{{ t('components.federation.FetchButton.description.skipped') }}
</p>
</div>
<div
<Alert
v-else-if="data.status === 'finished'"
class="ui success message"
green
>
<h4 class="header">
{{ t('components.federation.FetchButton.header.success') }}
@ -114,10 +116,10 @@ const { start: startPolling } = useTimeoutFn(poll, 1000, { immediate: false })
<p>
{{ t('components.federation.FetchButton.description.success') }}
</p>
</div>
<div
</Alert>
<Alert
v-else-if="data.status === 'errored'"
class="ui error message"
red
>
<h4 class="header">
{{ t('components.federation.FetchButton.header.failure') }}
@ -168,28 +170,14 @@ const { start: startPolling } = useTimeoutFn(poll, 1000, { immediate: false })
</tr>
</tbody>
</table>
</div>
</Alert>
</template>
<div
v-else-if="isLoading"
class="ui active inverted dimmer"
>
<div class="ui text loader">
{{ t('components.federation.FetchButton.loader.fetchRequest') }}
</div>
</div>
<div
v-else-if="isPolling"
class="ui active inverted dimmer"
>
<div class="ui text loader">
{{ t('components.federation.FetchButton.loader.awaitingResult') }}
</div>
</div>
<div
<Loader
v-else-if="isLoading || isPolling"
/>
<Alert
v-if="errors.length > 0"
role="alert"
class="ui negative message"
red
>
<h4 class="header">
{{ t('components.federation.FetchButton.header.saveFailure') }}
@ -202,11 +190,10 @@ const { start: startPolling } = useTimeoutFn(poll, 1000, { immediate: false })
{{ error }}
</li>
</ul>
</div>
<div
</Alert>
<Alert
v-else-if="data && data.status === 'pending' && pollsCount >= MAX_POLLS"
role="alert"
class="ui warning message"
yellow
>
<h4 class="header">
{{ t('components.federation.FetchButton.header.pending') }}
@ -214,16 +201,17 @@ const { start: startPolling } = useTimeoutFn(poll, 1000, { immediate: false })
<p>
{{ t('components.federation.FetchButton.description.pending') }}
</p>
</Alert>
</div>
</div>
<div class="actions">
<template #actions>
<Button
v-if="data && data.status === 'finished'"
primary
@click.prevent="showModal = false; emit('refresh')"
>
{{ t('components.federation.FetchButton.button.reload') }}
</Button>
</div>
</template>
</Modal>
</Button>
</template>

View File

@ -146,7 +146,7 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`
<fetch-button
v-if="!channel?.actor?.is_local"
class="basic item"
:url="`channels/${channel?.uuid}/fetches/`"
:url="`federation/fetches/${channel?.id}/`"
@refresh="fetchData"
>
<i class="refresh icon" />&nbsp;