import { TextField, Stack, TooltipHost } from '@fluentui/react' import { nanoid } from 'nanoid' import { FC, ReactNode, useCallback, useEffect, useRef, useState } from 'react' import { messages, fluid } from './styles' import { IChatMessage, sendChat, useLocalState } from '../../state' import { HoverButton } from '../hover-button' import { userLabel } from '../../utils/helpers' const Messages: FC<{ children: ReactNode }> = ({ children }) => { const [name, id] = useLocalState(state => [ state.preferences.userName, state.sessionId, ]) const [message, setMessage] = useState('') const scrolling = useRef(null) const scrollToBottom = () => { const s = scrolling.current if (!s) return s.scrollBy({ top: s.scrollHeight, behavior: 'smooth' }) } useEffect(() => { scrollToBottom() }, [children]) const handleSubmit = useCallback(() => { if (!message.trim()) return const msg: IChatMessage = { id: nanoid(), mine: true, text: message.trim().replace(/\n\n/g, '\n'), userLabel: userLabel({ userName: name, userId: id, }), } sendChat(msg) setMessage('') }, [id, message, name]) return (
{children}
val !== undefined && setMessage(val)} onKeyDown={e => { if (e.shiftKey && e.key === 'Enter') { e.preventDefault() handleSubmit() } }} />
) } export default Messages