import { Feather, FontAwesome } from "@expo/vector-icons"; import { useNavigation, useTheme } from "@react-navigation/native"; import React, { useCallback, useEffect, useState } from "react"; import { Keyboard, View } from "react-native"; import { Bubble, GiftedChat, InputToolbar, Send, } from "react-native-gifted-chat"; import { TextDefault, WrapperView } from "../../components"; import { alignment } from "../../utils/alignment"; import { scale } from "../../utils/scaling"; import useStyle from "./styles"; const UserInfo = { _id: 1, name: "Jason", active: true, }; function Chat() { const styles = useStyle(); const { colors } = useTheme(); const navigation = useNavigation(); const [messages, setMessages] = useState([]); const [isTyping, setIsTyping] = useState(false); useEffect(() => { Keyboard.addListener("keyboardDidShow", _keyboardDidShow); Keyboard.addListener("keyboardDidHide", _keyboardDidHide); // cleanup function return () => { Keyboard.remove("keyboardDidShow", _keyboardDidShow); Keyboard.remove("keyboardDidHide", _keyboardDidHide); }; }, []); const _keyboardDidShow = () => setIsTyping(true); const _keyboardDidHide = () => setIsTyping(false); useEffect(() => { navigation.setOptions({ title: "Chat", }); setMessages([ { _id: 1, text: "How can I help you?", sent: true, received: true, createdAt: new Date(), user: { _id: 2, name: "React Native", avatar: "https://placeimg.com/140/140/any", }, }, ]); }, [navigation]); const onSend = useCallback((messages = []) => { setMessages((previousMessages) => GiftedChat.append(previousMessages, messages) ); }, []); const renderBubble = (props) => { return ( ); }; const renderSend = (props) => ( ); const customtInputToolbar = (props) => { return ( ); }; return ( {UserInfo.active ? UserInfo.name : "Offline"} onSend(messages)} renderAvatar={() => null} renderBubble={renderBubble} renderInputToolbar={customtInputToolbar} textInputStyle={styles.inputStyle} minInputToolbarHeight={60} // renderFooter={() => // isTyping ? ( // // User is typing... // // ) : null // } timeTextStyle={{ left: { width: "100%", color: colors.fontMainColor, fontSize: 11, textAlign: "right", }, right: { color: colors.fontMainColor, fontSize: 11, }, }} /> ); } export default Chat;