From 4c2c2a6e4d9d89592afb31a61d07e9d76f899dd9 Mon Sep 17 00:00:00 2001 From: upsiflu Date: Wed, 18 Dec 2024 13:13:02 +0100 Subject: [PATCH] feat(about): merge about and about-this-pod pages --- front/src/components/About.vue | 395 +++++++++++++++++++++++++++++++-- 1 file changed, 382 insertions(+), 13 deletions(-) diff --git a/front/src/components/About.vue b/front/src/components/About.vue index ca50bbaf7..d4320c32d 100644 --- a/front/src/components/About.vue +++ b/front/src/components/About.vue @@ -7,6 +7,8 @@ import { computed } from 'vue' import SignupForm from '~/components/auth/SignupForm.vue' import LogoText from '~/components/LogoText.vue' +import type { NodeInfo } from '~/store/instance' +import useMarkdown from '~/composables/useMarkdown' const store = useStore() const nodeinfo = computed(() => store.state.instance.nodeinfo) @@ -28,10 +30,22 @@ const stats = computed(() => { return null } - return { users, hours } + const info = nodeinfo.value ?? {} as NodeInfo + + const data = { + users: get(info, 'usage.users.activeMonth', null), + hours: get(info, 'metadata.content.local.hoursOfContent', null), + artists: get(info, 'metadata.content.local.artists.total', null), + albums: get(info, 'metadata.content.local.albums.total', null), + tracks: get(info, 'metadata.content.local.tracks.total', null), + listenings: get(info, 'metadata.usage.listenings.total', null) + } + + return { users, hours, data } }) const openRegistrations = computed(() => get(nodeinfo.value, 'openRegistrations')) + const defaultUploadQuota = computed(() => humanSize(get(nodeinfo.value, 'metadata.defaultUploadQuota', 0) * 1000 * 1000)) const headerStyle = computed(() => { @@ -43,6 +57,25 @@ const headerStyle = computed(() => { backgroundImage: `url(${store.getters['instance/absoluteUrl'](banner.value)})` } }) + +const longDescription = useMarkdown(() => get(nodeinfo.value, 'metadata.longDescription', '')) +const rules = useMarkdown(() => get(nodeinfo.value, 'metadata.rules', '')) +const terms = useMarkdown(() => get(nodeinfo.value, 'metadata.terms', '')) +const contactEmail = computed(() => get(nodeinfo.value, 'metadata.contactEmail')) +const anonymousCanListen = computed(() => { + const features = get(nodeinfo.value, 'metadata.metadata.feature', []) as string[] + const hasAnonymousCanListen = features.includes('anonymousCanListen') + return hasAnonymousCanListen +}) +const allowListEnabled = computed(() => get(nodeinfo.value, 'metadata.allowList.enabled')) +const version = computed(() => get(nodeinfo.value, 'software.version')) +const federationEnabled = computed(() => { + const features = get(nodeinfo.value, 'metadata.metadata.feature', []) as string[] + const hasAnonymousCanListen = features.includes('federation') + return hasAnonymousCanListen +}) + +const onDesktop = computed(() => window.innerWidth > 800)