import React, { useState } from 'react'; import { FaBars, FaPaperPlane } from 'react-icons/fa'; import type { IHTTPConnection, Protobuf, Types, } from '@meshtastic/meshtasticjs'; import type { LanguageEnum, languageTemplate } from './App'; import ChatMessage from './components/ChatMessage'; import Sidebar from './components/Sidebar'; interface MainProps { Messages: { message: Types.TextPacket; ack: boolean }[]; Connection: IHTTPConnection; MyNodeInfo: Protobuf.MyNodeInfo; Nodes: Types.NodeInfoPacket[]; Channels: Protobuf.Channel[]; IsReady: boolean; Preferences: Protobuf.RadioConfig_UserPreferences; Language: LanguageEnum; SetLanguage: Function; Translations: languageTemplate; } const Main = (props: MainProps) => { const [currentMessage, setCurrentMessage] = useState(''); const [mobileNavOpen, setMobileNavOpen] = useState(true); const sendMessage = () => { if (props.IsReady) { props.Connection.sendText(currentMessage, undefined, true); setCurrentMessage(''); } }; return (
{props.Messages.length ? ( props.Messages.map((message, Main) => ( )) ) : (
{props.Translations.no_messages_message}
)}
{ e.preventDefault(); sendMessage(); }} > {props.IsReady} { setCurrentMessage(e.target.value); }} className={`p-3 placeholder-gray-400 text-gray-700 relative rounded-md shadow-md focus:outline-none w-full pr-10 ${ props.IsReady ? 'cursor-text' : 'cursor-not-allowed' }`} />
{ setMobileNavOpen(!mobileNavOpen); }} >
); }; export default Main;