MCPcopy Create free account
hub / github.com/Bitbox-Connect/Bitbox / Discussion

Function Discussion

client/src/component/Discussion.jsx:9–248  ·  view source on GitHub ↗
({ mode })

Source from the content-addressed store, hash-verified

7
8// eslint-disable-next-line
9const Discussion = ({ mode }) => {
10 const [messages, setMessages] = useState([]);
11 const [messageInput, setMessageInput] = useState('');
12 // eslint-disable-next-line
13 const [userName, setUserName] = useState('');
14 const [showModal, setShowModal] = useState(true);
15 // eslint-disable-next-line
16 const [onlineUsers, setOnlineUsers] = useState([
17 { id: 1, name: 'Alice', status: 'active' },
18 { id: 2, name: 'Bob', status: 'idle' },
19 { id: 3, name: 'Charlie', status: 'active' }
20 ]);
21 const [showEmoji, setShowEmoji] = useState(false);
22 const [isDarkMode, setIsDarkMode] = useState(false);
23 const [showUserList, setShowUserList] = useState(false);
24 const messagesEndRef = useRef(null);
25
26 const emojis = ['😊', '😂', '❤️', '👍', '🎉', '🔥', '✨', '🌟'];
27
28 const scrollToBottom = () => {
29 messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
30 };
31
32 useEffect(() => {
33 scrollToBottom();
34 }, [messages]);
35
36 const handleSubmit = (e) => {
37 e.preventDefault();
38 const message = messageInput.trim();
39 if (message) {
40 setMessages(prev => [...prev, {
41 id: Date.now(),
42 content: message,
43 position: 'right',
44 sender: 'You',
45 timestamp: new Date(),
46 status: 'sent'
47 }]);
48 setMessageInput('');
49 }
50 };
51
52 const handleEmojiClick = (emoji) => {
53 setMessageInput(prev => prev + emoji);
54 setShowEmoji(false);
55 };
56
57 const handleJoin = (e) => {
58 e.preventDefault();
59 const name = e.target.username.value.trim();
60 if (name) {
61 setUserName(name);
62 setShowModal(false);
63 }
64 };
65
66 return (

Callers

nothing calls this directly

Calls 2

scrollToBottomFunction · 0.85
handleEmojiClickFunction · 0.85

Tested by

no test coverage detected