few fixes

categories are now pulled from backend
This commit is contained in:
2025-05-05 10:13:06 +02:00
parent 05916b959c
commit 0a7be2e27b
4 changed files with 43 additions and 6 deletions

View File

@@ -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);
}
}

View File

@@ -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() {
<SelectDragIndicatorWrapper>
<SelectDragIndicator />
</SelectDragIndicatorWrapper>
<SelectItem label="Meble" value="Furniture" />
<SelectItem label="Biżuteria" value="Jewelry" />
<SelectItem label="Ceramika" value="Ceramics" />
{selectItems.map((item) => (
<SelectItem key={item.value} label={item.label} value={item.value}/>
))}
</SelectContent>
</SelectPortal>
</Select>

View File

@@ -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,

View File

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