Robert Schäfer 40224ab18d Fix bug if id is undefined on post route
@itbsStefan this is the fix for the bug during our pair-programming. The
request to the server was returning *all* posts if `id` was undefined
and the post for redirecting was the most recently created.
2019-03-26 20:03:11 +01:00

56 lines
1.1 KiB
Vue

<template>
<nuxt-child />
</template>
<script>
import gql from 'graphql-tag'
const queryId = gql`
query($idOrSlug: ID) {
User(id: $idOrSlug) {
id
slug
}
}
`
const querySlug = gql`
query($idOrSlug: String) {
User(slug: $idOrSlug) {
id
slug
}
}
`
export default {
async asyncData(context) {
const {
params: { id, slug },
redirect,
error,
app: { apolloProvider }
} = context
const idOrSlug = id
const variables = { idOrSlug }
const client = apolloProvider.defaultClient
let response
let user
response = await client.query({ query: queryId, variables })
user = response.data.User[0]
if (user && user.slug === slug) return // all good
if (user && user.slug !== slug) {
return redirect(`/profile/${user.id}/${user.slug}`)
}
response = await client.query({ query: querySlug, variables })
user = response.data.User[0]
if (user) return redirect(`/profile/${user.id}/${user.slug}`)
const message = 'This user could not be found'
return error({ statusCode: 404, message })
}
}
</script>