dh_demo

DreamHanks demo project
git clone git://git.lair.cx/dh_demo
Log | Files | Refs | README

commit 1c81845b704bda5bdb8aac422beafd6fc753f59b
parent 8be923a762db5c8670cc182bb3683c392c0cbef8
Author: Yongbin Kim <iam@yongbin.kim>
Date:   Tue, 31 Jan 2023 12:28:52 +0900

feat: pageChange 이벤트에서 다른 사용자의 편집인지 확인할 수 있도록 수정

Signed-off-by: Yongbin Kim <iam@yongbin.kim>

Diffstat:
Mpages/api/wiki/[slug]/[...path].tsx | 2+-
Mpages/edit/[slug]/[...path].tsx | 8+++++++-
2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/pages/api/wiki/[slug]/[...path].tsx b/pages/api/wiki/[slug]/[...path].tsx @@ -146,7 +146,7 @@ async function handlePut ( ]) const redis = await getRedis() - await redis.publish('event', `/edit/${slug}/${path}|pageChange`) + await redis.publish('event', `/edit/${slug}/${path}|pageChange|${token?.uid ?? '__anonymous'}`) } res.status(200).json({ status: 'ok' }) diff --git a/pages/edit/[slug]/[...path].tsx b/pages/edit/[slug]/[...path].tsx @@ -1,4 +1,5 @@ import { useSocket } from '@/components/contexts/SocketContext' +import { useToken } from '@/components/contexts/TokenContext' import { SubmitButton } from '@/components/elements/Button' import Fields from '@/components/form/Fields' import Form from '@/components/form/Form' @@ -65,13 +66,18 @@ interface WikiEditFormFields { export default function WikiEditPage (props: WikiEditPageProps) { const router = useRouter() const socket = useSocket() + const token = useToken() const [slug, path] = getSlugAndPath(router) // 다른 사용자가 문서를 편집했을 때 useEffect(() => { return socket.on('pageChange', ({ payload }) => { - toast('문서가 편집되었습니다.') + if (payload !== token?.uid?.toString()) { + toast('다른 사용자가 이 문서를 편집했습니다.') + } else { + toast('문서가 편집되었습니다.') + } }) }, [])