2022-04-15 14:24:30 +00:00
|
|
|
|
<template>
|
2022-04-21 22:58:32 +00:00
|
|
|
|
<div v-koel-focus class="about text-secondary" data-testid="about-modal" tabindex="0" @keydown.esc="close">
|
2022-04-15 14:24:30 +00:00
|
|
|
|
<header>
|
|
|
|
|
<h1 class="text-white">About Koel</h1>
|
|
|
|
|
</header>
|
|
|
|
|
|
|
|
|
|
<main>
|
|
|
|
|
<div class="logo">
|
2022-04-21 22:58:32 +00:00
|
|
|
|
<img alt="Koel's logo" src="@/../img/logo.svg" width="128">
|
2022-04-15 14:24:30 +00:00
|
|
|
|
</div>
|
|
|
|
|
|
2022-04-24 08:50:45 +00:00
|
|
|
|
<p class="current-version">{{ commonStore.state.currentVersion }}</p>
|
2022-04-15 14:24:30 +00:00
|
|
|
|
|
|
|
|
|
<p v-if="shouldDisplayVersionUpdate && hasNewVersion" class="new-version">
|
|
|
|
|
<a :href="latestVersionUrl" target="_blank">
|
2022-04-24 08:50:45 +00:00
|
|
|
|
A new Koel version is available ({{ commonStore.state.latestVersion }}).
|
2022-04-15 14:24:30 +00:00
|
|
|
|
</a>
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p class="author">
|
2022-04-21 22:58:32 +00:00
|
|
|
|
Made with ❤️ by
|
|
|
|
|
<a href="https://github.com/phanan" rel="noopener" target="_blank">Phan An</a>
|
2022-04-15 14:24:30 +00:00
|
|
|
|
and quite a few
|
2022-04-21 22:58:32 +00:00
|
|
|
|
<a href="https://github.com/koel/core/graphs/contributors" rel="noopener" target="_blank">awesome</a>
|
|
|
|
|
<a href="https://github.com/koel/koel/graphs/contributors" rel="noopener" target="_blank">contributors</a>.
|
2022-04-15 14:24:30 +00:00
|
|
|
|
</p>
|
|
|
|
|
|
2022-04-21 22:58:32 +00:00
|
|
|
|
<p v-if="demo" class="demo-credits">
|
2022-04-15 14:24:30 +00:00
|
|
|
|
Demo music provided by
|
2022-04-21 22:58:32 +00:00
|
|
|
|
<a href="https://www.bensound.com" rel="noopener" target="_blank">Bensound</a>.
|
2022-04-15 14:24:30 +00:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Loving Koel? Please consider supporting its development via
|
2022-04-21 22:58:32 +00:00
|
|
|
|
<a href="https://github.com/users/phanan/sponsorship" rel="noopener" target="_blank">GitHub Sponsors</a>
|
2022-04-15 14:24:30 +00:00
|
|
|
|
and/or
|
2022-04-21 22:58:32 +00:00
|
|
|
|
<a href="https://opencollective.com/koel" rel="noopener" target="_blank">OpenCollective</a>.
|
2022-04-15 14:24:30 +00:00
|
|
|
|
</p>
|
|
|
|
|
</main>
|
|
|
|
|
|
|
|
|
|
<footer>
|
2022-04-21 22:58:32 +00:00
|
|
|
|
<Btn data-test="close-modal-btn" red rounded @click.prevent="close">Close</Btn>
|
2022-04-15 14:24:30 +00:00
|
|
|
|
</footer>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
2022-04-15 17:00:08 +00:00
|
|
|
|
<script lang="ts" setup>
|
2022-04-15 14:24:30 +00:00
|
|
|
|
import compareVersions from 'compare-versions'
|
2022-04-21 22:58:32 +00:00
|
|
|
|
import { defineAsyncComponent } from 'vue'
|
2022-04-24 08:50:45 +00:00
|
|
|
|
import { commonStore, userStore } from '@/stores'
|
2022-04-15 14:24:30 +00:00
|
|
|
|
|
2022-04-21 18:39:18 +00:00
|
|
|
|
const Btn = defineAsyncComponent(() => import('@/components/ui/Btn.vue'))
|
2022-04-15 14:24:30 +00:00
|
|
|
|
|
2022-04-15 17:00:08 +00:00
|
|
|
|
const demo = NODE_ENV === 'demo'
|
2022-04-15 14:24:30 +00:00
|
|
|
|
|
2022-04-24 08:50:45 +00:00
|
|
|
|
const latestVersionUrl = `https://github.com/phanan/koel/releases/tag/${commonStore.state.latestVersion}`
|
2022-04-21 22:58:32 +00:00
|
|
|
|
const shouldDisplayVersionUpdate = userStore.state.current.is_admin
|
2022-04-15 14:24:30 +00:00
|
|
|
|
|
2022-04-24 08:50:45 +00:00
|
|
|
|
const hasNewVersion = compareVersions.compare(commonStore.state.latestVersion, commonStore.state.currentVersion, '>')
|
2022-04-15 17:00:08 +00:00
|
|
|
|
|
|
|
|
|
const emit = defineEmits(['close'])
|
|
|
|
|
const close = () => emit('close')
|
2022-04-15 14:24:30 +00:00
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.about {
|
|
|
|
|
text-align: center;
|
|
|
|
|
background: var(--color-bg-primary);
|
|
|
|
|
max-width: 480px;
|
|
|
|
|
width: 90%;
|
|
|
|
|
border-radius: .6rem;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
|
|
|
|
main {
|
|
|
|
|
padding: 2rem;
|
|
|
|
|
|
|
|
|
|
p {
|
|
|
|
|
margin: 1rem 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
header, footer {
|
|
|
|
|
padding: 1rem;
|
|
|
|
|
background: rgba(255, 255, 255, .05);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
header {
|
|
|
|
|
font-size: 1.2rem;
|
|
|
|
|
border-bottom: 1px solid rgba(255, 255, 255, .1);
|
|
|
|
|
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
a {
|
|
|
|
|
color: var(--color-text-primary);
|
|
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
|
color: var(--color-highlight);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|