This commit is contained in:
Generated
+11178
-11225
File diff suppressed because it is too large
Load Diff
@@ -73,8 +73,8 @@ export default function ProductsScreen() {
|
||||
return () => pulse.stop();
|
||||
}, [scaleAnim]);
|
||||
|
||||
const fetchProducts = useCallback(async () => {
|
||||
setError(null);
|
||||
const fetchProducts = useCallback(async (silent = false) => {
|
||||
if (!silent) setError(null);
|
||||
try {
|
||||
let response: any;
|
||||
if (selectedCategory === "tous") {
|
||||
@@ -82,17 +82,35 @@ export default function ProductsScreen() {
|
||||
} else {
|
||||
response = await getProductsByCategory(selectedCategory);
|
||||
}
|
||||
const list = response?.data || response?.products || [];
|
||||
setProducts(Array.isArray(list) ? list : []);
|
||||
const list: Product[] = Array.isArray(response?.data || response?.products)
|
||||
? (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 {
|
||||
setError("Impossible de charger les produits");
|
||||
setProducts([]);
|
||||
if (!silent) {
|
||||
setError("Impossible de charger les produits");
|
||||
setProducts([]);
|
||||
}
|
||||
} finally {
|
||||
setLoading(false);
|
||||
setRefreshing(false);
|
||||
if (!silent) {
|
||||
setLoading(false);
|
||||
setRefreshing(false);
|
||||
}
|
||||
}
|
||||
}, [selectedCategory]);
|
||||
|
||||
const fetchProductsRef = useRef(fetchProducts);
|
||||
useEffect(() => { fetchProductsRef.current = fetchProducts; }, [fetchProducts]);
|
||||
|
||||
useEffect(() => {
|
||||
const catObj = categories.find((c) => c.name === selectedCategory);
|
||||
if (catObj?.is_coming_soon) {
|
||||
@@ -102,6 +120,8 @@ export default function ProductsScreen() {
|
||||
}
|
||||
setLoading(true);
|
||||
fetchProducts();
|
||||
const interval = setInterval(() => fetchProductsRef.current(true), 30_000);
|
||||
return () => clearInterval(interval);
|
||||
}, [selectedCategory, categories, fetchProducts]);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user