mirror of https://github.com/MaxLeiter/Drift
post/[id]: move function to new file to avoid invalid-segment-export
parent
b848aa9e40
commit
604f5d64d0
@ -0,0 +1,66 @@
|
||||
import { getPostById } from "@lib/server/prisma"
|
||||
import { getCurrentUser } from "@lib/server/session"
|
||||
import { notFound, redirect } from "next/navigation"
|
||||
import { cache } from "react"
|
||||
|
||||
export const getPost = cache(async (id: string) => {
|
||||
const post = await getPostById(id, {
|
||||
select: {
|
||||
visibility: true,
|
||||
authorId: true,
|
||||
title: true,
|
||||
description: true,
|
||||
id: true,
|
||||
createdAt: true,
|
||||
expiresAt: true,
|
||||
parentId: true,
|
||||
author: {
|
||||
select: {
|
||||
displayName: true,
|
||||
image: true
|
||||
}
|
||||
},
|
||||
files: {
|
||||
select: {
|
||||
id: true,
|
||||
content: true,
|
||||
updatedAt: true,
|
||||
title: true,
|
||||
html: true
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
if (!post) {
|
||||
return notFound()
|
||||
}
|
||||
|
||||
if (post.expiresAt && new Date(post.expiresAt) < new Date()) {
|
||||
return redirect("/expired")
|
||||
}
|
||||
|
||||
if (post.visibility === "public" || post.visibility === "unlisted") {
|
||||
return { post }
|
||||
}
|
||||
|
||||
if (post.visibility === "private") {
|
||||
const user = await getCurrentUser()
|
||||
if (user?.id === post.authorId || user?.role === "admin") {
|
||||
return { post }
|
||||
}
|
||||
return redirect("/new")
|
||||
}
|
||||
|
||||
if (post.visibility === "protected") {
|
||||
return {
|
||||
post: {
|
||||
visibility: "protected",
|
||||
authorId: post.authorId,
|
||||
id: post.id
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return { post }
|
||||
})
|
||||
Loading…
Reference in New Issue