2022-07-01 13:58:45 +00:00
|
|
|
<script setup lang="ts">
|
|
|
|
|
import { useStore } from '~/store'
|
|
|
|
|
import { useGettext } from 'vue3-gettext'
|
|
|
|
|
import { get } from 'lodash-es'
|
|
|
|
|
import { humanSize } from '~/utils/filters'
|
|
|
|
|
import { computed } from 'vue'
|
|
|
|
|
|
|
|
|
|
import SignupForm from '~/components/auth/SignupForm.vue'
|
|
|
|
|
import LogoText from '~/components/LogoText.vue'
|
|
|
|
|
|
|
|
|
|
const store = useStore()
|
|
|
|
|
const nodeinfo = computed(() => store.state.instance.nodeinfo)
|
|
|
|
|
|
|
|
|
|
const { $pgettext } = useGettext()
|
|
|
|
|
const labels = computed(() => ({
|
|
|
|
|
title: $pgettext('Head/About/Title', 'About')
|
|
|
|
|
}))
|
|
|
|
|
|
|
|
|
|
const podName = computed(() => get(nodeinfo.value, 'metadata.nodeName') ?? 'Funkwhale')
|
|
|
|
|
const banner = computed(() => get(nodeinfo.value, 'metadata.banner'))
|
|
|
|
|
const shortDescription = computed(() => get(nodeinfo.value, 'metadata.shortDescription'))
|
|
|
|
|
|
|
|
|
|
const stats = computed(() => {
|
2022-11-15 15:15:05 +00:00
|
|
|
const users = get(nodeinfo.value, 'usage.users.activeMonth', 0)
|
2022-07-01 13:58:45 +00:00
|
|
|
const hours = get(nodeinfo.value, 'metadata.library.music.hours', 0)
|
2022-07-21 01:21:36 +00:00
|
|
|
|
2022-07-01 13:58:45 +00:00
|
|
|
if (users === null) {
|
|
|
|
|
return null
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return { users, hours }
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const openRegistrations = computed(() => get(nodeinfo.value, 'openRegistrations'))
|
2022-11-15 15:15:05 +00:00
|
|
|
const defaultUploadQuota = computed(() => humanSize(get(nodeinfo.value, 'metadata.defaultUploadQuota', 0) * 1000 * 1000))
|
2022-07-01 13:58:45 +00:00
|
|
|
|
|
|
|
|
const headerStyle = computed(() => {
|
|
|
|
|
if (!banner.value) {
|
|
|
|
|
return ''
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-21 01:21:36 +00:00
|
|
|
return {
|
|
|
|
|
backgroundImage: `url(${store.getters['instance/absoluteUrl'](banner.value)})`
|
2022-07-01 15:50:28 +00:00
|
|
|
}
|
2022-07-01 13:58:45 +00:00
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
|
2018-02-24 15:28:09 +01:00
|
|
|
<template>
|
2021-11-29 12:28:54 +01:00
|
|
|
<main
|
|
|
|
|
v-title="labels.title"
|
|
|
|
|
class="main pusher page-about"
|
|
|
|
|
>
|
2021-10-21 07:44:34 +00:00
|
|
|
<div class="ui container">
|
|
|
|
|
<div class="ui horizontally fitted basic stripe segment">
|
|
|
|
|
<div class="ui horizontally fitted basic very padded segment">
|
|
|
|
|
<div class="ui center aligned text container">
|
2019-09-23 11:14:54 +02:00
|
|
|
<div class="ui text container">
|
2021-10-21 07:44:34 +00:00
|
|
|
<div class="ui equal width compact stackable grid">
|
2021-11-29 12:28:54 +01:00
|
|
|
<div class="column" />
|
2021-10-21 07:44:34 +00:00
|
|
|
<div class="ten wide column">
|
|
|
|
|
<div class="ui vertically fitted basic segment">
|
|
|
|
|
<router-link to="/">
|
|
|
|
|
<logo-text />
|
|
|
|
|
</router-link>
|
|
|
|
|
</div>
|
2019-09-23 11:14:54 +02:00
|
|
|
</div>
|
2021-11-29 12:28:54 +01:00
|
|
|
<div class="column" />
|
2019-09-23 11:14:54 +02:00
|
|
|
</div>
|
2021-10-21 07:44:34 +00:00
|
|
|
<h2 class="header">
|
2021-11-29 12:28:54 +01:00
|
|
|
<translate translate-context="Content/About/Heading">
|
|
|
|
|
A social platform to enjoy and share music
|
|
|
|
|
</translate>
|
2021-10-21 07:44:34 +00:00
|
|
|
</h2>
|
|
|
|
|
<p>
|
2021-11-29 12:28:54 +01:00
|
|
|
<translate translate-context="Content/About/Paragraph">
|
|
|
|
|
Funkwhale is a community-driven project that lets you listen and share music and audio within a decentralized, open network.
|
|
|
|
|
</translate>
|
2021-10-21 07:44:34 +00:00
|
|
|
</p>
|
2019-09-23 11:14:54 +02:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2021-11-29 12:28:54 +01:00
|
|
|
<div class="ui hidden divider" />
|
2021-10-21 07:44:34 +00:00
|
|
|
<div class="ui vertically fitted basic stripe segment">
|
|
|
|
|
<div class="ui two stackable cards">
|
|
|
|
|
<div class="ui card">
|
2021-11-29 12:28:54 +01:00
|
|
|
<div
|
|
|
|
|
v-if="!$store.state.auth.authenticated"
|
|
|
|
|
class="signup-form content"
|
|
|
|
|
>
|
2021-10-21 07:44:34 +00:00
|
|
|
<h3 class="header">
|
2021-11-29 12:28:54 +01:00
|
|
|
<translate translate-context="*/Signup/Title">
|
|
|
|
|
Sign up
|
|
|
|
|
</translate>
|
2021-10-21 07:44:34 +00:00
|
|
|
</h3>
|
|
|
|
|
<template v-if="openRegistrations">
|
|
|
|
|
<p>
|
2021-11-29 12:28:54 +01:00
|
|
|
<translate translate-context="Content/About/Paragraph">
|
|
|
|
|
Sign up now to keep a track of your favorites, create playlists, discover new content and much more!
|
|
|
|
|
</translate>
|
2021-10-21 07:44:34 +00:00
|
|
|
</p>
|
|
|
|
|
<p v-if="defaultUploadQuota">
|
2021-11-29 12:28:54 +01:00
|
|
|
<translate
|
|
|
|
|
translate-context="Content/About/Paragraph"
|
|
|
|
|
:translate-params="{quota: defaultUploadQuota}"
|
|
|
|
|
>
|
|
|
|
|
Users on this pod also get %{ quota } of free storage to upload their own content!
|
|
|
|
|
</translate>
|
2021-10-21 07:44:34 +00:00
|
|
|
</p>
|
2021-11-29 12:28:54 +01:00
|
|
|
<signup-form
|
|
|
|
|
button-classes="success"
|
|
|
|
|
:show-login="false"
|
|
|
|
|
/>
|
2021-10-21 07:44:34 +00:00
|
|
|
</template>
|
|
|
|
|
<div v-else>
|
2021-11-29 12:28:54 +01:00
|
|
|
<p translate-context="Content/About/Paragraph">
|
|
|
|
|
Registrations are closed on this pod. You can signup on another pod using the link below.
|
|
|
|
|
</p>
|
2021-10-21 07:44:34 +00:00
|
|
|
|
2021-11-29 12:28:54 +01:00
|
|
|
<a
|
|
|
|
|
target="_blank"
|
|
|
|
|
rel="noopener"
|
|
|
|
|
href="https://funkwhale.audio/#get-started"
|
|
|
|
|
>
|
2021-10-21 07:44:34 +00:00
|
|
|
<translate translate-context="Content/About/Link">Find another pod</translate>
|
2021-12-23 14:40:54 +01:00
|
|
|
<i class="external alternate icon" />
|
2021-10-21 07:44:34 +00:00
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2021-11-29 12:28:54 +01:00
|
|
|
<div
|
|
|
|
|
v-else
|
|
|
|
|
class="signup-form content"
|
|
|
|
|
>
|
2021-12-23 14:40:54 +01:00
|
|
|
<h3 class="header">
|
|
|
|
|
<translate translate-context="*/Signup/Title">
|
|
|
|
|
Sign up
|
|
|
|
|
</translate>
|
|
|
|
|
<div class="ui positive message">
|
|
|
|
|
<div class="header">
|
|
|
|
|
<translate translate-context="Content/About/Message">
|
|
|
|
|
You're already signed in!
|
|
|
|
|
</translate>
|
|
|
|
|
</div>
|
|
|
|
|
<p>
|
|
|
|
|
<translate translate-contect="Content/About/Hello">
|
|
|
|
|
Hello
|
|
|
|
|
</translate> {{ $store.state.auth.username }}
|
|
|
|
|
</p>
|
2021-11-17 16:11:00 +01:00
|
|
|
</div>
|
2021-12-23 14:40:54 +01:00
|
|
|
</h3>
|
2021-11-17 16:11:00 +01:00
|
|
|
</div>
|
2021-10-21 07:44:34 +00:00
|
|
|
</div>
|
|
|
|
|
<div class="ui card">
|
2021-11-29 12:28:54 +01:00
|
|
|
<section
|
|
|
|
|
:class="['ui', 'head', {'with-background': banner}, 'vertical', 'center', 'aligned', 'stripe', 'segment']"
|
|
|
|
|
:style="headerStyle"
|
|
|
|
|
>
|
|
|
|
|
<h1>
|
|
|
|
|
<i class="music icon" />
|
|
|
|
|
{{ podName }}
|
|
|
|
|
</h1>
|
2021-10-21 07:44:34 +00:00
|
|
|
</section>
|
2021-12-23 14:40:54 +01:00
|
|
|
<div class="content pod-description">
|
2021-11-29 12:28:54 +01:00
|
|
|
<h3
|
|
|
|
|
id="description"
|
|
|
|
|
class="ui header"
|
|
|
|
|
>
|
|
|
|
|
<translate translate-context="Content/About/Header">
|
|
|
|
|
About this pod
|
|
|
|
|
</translate>
|
2021-10-21 07:44:34 +00:00
|
|
|
</h3>
|
2021-11-29 12:28:54 +01:00
|
|
|
<div
|
|
|
|
|
v-if="shortDescription"
|
|
|
|
|
class="sub header"
|
|
|
|
|
>
|
2021-10-21 07:44:34 +00:00
|
|
|
{{ shortDescription }}
|
|
|
|
|
</div>
|
|
|
|
|
<p v-else>
|
2021-11-29 12:28:54 +01:00
|
|
|
<translate translate-context="Content/About/Paragraph">
|
|
|
|
|
No description available.
|
|
|
|
|
</translate>
|
2021-10-21 07:44:34 +00:00
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<template v-if="stats">
|
|
|
|
|
<div class="statistics-container ui doubling grid">
|
2021-11-17 15:20:45 +01:00
|
|
|
<div class="two column row">
|
|
|
|
|
<div class="column">
|
|
|
|
|
<span class="statistics-figure ui text">
|
|
|
|
|
<span class="ui big text"><strong>{{ stats.users.toLocaleString($store.state.ui.momentLocale) }}</strong></span>
|
2021-11-29 12:28:54 +01:00
|
|
|
<br>
|
|
|
|
|
<translate
|
|
|
|
|
translate-context="Content/About/*"
|
|
|
|
|
:translate-n="stats.users"
|
|
|
|
|
translate-plural="active users"
|
|
|
|
|
>active user</translate>
|
2021-11-17 15:20:45 +01:00
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="column">
|
|
|
|
|
<span class="statistics-figure ui text">
|
2022-11-15 15:15:05 +00:00
|
|
|
<span class="ui big text"><strong>{{ stats.hours.toLocaleString($store.state.ui.momentLocale) }}</strong></span>
|
2021-11-29 12:28:54 +01:00
|
|
|
<br>
|
|
|
|
|
<translate
|
|
|
|
|
translate-context="Content/About/*"
|
2022-11-15 15:15:05 +00:00
|
|
|
:translate-n="stats.hours"
|
2021-11-29 12:28:54 +01:00
|
|
|
translate-plural="hours of music"
|
|
|
|
|
>hour of music</translate>
|
2021-11-17 15:20:45 +01:00
|
|
|
</span>
|
|
|
|
|
</div>
|
2021-10-21 07:44:34 +00:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
2021-11-29 12:28:54 +01:00
|
|
|
<router-link
|
|
|
|
|
to="/about/pod"
|
|
|
|
|
class="ui fluid basic secondary button"
|
|
|
|
|
>
|
|
|
|
|
<translate translate-context="Content/About/Paragraph">
|
|
|
|
|
Learn More
|
|
|
|
|
</translate>
|
2021-10-21 07:44:34 +00:00
|
|
|
</router-link>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2022-07-24 22:13:17 +00:00
|
|
|
<!-- TODO (wvffle): Remove style when migrate away from fomantic -->
|
|
|
|
|
<div
|
|
|
|
|
class="ui three stackable cards"
|
|
|
|
|
style="z-index: 1; position: relative;"
|
|
|
|
|
>
|
2021-11-29 12:28:54 +01:00
|
|
|
<router-link
|
|
|
|
|
to="/"
|
|
|
|
|
class="ui card"
|
|
|
|
|
>
|
2021-10-21 07:44:34 +00:00
|
|
|
<div class="content">
|
2021-11-29 12:28:54 +01:00
|
|
|
<h3
|
|
|
|
|
id="description"
|
|
|
|
|
class="ui header"
|
|
|
|
|
>
|
|
|
|
|
<translate translate-context="Content/About/Header">
|
|
|
|
|
Browse public content
|
|
|
|
|
</translate>
|
2021-10-21 07:44:34 +00:00
|
|
|
</h3>
|
|
|
|
|
<p>
|
2021-11-29 12:28:54 +01:00
|
|
|
<translate translate-context="Content/About/Paragraph">
|
|
|
|
|
Listen to public albums and playlists shared on this pod.
|
|
|
|
|
</translate>
|
2021-10-21 07:44:34 +00:00
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
</router-link>
|
2021-11-29 12:28:54 +01:00
|
|
|
<a
|
|
|
|
|
href="https://funkwhale.audio/#get-started"
|
|
|
|
|
class="ui card"
|
2021-12-12 09:58:51 +01:00
|
|
|
target="_blank"
|
2021-11-29 12:28:54 +01:00
|
|
|
>
|
2021-10-21 07:44:34 +00:00
|
|
|
<div class="content">
|
2021-11-29 12:28:54 +01:00
|
|
|
<h3
|
|
|
|
|
id="description"
|
|
|
|
|
class="ui header"
|
|
|
|
|
>
|
2021-10-21 07:44:34 +00:00
|
|
|
<translate translate-context="Content/About/Header">Find another pod</translate>
|
2021-12-23 14:40:54 +01:00
|
|
|
<i class="external alternate icon" />
|
2021-10-21 07:44:34 +00:00
|
|
|
</h3>
|
|
|
|
|
<p>
|
|
|
|
|
<translate translate-context="Content/About/Paragraph">Listen to public albums and playlists shared on this pod.</translate>
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
</a>
|
2021-11-29 12:28:54 +01:00
|
|
|
<a
|
|
|
|
|
href="https://funkwhale.audio/apps"
|
|
|
|
|
class="ui card"
|
2021-12-12 09:58:51 +01:00
|
|
|
target="_blank"
|
2021-11-29 12:28:54 +01:00
|
|
|
>
|
2021-10-21 07:44:34 +00:00
|
|
|
<div class="content">
|
2021-11-29 12:28:54 +01:00
|
|
|
<h3
|
|
|
|
|
id="description"
|
|
|
|
|
class="ui header"
|
|
|
|
|
>
|
2021-10-21 07:44:34 +00:00
|
|
|
<translate translate-context="Content/About/Header">Find an app</translate>
|
2021-12-23 14:40:54 +01:00
|
|
|
<i class="external alternate icon" />
|
2021-10-21 07:44:34 +00:00
|
|
|
</h3>
|
|
|
|
|
<p>
|
|
|
|
|
<translate translate-context="Content/About/Paragraph">Use Funkwhale on other devices with our apps.</translate>
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="ui fluid horizontally fitted basic clearing segment container">
|
2021-11-29 12:28:54 +01:00
|
|
|
<router-link
|
|
|
|
|
to="/about/pod"
|
|
|
|
|
class="ui right floated basic secondary button"
|
|
|
|
|
>
|
|
|
|
|
<translate translate-context="Content/About/Paragraph">
|
|
|
|
|
About this pod
|
|
|
|
|
</translate>
|
|
|
|
|
<i class="icon arrow right" />
|
2021-10-21 07:44:34 +00:00
|
|
|
</router-link>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2018-02-24 15:28:09 +01:00
|
|
|
</div>
|
2021-10-21 07:44:34 +00:00
|
|
|
</div>
|
2018-11-19 23:33:22 +01:00
|
|
|
</main>
|
2018-02-24 15:28:09 +01:00
|
|
|
</template>
|