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 () => {