From 436d0e76937d88e1bd5b4eda358c33d77a758cc4 Mon Sep 17 00:00:00 2001 From: npmrun <1549469775@qq.com> Date: Sat, 18 Apr 2026 20:27:49 +0800 Subject: [PATCH] feat(posts): remove newer/older nav; edit link on public post for owner; expose post id in public API Made-with: Cursor --- app/pages/@[publicSlug]/posts/[postSlug].vue | 37 ++++++++++- app/pages/me/posts/[id].vue | 93 ---------------------------- server/service/posts/index.ts | 1 + 3 files changed, 35 insertions(+), 96 deletions(-) diff --git a/app/pages/@[publicSlug]/posts/[postSlug].vue b/app/pages/@[publicSlug]/posts/[postSlug].vue index 8493397..3d23db4 100644 --- a/app/pages/@[publicSlug]/posts/[postSlug].vue +++ b/app/pages/@[publicSlug]/posts/[postSlug].vue @@ -2,6 +2,7 @@ import { unwrapApiBody, type ApiResponse } from '../../../utils/http/factory' import { renderSafeMarkdown } from '../../../utils/render-markdown' import { formatOccurredOnDisplay, occurredOnToIsoAttr } from '../../../utils/timeline-datetime' +import { useAuthSession } from '../../../composables/useAuthSession' definePageMeta({ layout: 'public', @@ -10,8 +11,10 @@ definePageMeta({ const route = useRoute() const publicSlug = computed(() => route.params.publicSlug as string) const postSlug = computed(() => route.params.postSlug as string) +const { user, loggedIn, refresh: refreshAuth } = useAuthSession() type Post = { + id: number title: string slug: string excerpt: string @@ -45,6 +48,23 @@ watchEffect(() => { useHead({ title: data.value.title }) } }) + +onMounted(() => { + void refreshAuth(true) +}) + +/** 当前登录用户是否为该公开主页所有者(可编辑此文) */ +const canEditPost = computed(() => { + const slug = user.value?.publicSlug + if (!loggedIn.value || !slug) { + return false + } + return slug === publicSlug.value +}) + +const editPostHref = computed(() => + data.value && canEditPost.value ? `/me/posts/${data.value.id}` : '', +)