import React, { useEffect, useState } from "react"; import { View, Text, ScrollView, ImageBackground, TextInput, TouchableOpacity, StyleSheet, } from "react-native"; import Feather from "@expo/vector-icons/Feather"; import ListItem from "@components/ListItem/ListItem"; import filter from "lodash.filter"; import { globalStyles } from "@styles/global"; import { getRequest } from "@request/index"; import Layout from "@components/Layout/Layout"; import { useTheme } from "@styles"; import { useTranslation } from "react-i18next"; const HomeScreen = ({ navigation }) => { const { colors } = useTheme(); const { t } = useTranslation(); const [posts, setPosts] = useState([]); const [query, setQuery] = useState(""); const [filteredData, setFilteredData] = useState(posts); const contains = (name, search) => { if (name.includes(search)) { return true; } return false; }; const searchFilter = (text) => { const formatedText = text.toLowerCase(); const data = filter(posts, (item) => { return contains(item?.attributes.title.toLowerCase(), formatedText); }); setFilteredData(data); setQuery(formatedText); }; const fetchAll = async () => { const { data } = await getRequest("api/posts?populate=*"); if (data?.data) { setPosts(data?.data); } }; useEffect(() => { fetchAll(); }, []); useEffect(() => { if (posts) { setFilteredData(posts); } }, [posts]); return ( {t("common.hello")}, Diligent navigation.openDrawer()}> searchFilter(text)} autoCapitalize="none" autoCorrect={false} placeholder={t('common.search')} value={query} placeholderTextColor="#C6C6C6" style={{ flex: 1, color: colors.textPrimary }} /> {filteredData.length === 0 && ( {t('common.noResults')} )} {query.length === 0 ? posts?.map((post) => ( navigation.navigate("PostDetails", { title: post?.attributes?.title, id: post?.id, }) } /> )) : filteredData.map((post) => ( navigation.navigate("PostDetails", { title: post?.attributes?.title, id: post?.id, }) } /> ))} ); }; const styles = StyleSheet.create({ wrapper: { flexDirection: "row", justifyContent: "space-between", marginBottom: 20, padding: 18 }, imageBackground: { width: 35, height: 35, }, search: { flexDirection: "row", borderColor: "#C6C6C6", borderWidth: 1, borderRadius: 8, paddingHorizontal: 10, paddingVertical: 8, marginBottom: 20, marginHorizontal: 18 }, }); export default HomeScreen;