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;