Peformance fixes for mod pages, Fix #52, #51

This commit is contained in:
Jai A
2020-12-10 17:01:00 -07:00
parent f5ed0b700f
commit 7ac56b1a0c
11 changed files with 98 additions and 86 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 MiB

BIN
assets/images/search.mp4 Normal file

Binary file not shown.

View File

@@ -1,5 +1,4 @@
<template> <template>
<!-- Bidvertiser2046222 -->
<div class="layout"> <div class="layout">
<aside> <aside>
<section class="navbar columns"> <section class="navbar columns">

19
package-lock.json generated
View File

@@ -7316,9 +7316,9 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
}, },
"ini": { "ini": {
"version": "1.3.5", "version": "1.3.7",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ=="
}, },
"inquirer": { "inquirer": {
"version": "7.3.3", "version": "7.3.3",
@@ -10425,6 +10425,14 @@
"uniq": "^1.0.1" "uniq": "^1.0.1"
} }
}, },
"postscribe": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/postscribe/-/postscribe-2.0.8.tgz",
"integrity": "sha1-W3pTqtS2kLbC91gY/O/nRJD0ENU=",
"requires": {
"prescribe": ">=1.1.2"
}
},
"prelude-ls": { "prelude-ls": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -10436,6 +10444,11 @@
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
"integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw="
}, },
"prescribe": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/prescribe/-/prescribe-1.1.3.tgz",
"integrity": "sha1-jTEiRF8/uvTExYF+pSehf8gTnuY="
},
"prettier": { "prettier": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz",

View File

@@ -18,13 +18,19 @@
<p> <p>
We implemented <span>fast and adaptable</span> search algorithms so We implemented <span>fast and adaptable</span> search algorithms so
you don't have to wait, while creating a responsive interface that you don't have to wait, while creating a responsive interface that
makes sense. Modrinth <span>imports from other platforms</span> along makes sense. Modrinth is full of elegant mod discovery and a platform
with it's own, so you can stick to elegant mod discovery and a
platform which just works. platform which just works.
</p> </p>
</div> </div>
<div class="right hero-image"> <div class="right hero-image">
<img src="~/assets/images/search.gif" alt="search" loading="lazy" /> <video
src="~/assets/images/search.mp4"
alt="search"
loading="lazy"
loop
muted
autoplay
/>
</div> </div>
</div> </div>
<div class="default-hero columns"> <div class="default-hero columns">
@@ -281,7 +287,8 @@ export default {
padding-top: 75px; padding-top: 75px;
padding-right: 10%; padding-right: 10%;
img { img,
video {
height: 300px; height: 300px;
} }
} }

View File

@@ -27,36 +27,35 @@ export default {
) )
).data ).data
const members = ( const [members, versions, body] = (
await axios.get( await Promise.all([
`https://api.modrinth.com/api/v1/team/${mod.team}/members`, axios.get(
config `https://api.modrinth.com/api/v1/team/${mod.team}/members`,
)
).data
for (let i = 0; i < members.length; i++) {
members[i].avatar_url = (
await axios.get(
`https://api.modrinth.com/api/v1/user/${members[i].user_id}`,
config config
) ),
).data.avatar_url axios.get(
} `https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify(
mod.versions
)}`,
config
),
axios.get(mod.body_url),
])
).map((it) => it.data)
const versions = ( const users = await Promise.all(
await axios.get( members.map((it) =>
`https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify( axios.get(`https://api.modrinth.com/api/v1/user/${it.user_id}`, config)
mod.versions
)}`,
config
) )
).data.reverse() )
users.forEach(
const body = (await axios.get(mod.body_url)).data (it, index) => (members[index].avatar_url = it.data.avatar_url)
)
return { return {
mod, mod,
body, body,
versions, versions: versions.reverse(),
members, members,
} }
}, },

View File

@@ -41,13 +41,13 @@
<h4>Created</h4> <h4>Created</h4>
<p <p
v-tooltip=" v-tooltip="
$dayjs(version.published).format( $dayjs(version.date_published).format(
'[Created on] YYYY-MM-DD [at] HH:mm A' '[Created on] YYYY-MM-DD [at] HH:mm A'
) )
" "
class="value" class="value"
> >
{{ $dayjs(version.published).fromNow() }} {{ $dayjs(version.date_published).fromNow() }}
</p> </p>
</div> </div>
</div> </div>
@@ -134,29 +134,29 @@ export default {
) )
).data ).data
const members = ( const [members, versions] = (
await axios.get( await Promise.all([
`https://api.modrinth.com/api/v1/team/${mod.team}/members`, axios.get(
config `https://api.modrinth.com/api/v1/team/${mod.team}/members`,
)
).data
for (let i = 0; i < members.length; i++) {
members[i].avatar_url = (
await axios.get(
`https://api.modrinth.com/api/v1/user/${members[i].user_id}`,
config config
) ),
).data.avatar_url axios.get(
} `https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify(
mod.versions
)}`,
config
),
])
).map((it) => it.data)
const versions = ( const users = await Promise.all(
await axios.get( members.map((it) =>
`https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify( axios.get(`https://api.modrinth.com/api/v1/user/${it.user_id}`, config)
mod.versions
)}`,
config
) )
).data.reverse() )
users.forEach(
(it, index) => (members[index].avatar_url = it.data.avatar_url)
)
const version = versions.find((x) => x.id === data.params.version) const version = versions.find((x) => x.id === data.params.version)

View File

@@ -52,7 +52,7 @@
</span> </span>
</td> </td>
<td>{{ version.downloads }}</td> <td>{{ version.downloads }}</td>
<td>{{ $dayjs(version.published).format('YYYY-MM-DD') }}</td> <td>{{ $dayjs(version.date_published).format('YYYY-MM-DD') }}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -233,41 +233,35 @@ export default {
) )
).data ).data
const members = ( const [members, versions, selectableLoaders, selectableVersions] = (
await axios.get( await Promise.all([
`https://api.modrinth.com/api/v1/team/${mod.team}/members`, axios.get(
config `https://api.modrinth.com/api/v1/team/${mod.team}/members`,
)
).data
for (let i = 0; i < members.length; i++) {
members[i].avatar_url = (
await axios.get(
`https://api.modrinth.com/api/v1/user/${members[i].user_id}`,
config config
) ),
).data.avatar_url axios.get(
} `https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify(
mod.versions
)}`,
config
),
axios.get(`https://api.modrinth.com/api/v1/tag/loader`),
axios.get(`https://api.modrinth.com/api/v1/tag/game_version`),
])
).map((it) => it.data)
const versions = ( const users = await Promise.all(
await axios.get( members.map((it) =>
`https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify( axios.get(`https://api.modrinth.com/api/v1/user/${it.user_id}`, config)
mod.versions
)}`,
config
) )
).data.reverse() )
users.forEach(
const selectableLoaders = ( (it, index) => (members[index].avatar_url = it.data.avatar_url)
await axios.get(`https://api.modrinth.com/api/v1/tag/loader`) )
).data
const selectableVersions = (
await axios.get(`https://api.modrinth.com/api/v1/tag/game_version`)
).data
return { return {
mod, mod,
versions, versions: versions.reverse(),
members, members,
selectableLoaders, selectableLoaders,
selectableVersions, selectableVersions,

View File

@@ -155,7 +155,7 @@
for="body" for="body"
title="You can type the of the long form of your description here." title="You can type the of the long form of your description here."
> >
Description Body
</label> </label>
</h3> </h3>
<span> <span>

View File

@@ -22,11 +22,11 @@
<div class="stat"> <div class="stat">
<CalendarIcon /> <CalendarIcon />
<div class="info"> <div class="info">
<h4>Created</h4> <h4>Joined</h4>
<p <p
v-tooltip=" v-tooltip="
$dayjs(user.created).format( $dayjs(user.created).format(
'[Created on] YYYY-MM-DD [at] HH:mm A' '[Joined] YYYY-MM-DD [at] HH:mm A'
) )
" "
class="value" class="value"