You've already forked AstralRinth
forked from didirus/AstralRinth
Better error handling, fix some more broken OG links
This commit is contained in:
@@ -1,15 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<h1>{{ error.message }}</h1>
|
<div class="container">
|
||||||
<NuxtLink to="/">
|
<NuxtLink to="/">
|
||||||
An error occurred! Click this text to go back home, and find your way
|
<h2>{{ error.message }}</h2>
|
||||||
back!
|
<p>
|
||||||
</NuxtLink>
|
An error occurred! Click this text to go back home, and find your way
|
||||||
|
back!
|
||||||
|
</p>
|
||||||
|
</NuxtLink>
|
||||||
|
</div>
|
||||||
|
<m-footer class="footer" centered />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import MFooter from '@/components/MFooter'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
components: {
|
||||||
|
MFooter,
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
error: {
|
error: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@@ -29,8 +39,12 @@ export default {
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.main {
|
.main {
|
||||||
margin: 0 auto;
|
margin: var(--spacing-card-sm) auto;
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
text-align: center;
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
@extend %card;
|
||||||
|
padding: var(--spacing-card-md) var(--spacing-card-lg);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -25,7 +25,6 @@
|
|||||||
<div class="right hero-image">
|
<div class="right hero-image">
|
||||||
<video
|
<video
|
||||||
src="~/assets/images/search.mp4"
|
src="~/assets/images/search.mp4"
|
||||||
alt="search"
|
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
loop
|
loop
|
||||||
muted
|
muted
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ export default {
|
|||||||
{
|
{
|
||||||
hid: 'og:url',
|
hid: 'og:url',
|
||||||
name: 'og:url',
|
name: 'og:url',
|
||||||
content: `https://modrinth.com/privacy`,
|
content: `https://modrinth.com/legal/privacy`,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ export default {
|
|||||||
{
|
{
|
||||||
hid: 'og:url',
|
hid: 'og:url',
|
||||||
name: 'og:url',
|
name: 'og:url',
|
||||||
content: `https://modrinth.com/tos`,
|
content: `https://modrinth.com/legal/terms`,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -282,55 +282,62 @@ export default {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const [
|
try {
|
||||||
mod,
|
const [
|
||||||
availableCategories,
|
mod,
|
||||||
availableLoaders,
|
availableCategories,
|
||||||
availableGameVersions,
|
availableLoaders,
|
||||||
availableLicenses,
|
availableGameVersions,
|
||||||
// availableDonationPlatforms,
|
availableLicenses,
|
||||||
] = (
|
// availableDonationPlatforms,
|
||||||
await Promise.all([
|
] = (
|
||||||
axios.get(
|
await Promise.all([
|
||||||
`https://api.modrinth.com/api/v1/mod/${data.params.id}`,
|
axios.get(
|
||||||
config
|
`https://api.modrinth.com/api/v1/mod/${data.params.id}`,
|
||||||
),
|
config
|
||||||
axios.get(`https://api.modrinth.com/api/v1/tag/category`),
|
),
|
||||||
axios.get(`https://api.modrinth.com/api/v1/tag/loader`),
|
axios.get(`https://api.modrinth.com/api/v1/tag/category`),
|
||||||
axios.get(`https://api.modrinth.com/api/v1/tag/game_version`),
|
axios.get(`https://api.modrinth.com/api/v1/tag/loader`),
|
||||||
axios.get(`https://api.modrinth.com/api/v1/tag/license`),
|
axios.get(`https://api.modrinth.com/api/v1/tag/game_version`),
|
||||||
// axios.get(`https://api.modrinth.com/api/v1/tag/donation_platform`),
|
axios.get(`https://api.modrinth.com/api/v1/tag/license`),
|
||||||
])
|
// axios.get(`https://api.modrinth.com/api/v1/tag/donation_platform`),
|
||||||
).map((it) => it.data)
|
])
|
||||||
|
).map((it) => it.data)
|
||||||
|
|
||||||
mod.license = {
|
mod.license = {
|
||||||
short: mod.license.id,
|
|
||||||
name: mod.license.name,
|
|
||||||
}
|
|
||||||
|
|
||||||
const res = await axios.get(mod.body_url)
|
|
||||||
|
|
||||||
return {
|
|
||||||
mod,
|
|
||||||
body: res.data,
|
|
||||||
clientSideType: {
|
|
||||||
label: mod.client_side,
|
|
||||||
id: mod.client_side,
|
|
||||||
},
|
|
||||||
serverSideType: {
|
|
||||||
label: mod.server_side,
|
|
||||||
id: mod.server_side,
|
|
||||||
},
|
|
||||||
availableCategories,
|
|
||||||
availableLoaders,
|
|
||||||
availableGameVersions,
|
|
||||||
availableLicenses,
|
|
||||||
license: {
|
|
||||||
short: mod.license.id,
|
short: mod.license.id,
|
||||||
name: mod.license.name,
|
name: mod.license.name,
|
||||||
},
|
}
|
||||||
license_url: mod.license.url,
|
|
||||||
// availableDonationPlatforms,
|
const res = await axios.get(mod.body_url)
|
||||||
|
|
||||||
|
return {
|
||||||
|
mod,
|
||||||
|
body: res.data,
|
||||||
|
clientSideType: {
|
||||||
|
label: mod.client_side,
|
||||||
|
id: mod.client_side,
|
||||||
|
},
|
||||||
|
serverSideType: {
|
||||||
|
label: mod.server_side,
|
||||||
|
id: mod.server_side,
|
||||||
|
},
|
||||||
|
availableCategories,
|
||||||
|
availableLoaders,
|
||||||
|
availableGameVersions,
|
||||||
|
availableLicenses,
|
||||||
|
license: {
|
||||||
|
short: mod.license.id,
|
||||||
|
name: mod.license.name,
|
||||||
|
},
|
||||||
|
license_url: mod.license.url,
|
||||||
|
// availableDonationPlatforms,
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
data.error({
|
||||||
|
statusCode: 404,
|
||||||
|
message: 'Mod not found',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -28,49 +28,56 @@ export default {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const mod = (
|
try {
|
||||||
await axios.get(
|
const mod = (
|
||||||
`https://api.modrinth.com/api/v1/mod/${data.params.id}`,
|
await axios.get(
|
||||||
config
|
`https://api.modrinth.com/api/v1/mod/${data.params.id}`,
|
||||||
)
|
config
|
||||||
).data
|
)
|
||||||
|
).data
|
||||||
|
|
||||||
const [members, versions] = (
|
const [members, versions] = (
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
axios.get(`https://api.modrinth.com/api/v1/team/${mod.team}/members`),
|
axios.get(`https://api.modrinth.com/api/v1/team/${mod.team}/members`),
|
||||||
axios.get(
|
axios.get(
|
||||||
`https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify(
|
`https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify(
|
||||||
mod.versions
|
mod.versions
|
||||||
|
)}`,
|
||||||
|
config
|
||||||
|
),
|
||||||
|
])
|
||||||
|
).map((it) => it.data)
|
||||||
|
|
||||||
|
const users = (
|
||||||
|
await axios.get(
|
||||||
|
`https://api.modrinth.com/api/v1/users?ids=${JSON.stringify(
|
||||||
|
members.map((it) => it.user_id)
|
||||||
)}`,
|
)}`,
|
||||||
config
|
config
|
||||||
),
|
)
|
||||||
])
|
).data
|
||||||
).map((it) => it.data)
|
|
||||||
|
|
||||||
const users = (
|
users.forEach((it) => {
|
||||||
await axios.get(
|
const index = members.findIndex((x) => x.user_id === it.id)
|
||||||
`https://api.modrinth.com/api/v1/users?ids=${JSON.stringify(
|
members[index].avatar_url = it.avatar_url
|
||||||
members.map((it) => it.user_id)
|
members[index].name = it.username
|
||||||
)}`,
|
})
|
||||||
config
|
|
||||||
)
|
|
||||||
).data
|
|
||||||
|
|
||||||
users.forEach((it) => {
|
const currentMember = data.$auth.loggedIn
|
||||||
const index = members.findIndex((x) => x.user_id === it.id)
|
? members.find((x) => x.user_id === data.$auth.user.id)
|
||||||
members[index].avatar_url = it.avatar_url
|
: null
|
||||||
members[index].name = it.username
|
|
||||||
})
|
|
||||||
|
|
||||||
const currentMember = data.$auth.loggedIn
|
return {
|
||||||
? members.find((x) => x.user_id === data.$auth.user.id)
|
mod,
|
||||||
: null
|
versions: versions.reverse(),
|
||||||
|
members,
|
||||||
return {
|
currentMember,
|
||||||
mod,
|
}
|
||||||
versions: versions.reverse(),
|
} catch {
|
||||||
members,
|
data.error({
|
||||||
currentMember,
|
statusCode: 404,
|
||||||
|
message: 'Mod not found',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -219,54 +219,61 @@ export default {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const mod = (
|
try {
|
||||||
await axios.get(
|
const mod = (
|
||||||
`https://api.modrinth.com/api/v1/mod/${data.params.id}`,
|
await axios.get(
|
||||||
config
|
`https://api.modrinth.com/api/v1/mod/${data.params.id}`,
|
||||||
)
|
|
||||||
).data
|
|
||||||
|
|
||||||
const [members, versions] = (
|
|
||||||
await Promise.all([
|
|
||||||
axios.get(
|
|
||||||
`https://api.modrinth.com/api/v1/team/${mod.team}/members`,
|
|
||||||
config
|
config
|
||||||
),
|
)
|
||||||
axios.get(
|
).data
|
||||||
`https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify(
|
|
||||||
mod.versions
|
|
||||||
)}`,
|
|
||||||
config
|
|
||||||
),
|
|
||||||
])
|
|
||||||
).map((it) => it.data)
|
|
||||||
|
|
||||||
const [users] = (
|
const [members, versions] = (
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
axios.get(
|
axios.get(
|
||||||
`https://api.modrinth.com/api/v1/users?ids=${JSON.stringify(
|
`https://api.modrinth.com/api/v1/team/${mod.team}/members`,
|
||||||
members.map((it) => it.user_id)
|
config
|
||||||
)}`,
|
),
|
||||||
config
|
axios.get(
|
||||||
),
|
`https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify(
|
||||||
])
|
mod.versions
|
||||||
).map((it) => it.data)
|
)}`,
|
||||||
|
config
|
||||||
|
),
|
||||||
|
])
|
||||||
|
).map((it) => it.data)
|
||||||
|
|
||||||
users.forEach((it) => {
|
const [users] = (
|
||||||
const index = members.findIndex((x) => x.user_id === it.id)
|
await Promise.all([
|
||||||
members[index].avatar_url = it.avatar_url
|
axios.get(
|
||||||
members[index].name = it.username
|
`https://api.modrinth.com/api/v1/users?ids=${JSON.stringify(
|
||||||
})
|
members.map((it) => it.user_id)
|
||||||
|
)}`,
|
||||||
|
config
|
||||||
|
),
|
||||||
|
])
|
||||||
|
).map((it) => it.data)
|
||||||
|
|
||||||
const currentMember = data.$auth.loggedIn
|
users.forEach((it) => {
|
||||||
? members.find((x) => x.user_id === data.$auth.user.id)
|
const index = members.findIndex((x) => x.user_id === it.id)
|
||||||
: null
|
members[index].avatar_url = it.avatar_url
|
||||||
|
members[index].name = it.username
|
||||||
|
})
|
||||||
|
|
||||||
return {
|
const currentMember = data.$auth.loggedIn
|
||||||
mod,
|
? members.find((x) => x.user_id === data.$auth.user.id)
|
||||||
versions: versions.reverse(),
|
: null
|
||||||
members,
|
|
||||||
currentMember,
|
return {
|
||||||
|
mod,
|
||||||
|
versions: versions.reverse(),
|
||||||
|
members,
|
||||||
|
currentMember,
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
data.error({
|
||||||
|
statusCode: 404,
|
||||||
|
message: 'Mod not found',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -126,61 +126,68 @@ export default {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const mod = (
|
try {
|
||||||
await axios.get(
|
const mod = (
|
||||||
`https://api.modrinth.com/api/v1/mod/${data.params.id}`,
|
await axios.get(
|
||||||
config
|
`https://api.modrinth.com/api/v1/mod/${data.params.id}`,
|
||||||
)
|
config
|
||||||
).data
|
)
|
||||||
|
).data
|
||||||
|
|
||||||
const [members, versions] = (
|
const [members, versions] = (
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
axios.get(`https://api.modrinth.com/api/v1/team/${mod.team}/members`),
|
axios.get(`https://api.modrinth.com/api/v1/team/${mod.team}/members`),
|
||||||
axios.get(
|
axios.get(
|
||||||
`https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify(
|
`https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify(
|
||||||
mod.versions
|
mod.versions
|
||||||
|
)}`,
|
||||||
|
config
|
||||||
|
),
|
||||||
|
])
|
||||||
|
).map((it) => it.data)
|
||||||
|
|
||||||
|
const users = (
|
||||||
|
await axios.get(
|
||||||
|
`https://api.modrinth.com/api/v1/users?ids=${JSON.stringify(
|
||||||
|
members.map((it) => it.user_id)
|
||||||
)}`,
|
)}`,
|
||||||
config
|
config
|
||||||
),
|
)
|
||||||
])
|
).data
|
||||||
).map((it) => it.data)
|
|
||||||
|
|
||||||
const users = (
|
users.forEach((it) => {
|
||||||
await axios.get(
|
const index = members.findIndex((x) => x.user_id === it.id)
|
||||||
`https://api.modrinth.com/api/v1/users?ids=${JSON.stringify(
|
members[index].avatar_url = it.avatar_url
|
||||||
members.map((it) => it.user_id)
|
members[index].name = it.username
|
||||||
)}`,
|
})
|
||||||
config
|
|
||||||
)
|
|
||||||
).data
|
|
||||||
|
|
||||||
users.forEach((it) => {
|
const version = versions.find((x) => x.id === data.params.version)
|
||||||
const index = members.findIndex((x) => x.user_id === it.id)
|
|
||||||
members[index].avatar_url = it.avatar_url
|
|
||||||
members[index].name = it.username
|
|
||||||
})
|
|
||||||
|
|
||||||
const version = versions.find((x) => x.id === data.params.version)
|
version.author = members.find((x) => x.user_id === version.author_id)
|
||||||
|
|
||||||
version.author = members.find((x) => x.user_id === version.author_id)
|
let primaryFile = version.files.find((file) => file.primary)
|
||||||
|
|
||||||
let primaryFile = version.files.find((file) => file.primary)
|
if (!primaryFile) {
|
||||||
|
primaryFile = version.files[0]
|
||||||
|
}
|
||||||
|
|
||||||
if (!primaryFile) {
|
const currentMember = data.$auth.loggedIn
|
||||||
primaryFile = version.files[0]
|
? members.find((x) => x.user_id === data.$auth.user.id)
|
||||||
}
|
: null
|
||||||
|
|
||||||
const currentMember = data.$auth.loggedIn
|
return {
|
||||||
? members.find((x) => x.user_id === data.$auth.user.id)
|
mod,
|
||||||
: null
|
versions,
|
||||||
|
members,
|
||||||
return {
|
version,
|
||||||
mod,
|
primaryFile,
|
||||||
versions,
|
currentMember,
|
||||||
members,
|
}
|
||||||
version,
|
} catch {
|
||||||
primaryFile,
|
data.error({
|
||||||
currentMember,
|
statusCode: 404,
|
||||||
|
message: 'Version not found',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -232,53 +232,60 @@ export default {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const mod = (
|
try {
|
||||||
await axios.get(
|
const mod = (
|
||||||
`https://api.modrinth.com/api/v1/mod/${data.params.id}`,
|
await axios.get(
|
||||||
config
|
`https://api.modrinth.com/api/v1/mod/${data.params.id}`,
|
||||||
)
|
config
|
||||||
).data
|
)
|
||||||
|
).data
|
||||||
|
|
||||||
const [members, versions, selectableLoaders, selectableVersions] = (
|
const [members, versions, selectableLoaders, selectableVersions] = (
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
axios.get(`https://api.modrinth.com/api/v1/team/${mod.team}/members`),
|
axios.get(`https://api.modrinth.com/api/v1/team/${mod.team}/members`),
|
||||||
axios.get(
|
axios.get(
|
||||||
`https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify(
|
`https://api.modrinth.com/api/v1/versions?ids=${JSON.stringify(
|
||||||
mod.versions
|
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 users = (
|
||||||
|
await axios.get(
|
||||||
|
`https://api.modrinth.com/api/v1/users?ids=${JSON.stringify(
|
||||||
|
members.map((it) => it.user_id)
|
||||||
)}`,
|
)}`,
|
||||||
config
|
config
|
||||||
),
|
)
|
||||||
axios.get(`https://api.modrinth.com/api/v1/tag/loader`),
|
).data
|
||||||
axios.get(`https://api.modrinth.com/api/v1/tag/game_version`),
|
|
||||||
])
|
|
||||||
).map((it) => it.data)
|
|
||||||
|
|
||||||
const users = (
|
users.forEach((it) => {
|
||||||
await axios.get(
|
const index = members.findIndex((x) => x.user_id === it.id)
|
||||||
`https://api.modrinth.com/api/v1/users?ids=${JSON.stringify(
|
members[index].avatar_url = it.avatar_url
|
||||||
members.map((it) => it.user_id)
|
members[index].name = it.username
|
||||||
)}`,
|
})
|
||||||
config
|
|
||||||
)
|
|
||||||
).data
|
|
||||||
|
|
||||||
users.forEach((it) => {
|
const currentMember = data.$auth.loggedIn
|
||||||
const index = members.findIndex((x) => x.user_id === it.id)
|
? members.find((x) => x.user_id === data.$auth.user.id)
|
||||||
members[index].avatar_url = it.avatar_url
|
: null
|
||||||
members[index].name = it.username
|
|
||||||
})
|
|
||||||
|
|
||||||
const currentMember = data.$auth.loggedIn
|
return {
|
||||||
? members.find((x) => x.user_id === data.$auth.user.id)
|
mod,
|
||||||
: null
|
versions: versions.reverse(),
|
||||||
|
members,
|
||||||
return {
|
selectableLoaders,
|
||||||
mod,
|
selectableVersions,
|
||||||
versions: versions.reverse(),
|
currentMember,
|
||||||
members,
|
}
|
||||||
selectableLoaders,
|
} catch {
|
||||||
selectableVersions,
|
data.error({
|
||||||
currentMember,
|
statusCode: 404,
|
||||||
|
message: 'Mod not found',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@@ -99,28 +99,37 @@ export default {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
let res = await axios.get(
|
try {
|
||||||
`https://api.modrinth.com/api/v1/user/${data.params.id}`,
|
let res = await axios.get(
|
||||||
config
|
`https://api.modrinth.com/api/v1/user/${data.params.id}`,
|
||||||
)
|
|
||||||
const user = res.data
|
|
||||||
|
|
||||||
let mods = []
|
|
||||||
res = await axios.get(
|
|
||||||
`https://api.modrinth.com/api/v1/user/${data.params.id}/mods`,
|
|
||||||
config
|
|
||||||
)
|
|
||||||
if (res.data) {
|
|
||||||
res = await axios.get(
|
|
||||||
`https://api.modrinth.com/api/v1/mods?ids=${JSON.stringify(res.data)}`,
|
|
||||||
config
|
config
|
||||||
)
|
)
|
||||||
mods = res.data
|
const user = res.data
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
let mods = []
|
||||||
mods,
|
res = await axios.get(
|
||||||
user,
|
`https://api.modrinth.com/api/v1/user/${data.params.id}/mods`,
|
||||||
|
config
|
||||||
|
)
|
||||||
|
if (res.data) {
|
||||||
|
res = await axios.get(
|
||||||
|
`https://api.modrinth.com/api/v1/mods?ids=${JSON.stringify(
|
||||||
|
res.data
|
||||||
|
)}`,
|
||||||
|
config
|
||||||
|
)
|
||||||
|
mods = res.data
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
mods,
|
||||||
|
user,
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
data.error({
|
||||||
|
statusCode: 404,
|
||||||
|
message: 'User not found',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
Reference in New Issue
Block a user