add search section to home

This commit is contained in:
2025-06-03 20:31:16 +02:00
parent 0bae3bf212
commit f05d5b7500
5 changed files with 48 additions and 6 deletions

View File

@@ -72,14 +72,14 @@ export async function getAllImagesByNoticeId(noticeId) {
`${API_URL}/images/get/${imageName}`
);
console.log(`Pobrano ${imageUrls.length} zdjęć dla ogłoszenia o id: ${noticeId}`);
// console.log(`Pobrano ${imageUrls.length} zdjęć dla ogłoszenia o id: ${noticeId}`);
return imageUrls;
}
console.log(`Brak zdjęć dla ogłoszenia o id: ${noticeId}`);
// console.log(`Brak zdjęć dla ogłoszenia o id: ${noticeId}`);
return ["https://http.cat/404.jpg"];
} catch (err) {
console.log(`Błąd podczas pobierania listy zdjęć dla ogłoszenia o id: ${noticeId}`, err);
// console.log(`Błąd podczas pobierania listy zdjęć dla ogłoszenia o id: ${noticeId}`, err);
return ["https://http.cat/404.jpg"];
}
}

View File

@@ -1,8 +1,9 @@
import { ScrollView, Text } from "react-native";
import { ScrollView, View } from "react-native";
import { useNoticesStore } from '@/store/noticesStore';
import { CategorySection } from "@/components/CategorySection";
import { NoticeSection } from "@/components/NoticeSection";
import { UserSection } from "@/components/UserSection";
import { SearchSection } from "@/components/SearchSection";
import { FlatList } from 'react-native';
export default function Home() {
@@ -14,11 +15,14 @@ export default function Home() {
.sort(() => Math.random() - 0.5)
.slice(0, 6);
return (
<View>
<SearchSection/>
<ScrollView showsVerticalScrollIndicator={false} className='m-2'>
<CategorySection title="Polecane kategorie" notices={notices} />
<NoticeSection title="Najnowsze ogłoszenia" notices={latestNotices} ctaLink="/notices?sort=latest"/>
<UserSection title="Popularni sprzedawcy" notices={notices} />
<NoticeSection title="Proponowane ogłoszenia" notices={recomendedNotices} ctaLink="/notices"/>
</ScrollView>
</View>
);
}

View File

@@ -11,7 +11,6 @@ import { listCategories } from "@/api/categories";
import { FormControl, FormControlLabel } from "@/components/ui/form-control";
import { Input, InputField } from "@/components/ui/input";
import { HStack } from "@/components/ui/hstack";
import {
Actionsheet,
ActionsheetContent,
@@ -95,8 +94,16 @@ export default function Notices() {
});
}
if (params.search) {
const searchTerm = params.search.toLowerCase();
result = result.filter(notice =>{
return notice.title.toLowerCase().includes(searchTerm);
});
}
setFilteredNotices(result);
}, [notices, params.category, params.sort, params.priceFrom, params.priceTo]);
}, );
let filterActive = !!params.category || params.sort === "latest";

View File

@@ -0,0 +1,31 @@
import { Input, InputField, InputIcon, InputSlot } from "@/components/ui/input"
import { SearchIcon } from "@/components/ui/icon"
import { Box } from "@/components/ui/box"
import { useRouter } from "expo-router";
export function SearchSection({ searchQuery, setSearchQuery }) {
const router = useRouter();
const handleSubmit = (e) => {
const value = e.nativeEvent.text;
router.push({
pathname: "/notices",
params: { search: value }
});
};
return (
<Box className="m-2 bg-white">
<Input>
<InputSlot>
<InputIcon as={SearchIcon} />
</InputSlot>
<InputField placeholder="Wyszukaj.."
value={searchQuery}
onChangeText={setSearchQuery}
onSubmitEditing={handleSubmit}
returnKeyType="search" />
</Input>
</Box>
)
}