import React, { useEffect, useRef } from "react"; import { Searchbar, Title, IconButton } from 'react-native-paper'; import { StyleSheet, SafeAreaView, FlatList, View } from 'react-native'; import API from "../API"; import GroupCard from "../components/GroupCard"; const Groups = ({navigation}) => { const [searchQuery, setSearchQuery] = React.useState(''); const [searchVisible, setSearchVisible] = React.useState(false); const [groups, setGroups] = React.useState([]); const [queryTimer, setQueryTimer] = React.useState(0); const searchTextBox = useRef(null); useEffect(() => { let subscribed = true; API.getFollowingGroups('').then((data) => { if (subscribed) setGroups(data?.groups || []); }); return () => { subscribed = false; } }, []) const onChangeSearch = query => { setSearchQuery(query); if (queryTimer) clearTimeout(queryTimer); let timerId = setTimeout(() => { if (!query) { return API.getFollowingGroups('').then((data) => { setGroups(data.groups || []); }); } API.searchGroups(query).then((data) => { setGroups(data.groups || []); }) }, 300); setQueryTimer(timerId); }; const renderProfile = (({ item }) => { return (); }); return ( item._id} ListHeaderComponent={ <> {!searchVisible ? { navigation.navigate('NewGroup'); }} /> { setSearchVisible(true); console.log(searchTextBox) //searchTextBox.current.focus(); }} /> : { setSearchVisible(false); }} forwardRef={searchTextBox} /> } {searchQuery ? "Results:" : "Your Groups:"} } style={{backgroundColor: "#edf2f7",}} /> ) } export default Groups; const styles = StyleSheet.create({ container: { padding: 0, }, title: { padding: 10, paddingTop:5, fontSize: 30, marginTop: 15, fontWeight: "bold", color: "#777" } });