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 Layout from "@components/Layout/Layout"; import { useTheme } from "@styles"; import { useTranslation } from "react-i18next"; import { useAllPostsQuery } from "@features/posts/postsApiSlice"; import Loader from "@components/Loader"; const HomeScreen = ({ navigation }) => { const { colors } = useTheme(); const { t } = useTranslation(); const { data, isLoading } = useAllPostsQuery(); const [query, setQuery] = useState(""); const [posts, setPosts] = useState([]); const [filteredData, setFilteredData] = useState([]); 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); }; useEffect(() => { if (data?.data) { setPosts(data?.data); } }, [data]); 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")} )} {!isLoading && ( {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;