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:
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('문서가 편집되었습니다.')
+ }
})
}, [])