Add version page

This commit is contained in:
Jai A
2020-10-21 21:24:39 -07:00
parent 8f487d7d4e
commit 969bec248a
3 changed files with 129 additions and 3 deletions

View File

@@ -32,7 +32,10 @@
Versions Versions
</nuxt-link> </nuxt-link>
<nuxt-link <nuxt-link
v-if="members.find((x) => x.user_id === this.$auth.user.id)" v-if="
this.$auth.loggedIn &&
members.find((x) => x.user_id === this.$auth.user.id)
"
:to="'/mod/' + mod.id + '/settings'" :to="'/mod/' + mod.id + '/settings'"
> >
<SettingsIcon /> <SettingsIcon />

View File

@@ -45,7 +45,7 @@
That's why we are giving That's why we are giving
<span>one hundred percent of ad revenue back</span> to modders, while <span>one hundred percent of ad revenue back</span> to modders, while
creating easy to use tools for every modder to publish their mods on creating easy to use tools for every modder to publish their mods on
on the Modrinth platform. the Modrinth platform.
</p> </p>
</div> </div>
<div class="right columns workflow"> <div class="right columns workflow">

View File

@@ -1,16 +1,61 @@
<template> <template>
<ModPage :mod="mod" :versions="versions" :members="members"> <ModPage :mod="mod" :versions="versions" :members="members">
<div class="version"></div> <div class="version">
<h3>{{ version.name }}</h3>
<div class="markdown-body" v-html="changelog"></div>
<hr />
<div class="columns metadata">
<div class="author">
<img :src="version.author.avatar_url" />
<p>{{ version.author.name }}</p>
</div>
<p>{{ version.downloads }} Downloads</p>
<div>
<FabricIcon
v-if="version.loaders.includes('fabric')"
stroke="#AC6C3A"
/>
<ForgeIcon
v-if="version.loaders.includes('forge')"
stroke="#8B81E6"
/>
</div>
<div class="game-versions">
<p v-for="gameVersion in version.game_versions" :key="gameVersion">
{{ gameVersion }}
</p>
</div>
</div>
<hr />
<div class="files">
<div v-for="file in version.files" :key="file.hashes.sha1">
<p>{{ file.filename }}</p>
<a :href="file.url" download>
<DownloadIcon />
</a>
</div>
</div>
</div>
</ModPage> </ModPage>
</template> </template>
<script> <script>
import axios from 'axios' import axios from 'axios'
import ModPage from '@/components/ModPage' import ModPage from '@/components/ModPage'
import xss from 'xss'
import marked from 'marked'
import DownloadIcon from '~/assets/images/utils/download.svg?inline'
import ForgeIcon from '~/assets/images/categories/forge.svg?inline'
import FabricIcon from '~/assets/images/categories/fabric.svg?inline'
export default { export default {
components: { components: {
ModPage, ModPage,
ForgeIcon,
FabricIcon,
DownloadIcon,
}, },
auth: false, auth: false,
async asyncData(data) { async asyncData(data) {
@@ -39,10 +84,19 @@ export default {
versions.push(res.data) versions.push(res.data)
} }
const version = versions.find((x) => x.id === data.params.version)
version.author = members.find((x) => x.user_id === version.author_id)
res = await axios.get(version.changelog_url)
const changelog = xss(marked(res.data))
return { return {
mod, mod,
versions, versions,
members, members,
version,
changelog,
} }
}, },
head() { head() {
@@ -92,5 +146,74 @@ export default {
border-radius: 0 0 0.5rem 0.5rem; border-radius: 0 0 0.5rem 0.5rem;
box-shadow: 0 2px 3px 1px var(--color-grey-2); box-shadow: 0 2px 3px 1px var(--color-grey-2);
padding: 1em; padding: 1em;
hr {
margin: 20px 0;
color: var(--color-grey-1);
}
.metadata {
align-items: center;
justify-content: space-between;
.author {
display: flex;
align-items: center;
img {
height: 50px;
width: 50px;
margin-right: 10px;
}
}
}
.game-versions {
max-width: 200px;
p {
margin: 0 0 0 10px;
padding: 4px;
font-size: 15px;
color: var(--color-text);
background-color: var(--color-grey-1);
display: inline-block;
}
}
.files {
display: flex;
div {
display: flex;
margin-right: 10px;
border: 1px solid var(--color-grey-1);
border-radius: var(--size-rounded-sm);
p {
margin-left: 10px;
margin-right: 10px;
}
a {
display: table-cell;
margin-left: auto;
width: 40px;
height: 60px;
background-color: var(--color-grey-1);
color: var(--color-grey-3);
svg {
margin-top: 15px;
height: 30px;
width: 40px;
}
&:hover,
&:focus {
background-color: var(--color-grey-3);
color: var(--color-grey-4);
}
}
}
}
} }
</style> </style>