diff --git a/src/components/Chatbox.tsx b/src/components/Chatbox.tsx index 99ae967..6a18cd2 100644 --- a/src/components/Chatbox.tsx +++ b/src/components/Chatbox.tsx @@ -5,11 +5,12 @@ import './Chatbox.css'; import Messages from './Messages'; type ChatboxProps = { + ownerId: string; roomId: string; userId: string; }; -const Chat: React.FC = ({ roomId, userId }) => { +const Chat: React.FC = ({ ownerId, roomId, userId }) => { const [message, setMessage] = useState(''); // Message to be sent // Send message to database @@ -35,7 +36,7 @@ const Chat: React.FC = ({ roomId, userId }) => { return ( - + diff --git a/src/components/Messages.css b/src/components/Messages.css index 1ba6f50..e8b8070 100644 --- a/src/components/Messages.css +++ b/src/components/Messages.css @@ -14,6 +14,7 @@ ion-col { .message-grid { margin-right: 0; height: 100%; + user-select: auto; } .right-align { diff --git a/src/components/Messages.tsx b/src/components/Messages.tsx index 74fb5b5..bbaa623 100644 --- a/src/components/Messages.tsx +++ b/src/components/Messages.tsx @@ -4,6 +4,7 @@ import { currTime, db } from '../services/firebase'; import './Messages.css'; type MessagesProps = { + ownerId: string; roomId: string; userId: string; }; @@ -15,8 +16,7 @@ type Message = { content: string; }; -const Messages: React.FC = ({ roomId, userId }) => { - const [room] = useState(roomId); +const Messages: React.FC = ({ ownerId, roomId, userId }) => { const [chats, setChats] = useState([ { id: '', senderId: userId, sender: '', content: 'You have joined the room.' }, ]); // All received messages @@ -36,7 +36,7 @@ const Messages: React.FC = ({ roomId, userId }) => { useEffect(() => { const chatUnsubscribe = db .collection('rooms') - .doc(room) + .doc(roomId) .collection('messages') .orderBy('createdAt') .where('createdAt', '>', currTime) @@ -48,10 +48,15 @@ const Messages: React.FC = ({ roomId, userId }) => { const data = change.doc.data(); const user = await db.collection('users').doc(data.senderId).get(); if (data.type !== 'updateState') { + let displayName = user.data()?.name; + if (data.senderId === ownerId) { + displayName = displayName + ' 👑'; + } + newMsgs.push({ id: change.doc.id, senderId: data.senderId, - sender: user.data()?.name, + sender: displayName, content: data.content, }); } @@ -66,11 +71,12 @@ const Messages: React.FC = ({ roomId, userId }) => { return () => { chatUnsubscribe(); }; - }, [room]); + }, [roomId, ownerId]); // Always scroll to most recent chat message (bottom) useEffect(() => { let content = contentRef.current; + console.log(content); // Set timeout because DOM doesn't update immediately after 'chats' state is updated setTimeout(() => { diff --git a/src/pages/Room.tsx b/src/pages/Room.tsx index cc91d0a..b001439 100644 --- a/src/pages/Room.tsx +++ b/src/pages/Room.tsx @@ -154,7 +154,7 @@ const Room: React.FC> = ({ match }) => { - +