diff --git a/front/src/components/federation/FetchButton.vue b/front/src/components/federation/FetchButton.vue index 9af32ba56..a11318749 100644 --- a/front/src/components/federation/FetchButton.vue +++ b/front/src/components/federation/FetchButton.vue @@ -2,13 +2,15 @@ import type { BackendError } from '~/types' import axios from 'axios' -import Modal from '~/components/ui/Modal.vue' -import Button from '~/components/ui/Button.vue' import { useTimeoutFn } from '@vueuse/core' import { ref } from 'vue' import { useI18n } from 'vue-i18n' +import Modal from '~/components/ui/Modal.vue' +import Button from '~/components/ui/Button.vue' + + const { t } = useI18n() interface Events { @@ -73,8 +75,11 @@ const { start: startPolling } = useTimeoutFn(poll, 1000, { immediate: false }) diff --git a/front/src/locales/en_US.json b/front/src/locales/en_US.json index 91a0965ef..e564c3548 100644 --- a/front/src/locales/en_US.json +++ b/front/src/locales/en_US.json @@ -3352,11 +3352,13 @@ "channelData": "Channel data" }, "label": { - "local": "Local" + "local": "Local", + "federated": "Federated" }, "link": { "django": "View in Django's admin", - "localProfile": "Open local profile" + "localProfile": "Open local profile", + "rss": "RSS feed" }, "modal": { "delete": { @@ -3439,7 +3441,8 @@ "activity": "Activity", "albumData": "Album data", "audioContent": "Audio content", - "local": "Local" + "local": "Local", + "federated": "Federated" }, "link": { "artist": "Artist", @@ -3492,7 +3495,8 @@ "activity": "Activity", "artistData": "Artist data", "audioContent": "Audio content", - "local": "Local" + "local": "Local", + "federated": "Federated" }, "link": { "albums": "Albums", @@ -3608,7 +3612,8 @@ }, "TagDetail": { "button": { - "delete": "Delete" + "delete": "Delete", + "more": "Show more" }, "header": { "activity": "Activity", @@ -3648,6 +3653,7 @@ "header": { "activity": "Activity", "local": "Local", + "federated": "Federated", "trackData": "Track data" }, "link": { @@ -3699,11 +3705,13 @@ "UploadDetail": { "button": { "delete": "Delete", - "download": "Download" + "download": "Download", + "more": "Show more" }, "header": { "activity": "Activity", "audioContent": "Audio content", + "federated": "Federated", "local": "Local", "uploadData": "Upload data" }, diff --git a/front/src/views/admin/ChannelDetail.vue b/front/src/views/admin/ChannelDetail.vue index d8ee4c0fa..45853a821 100644 --- a/front/src/views/admin/ChannelDetail.vue +++ b/front/src/views/admin/ChannelDetail.vue @@ -9,11 +9,20 @@ import axios from 'axios' import FetchButton from '~/components/federation/FetchButton.vue' import TagsList from '~/components/tags/List.vue' +import DangerousButton from '~/components/common/DangerousButton.vue' +import Header from '~/components/ui/Header.vue' +import Layout from '~/components/ui/Layout.vue' +import Spacer from '~/components/ui/Spacer.vue' +import HumanDate from '~/components/common/HumanDate.vue' +import Link from '~/components/ui/Link.vue' +import Heading from '~/components/ui/Heading.vue' +import OptionsButton from '~/components/ui/button/Options.vue' +import Popover from '~/components/ui/Popover.vue' +import PopoverItem from '~/components/ui/popover/PopoverItem.vue' +import Loader from '~/components/ui/Loader.vue' import useErrorHandler from '~/composables/useErrorHandler' -import DangerousButton from '~/components/common/DangerousButton.vue' - interface Props { id: number } @@ -24,18 +33,22 @@ const store = useStore() const { t } = useI18n() const router = useRouter() +const channel = ref() +const isLoading = ref(false) +const stats = ref() +const isLoadingStats = ref(false) +const open = ref(false) + const labels = computed(() => ({ statsWarning: t('views.admin.ChannelDetail.warning.stats') })) -const isLoading = ref(false) -const object = ref() const fetchData = async () => { isLoading.value = true try { const response = await axios.get(`manage/channels/${props.id}/`) - object.value = response.data + channel.value = response.data } catch (error) { useErrorHandler(error as Error) } @@ -43,8 +56,6 @@ const fetchData = async () => { isLoading.value = false } -const isLoadingStats = ref(false) -const stats = ref() const fetchStats = async () => { isLoadingStats.value = true @@ -58,8 +69,8 @@ const fetchStats = async () => { isLoadingStats.value = false } -fetchStats() fetchData() +fetchStats() const remove = async () => { isLoading.value = true @@ -78,361 +89,395 @@ const getQuery = (field: string, value: string) => `${field}:"${value}"`