diff --git a/frontend/src/components/headers/EditorHeader.tsx b/frontend/src/components/headers/EditorHeader.tsx
index cf73698f..e1e80f72 100644
--- a/frontend/src/components/headers/EditorHeader.tsx
+++ b/frontend/src/components/headers/EditorHeader.tsx
@@ -1,5 +1,7 @@
import {
AppBar,
+ Avatar,
+ AvatarGroup,
Paper,
Stack,
ToggleButton,
@@ -63,6 +65,17 @@ function EditorHeader() {
+
+ {editorState.doc?.getPresences()?.map((presence) => (
+
+ {presence.presence.name[0]}
+
+ ))}
+
{!editorState.shareRole && }
diff --git a/frontend/src/pages/document/Index.tsx b/frontend/src/pages/document/Index.tsx
index 517043a2..a35b57cc 100644
--- a/frontend/src/pages/document/Index.tsx
+++ b/frontend/src/pages/document/Index.tsx
@@ -16,10 +16,12 @@ import Preview from "../../components/editor/Preview";
import { Navigate, useParams, useSearchParams } from "react-router-dom";
import { useGetDocumentBySharingTokenQuery, useGetDocumentQuery } from "../../hooks/api/document";
import { AuthContext } from "../../contexts/AuthContext";
+import { selectUser } from "../../store/userSlice";
function EditorIndex() {
const dispatch = useDispatch();
const params = useParams();
+ const userStore = useSelector(selectUser);
const { isLoggedIn } = useContext(AuthContext);
const [searchParams] = useSearchParams();
const windowWidth = useWindowWidth();
@@ -34,8 +36,9 @@ function EditorIndex() {
let client: yorkie.Client;
let doc: yorkie.Document;
const yorkieDocuentId = document?.yorkieDocumentId || sharedDocument?.yorkieDocumentId;
+ const name = searchParams.get("token") ? "Anonymous" : userStore.data?.nickname;
- if (!yorkieDocuentId) return;
+ if (!yorkieDocuentId || !name) return;
const initializeYorkie = async () => {
client = new yorkie.Client(import.meta.env.VITE_YORKIE_API_ADDR, {
@@ -47,7 +50,7 @@ function EditorIndex() {
await client.attach(doc, {
initialPresence: {
- name: "Yorkie",
+ name,
color: Color(randomColor()).fade(0.15).toString(),
selection: null,
},
@@ -66,7 +69,13 @@ function EditorIndex() {
cleanUp();
};
- }, [dispatch, document?.yorkieDocumentId, sharedDocument?.yorkieDocumentId]);
+ }, [
+ dispatch,
+ document?.yorkieDocumentId,
+ sharedDocument?.yorkieDocumentId,
+ userStore.data?.nickname,
+ searchParams,
+ ]);
useEffect(() => {
if (!sharedDocument) return;