import React, {useEffect, useState} from 'react'; import { Keyboard, SectionListData, StatusBar, StyleSheet, Text, View, } from 'react-native'; import {BottomDrawer} from '../../components'; import { SEARCH_ENDPOINT_MESSAGES, SEARCH_ENDPOINT_SUGGESTED, } from '../../constants'; import {loadSearchResults} from '../../services'; import {ScreenType} from '../../types'; import {normalize} from '../../utils'; import {ChatResultsList, ChatSearchBar} from './index'; interface NewChatModalProps { modalVisible: boolean; setChatModalVisible: (open: boolean) => void; } const NewChatModal: React.FC = ({ modalVisible, setChatModalVisible, }) => { const [searching, setSearching] = useState(false); const [results, setResults] = useState[]>([]); const [query, setQuery] = useState(''); const handleFocus = () => { setSearching(true); }; const handleBlur = () => { Keyboard.dismiss(); }; const handleCancel = () => { setQuery(''); setChatModalVisible(false); }; const getDefaultSuggested = async () => { const searchResults = await loadSearchResults( `${SEARCH_ENDPOINT_SUGGESTED}`, ); const sanitizedResult = [ { title: 'users', data: searchResults?.users, }, ]; setResults(sanitizedResult); }; const getQuerySuggested = async () => { const searchResults = await loadSearchResults( `${SEARCH_ENDPOINT_MESSAGES}?query=${query}`, ); if (query.length > 2) { const sanitizedResult = [ { title: 'users', data: searchResults?.users, }, ]; setResults(sanitizedResult); } else { setResults([]); } }; useEffect(() => { if (query.length === 0) { getDefaultSuggested(); } if (!searching) { return; } if (query.length < 3) { return; } getQuerySuggested(); }, [query]); const _modalContent = () => { return ( New Message {results.length > 0 && ( Suggested )} ); }; return ( { if (!open) { setQuery(''); } setChatModalVisible(open); }} showHeader={false}> {_modalContent()} ); }; const styles = StyleSheet.create({ modalShadowContainer: { height: '100%', borderRadius: 9, backgroundColor: 'white', }, titleContainerStyles: {marginVertical: 24}, titleTextStyles: { fontWeight: 'bold', fontSize: normalize(18), lineHeight: normalize(21), textAlign: 'center', }, headerContainerStyles: { marginTop: 26, marginBottom: 10, marginHorizontal: 28, }, headerTextStyles: { fontWeight: 'bold', fontSize: normalize(17), lineHeight: normalize(20), }, }); export default NewChatModal;