funquail/front/src/components/About.vue

261 lines
8.7 KiB
Vue
Raw Normal View History

2022-07-01 13:58:45 +00:00
<script setup lang="ts">
import { useStore } from '~/store'
2022-09-08 14:32:45 +00:00
import { useI18n } from 'vue-i18n'
2022-07-01 13:58:45 +00:00
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)
2022-09-08 14:32:45 +00:00
const { t } = useI18n()
2022-07-01 13:58:45 +00:00
const labels = computed(() => ({
2022-09-08 14:32:45 +00:00
title: t('About')
2022-07-01 13:58:45 +00:00
}))
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 13:58:45 +00:00
})
</script>
<template>
2021-11-29 12:28:54 +01:00
<main
v-title="labels.title"
class="main pusher page-about"
>
<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">
<div class="ui equal width compact stackable grid">
2021-11-29 12:28:54 +01:00
<div class="column" />
<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>
<h2 class="header">
2022-09-10 16:31:48 +00:00
A social platform to enjoy and share music
</h2>
<p>
2022-09-10 16:31:48 +00:00
Funkwhale is a community-driven project that lets you listen and share music and audio within a decentralized, open network.
</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" />
<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"
>
<h3 class="header">
2022-09-10 16:31:48 +00:00
Sign up
</h3>
<template v-if="openRegistrations">
<p>
2022-09-10 16:31:48 +00:00
Sign up now to keep a track of your favorites, create playlists, discover new content and much more!
</p>
<p v-if="defaultUploadQuota">
2022-09-10 16:31:48 +00:00
Users on this pod also get %{ quota } of free storage to upload their own content!
</p>
2021-11-29 12:28:54 +01:00
<signup-form
button-classes="success"
:show-login="false"
/>
</template>
<div v-else>
2022-09-10 16:31:48 +00:00
<p>
2021-11-29 12:28:54 +01:00
Registrations are closed on this pod. You can signup on another pod using the link below.
</p>
2021-11-29 12:28:54 +01:00
<a
target="_blank"
rel="noopener"
href="https://funkwhale.audio/#get-started"
>
2022-09-10 16:31:48 +00:00
Find another pod
&nbsp;<i class="external alternate icon" />
</a>
</div>
</div>
2021-11-29 12:28:54 +01:00
<div
v-else
class="signup-form content"
>
<h3 class="header">
2022-09-10 16:31:48 +00:00
Sign up
<div class="ui positive message">
<div class="header">
2022-09-10 16:31:48 +00:00
You're already signed in!
</div>
<p>
2022-09-10 16:31:48 +00:00
Hello {{ $store.state.auth.username }}
</p>
</div>
</h3>
</div>
</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>
</section>
<div class="content pod-description">
2021-11-29 12:28:54 +01:00
<h3
id="description"
class="ui header"
>
2022-09-10 16:31:48 +00:00
About this pod
</h3>
2021-11-29 12:28:54 +01:00
<div
v-if="shortDescription"
class="sub header"
>
{{ shortDescription }}
</div>
<p v-else>
2022-09-10 16:31:48 +00:00
No description available.
</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>
2022-09-10 16:31:48 +00:00
{{ $t('active user | active users', stats.users) }}
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>
2022-09-10 16:31:48 +00:00
{{ $t('hour of music | hours of music', stats.hours) }}
2021-11-17 15:20:45 +01:00
</span>
</div>
</div>
</div>
</template>
2021-11-29 12:28:54 +01:00
<router-link
to="/about/pod"
class="ui fluid basic secondary button"
>
2022-09-10 16:31:48 +00:00
Learn More
</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"
>
<div class="content">
2021-11-29 12:28:54 +01:00
<h3
id="description"
class="ui header"
>
2022-09-10 16:31:48 +00:00
Browse public content
</h3>
<p>
2022-09-10 16:31:48 +00:00
Listen to public albums and playlists shared on this pod.
</p>
</div>
</router-link>
2021-11-29 12:28:54 +01:00
<a
href="https://funkwhale.audio/#get-started"
class="ui card"
target="_blank"
2021-11-29 12:28:54 +01:00
>
<div class="content">
2021-11-29 12:28:54 +01:00
<h3
id="description"
class="ui header"
>
2022-09-10 16:31:48 +00:00
Find another pod
&nbsp;<i class="external alternate icon" />
</h3>
<p>
2022-09-10 16:31:48 +00:00
Listen to public albums and playlists shared on this pod.
</p>
</div>
</a>
2021-11-29 12:28:54 +01:00
<a
href="https://funkwhale.audio/apps"
class="ui card"
target="_blank"
2021-11-29 12:28:54 +01:00
>
<div class="content">
2021-11-29 12:28:54 +01:00
<h3
id="description"
class="ui header"
>
2022-09-10 16:31:48 +00:00
Find an app
&nbsp;<i class="external alternate icon" />
</h3>
<p>
2022-09-10 16:31:48 +00:00
Use Funkwhale on other devices with our apps.
</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"
>
2022-09-10 16:31:48 +00:00
About this pod
2021-11-29 12:28:54 +01:00
<i class="icon arrow right" />
</router-link>
</div>
</div>
</div>
</div>
</main>
</template>