From 1d2a2420c2c1e3b26a9fbcb5c0db53c6f806b921 Mon Sep 17 00:00:00 2001 From: Andrii Solianyk Date: Wed, 11 Jun 2025 14:45:53 +0200 Subject: [PATCH] All clients get api --- ArtisanConnect/api/client.jsx | 26 +++++++++++++--- ArtisanConnect/api/notices.jsx | 2 -- ArtisanConnect/components/UserSection.jsx | 38 +++++++++++++---------- 3 files changed, 43 insertions(+), 23 deletions(-) diff --git a/ArtisanConnect/api/client.jsx b/ArtisanConnect/api/client.jsx index 3efb49f..22065c8 100644 --- a/ArtisanConnect/api/client.jsx +++ b/ArtisanConnect/api/client.jsx @@ -12,10 +12,28 @@ export async function getUserById(userId) { }); return response.data; } catch (err) { - // console.error( - // `Nie udało się pobrać danych użytkownika o ID ${userId}.`, - // err.response.status - // ); + console.error( + `Nie udało się pobrać danych użytkownika o ID ${userId}.`, + err.response.status + ); + throw err; + } +} + +export async function getAllUsers() { + const { token } = useAuthStore.getState(); + const headers = token ? { Authorization: `Bearer ${token}` } : {}; + + try { + const response = await axios.get(`${API_URL}/clients/get/all`, { + headers: headers, + }); + return response.data; + } catch (err) { + console.error( + `Nie udało się pobrać danych o użytkownikach`, + err.response.status + ); throw err; } } diff --git a/ArtisanConnect/api/notices.jsx b/ArtisanConnect/api/notices.jsx index 01dbc3e..b13805a 100644 --- a/ArtisanConnect/api/notices.jsx +++ b/ArtisanConnect/api/notices.jsx @@ -2,8 +2,6 @@ import axios from "axios"; import FormData from "form-data"; import { useAuthStore } from "@/store/authStore"; -// const API_URL = "https://hopp.zikor.pl/api/v1"; - const API_URL = "https://hopp.zikor.pl/api/v1"; export async function listNotices() { diff --git a/ArtisanConnect/components/UserSection.jsx b/ArtisanConnect/components/UserSection.jsx index 6fbe57c..9ddfbe9 100644 --- a/ArtisanConnect/components/UserSection.jsx +++ b/ArtisanConnect/components/UserSection.jsx @@ -2,30 +2,34 @@ import { View } from "react-native"; import { useEffect, useState } from "react"; import { Heading } from "@/components/ui/heading"; import { FlatList } from "react-native"; -import axios from "axios"; import UserBlock from "@/components/UserBlock"; +import { getAllUsers } from "@/api/client"; import { useAuthStore } from "@/store/authStore"; export function UserSection({ notices, title }) { - const token = useAuthStore((state) => state.token); - const headers = token ? { Authorization: `Bearer ${token}` } : {}; const [users, setUsers] = useState([]); + const { token } = useAuthStore.getState(); - useEffect(() => { - if (token) { - axios - .get("https://hopp.zikor.pl/api/v1/clients/get/all", { - headers: headers, + useEffect(() => { + const fetchUsers = async () => { + try { + const data = await getAllUsers(); + setUsers(data); + } catch (error) { + console.error("Ошибка при загрузке пользователей:", error); + setUsers([]); + } + }; + + fetchUsers(); + }, [token]); + + const usersWithNoticeCount = users && users.length > 0 + ? users.map((user) => { + const count = notices.filter((n) => n.clientId === user.id).length; + return { ...user, noticeCount: count }; }) - .then((res) => setUsers(res.data)) - .catch(() => setUsers([])); - } - }, [token]); - - const usersWithNoticeCount = users.map((user) => { - const count = notices.filter((n) => n.clientId === user.id).length; - return { ...user, noticeCount: count }; - }); + : []; const topUsers = usersWithNoticeCount .sort((a, b) => b.noticeCount - a.noticeCount)