chore: build mobile
Frontend Client - EAS Build / build (push) Failing after 1h1m44s

This commit is contained in:
2026-06-20 22:47:17 +02:00
parent cefebf0b43
commit e8c79e40ec
2 changed files with 11206 additions and 11233 deletions
+11178 -11225
View File
File diff suppressed because it is too large Load Diff
+28 -8
View File
@@ -73,8 +73,8 @@ export default function ProductsScreen() {
return () => pulse.stop(); return () => pulse.stop();
}, [scaleAnim]); }, [scaleAnim]);
const fetchProducts = useCallback(async () => { const fetchProducts = useCallback(async (silent = false) => {
setError(null); if (!silent) setError(null);
try { try {
let response: any; let response: any;
if (selectedCategory === "tous") { if (selectedCategory === "tous") {
@@ -82,17 +82,35 @@ export default function ProductsScreen() {
} else { } else {
response = await getProductsByCategory(selectedCategory); response = await getProductsByCategory(selectedCategory);
} }
const list = response?.data || response?.products || []; const list: Product[] = Array.isArray(response?.data || response?.products)
setProducts(Array.isArray(list) ? list : []); ? (response?.data || response?.products)
: [];
if (silent) {
setProducts((prev) =>
prev.map((p) => {
const updated = list.find((r) => r.id === p.id);
return updated ? { ...p, stock: updated.stock } : p;
})
);
} else {
setProducts(list);
}
} catch { } catch {
setError("Impossible de charger les produits"); if (!silent) {
setProducts([]); setError("Impossible de charger les produits");
setProducts([]);
}
} finally { } finally {
setLoading(false); if (!silent) {
setRefreshing(false); setLoading(false);
setRefreshing(false);
}
} }
}, [selectedCategory]); }, [selectedCategory]);
const fetchProductsRef = useRef(fetchProducts);
useEffect(() => { fetchProductsRef.current = fetchProducts; }, [fetchProducts]);
useEffect(() => { useEffect(() => {
const catObj = categories.find((c) => c.name === selectedCategory); const catObj = categories.find((c) => c.name === selectedCategory);
if (catObj?.is_coming_soon) { if (catObj?.is_coming_soon) {
@@ -102,6 +120,8 @@ export default function ProductsScreen() {
} }
setLoading(true); setLoading(true);
fetchProducts(); fetchProducts();
const interval = setInterval(() => fetchProductsRef.current(true), 30_000);
return () => clearInterval(interval);
}, [selectedCategory, categories, fetchProducts]); }, [selectedCategory, categories, fetchProducts]);
useEffect(() => { useEffect(() => {