diff --git a/ArtisanConnect/api/categories.jsx b/ArtisanConnect/api/categories.jsx new file mode 100644 index 0000000..7dfb634 --- /dev/null +++ b/ArtisanConnect/api/categories.jsx @@ -0,0 +1,14 @@ +import axios from "axios"; + +// const API_URL = "https://testowe.zikor.pl/api/v1"; +const API_URL = "http://10.224.1.86:8080/api/v1"; + +export async function listCategories() { + try { + const response = await axios.get(`${API_URL}/vars/categories`); + console.log("Response", response.data, "status code: ", response.status); + return response.data; + } catch (err) { + console.error("Nie udało się pobrać listy kategorii.", err.response.status); + } +} \ No newline at end of file diff --git a/ArtisanConnect/app/(tabs)/notice/create.jsx b/ArtisanConnect/app/(tabs)/notice/create.jsx index a20eca5..ab8477a 100644 --- a/ArtisanConnect/app/(tabs)/notice/create.jsx +++ b/ArtisanConnect/app/(tabs)/notice/create.jsx @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { useState, useEffect } from "react"; import { Image, StyleSheet } from "react-native"; import { Button, ButtonText } from "@/components/ui/button"; import { FormControl } from "@/components/ui/form-control"; @@ -23,6 +23,7 @@ import { import { ChevronDownIcon } from "@/components/ui/icon"; import { useMutation } from "@tanstack/react-query"; import {createNotice} from "@/api/notices"; +import {listCategories} from "@/api/categories"; export default function CreateNotice() { const [title, setTitle] = useState(""); @@ -30,6 +31,28 @@ export default function CreateNotice() { const [price, setPrice] = useState(""); const [category, setCategory] = useState(""); const [image, setImage] = useState(null); + const [selectItems, setSelectItems] = useState([]); + + useEffect(() => { + let isMounted = true; + + const fetchSelectItems = async () => { + try { + let data = await listCategories(); + if (isMounted && Array.isArray(data)) { + setSelectItems(data); + } + } catch (error) { + console.error('Error fetching select items:', error); + } + }; + + fetchSelectItems(); + + return () => { + isMounted = false; + }; + }, []); const [error, setError] = useState({ title: false, @@ -166,9 +189,9 @@ export default function CreateNotice() { - - - + {selectItems.map((item) => ( + + ))} diff --git a/ArtisanConnect/app/notice/[id].jsx b/ArtisanConnect/app/notice/[id].jsx index 1628b01..df17cba 100644 --- a/ArtisanConnect/app/notice/[id].jsx +++ b/ArtisanConnect/app/notice/[id].jsx @@ -14,7 +14,7 @@ import {useEffect, useState} from "react"; export default function NoticeDetails() { const {id} = useLocalSearchParams(); - const [image, setImage] = useState(null); + const [image, setImage] = useState("https://http.cat/404.jpg"); const { data: notice, diff --git a/ArtisanConnect/components/NoticeCard.jsx b/ArtisanConnect/components/NoticeCard.jsx index c412e57..ce7bd58 100644 --- a/ArtisanConnect/components/NoticeCard.jsx +++ b/ArtisanConnect/components/NoticeCard.jsx @@ -19,7 +19,7 @@ export function NoticeCard({notice}) { const isInWishlist = useWishlist((state) => state.wishlistNotices.some((item) => item.noticeId === notice.noticeId) ); - const [image, setImage] = useState(null); + const [image, setImage] = useState("https://http.cat/404.jpg"); useEffect(() => { const fetchImage = async () => {