diff --git a/src/hooks/useOrderGroups.js b/src/hooks/useOrderGroups.js index 657cfb3..17b43c1 100644 --- a/src/hooks/useOrderGroups.js +++ b/src/hooks/useOrderGroups.js @@ -52,7 +52,7 @@ export const useOrderGroups = ({ } setLoadError(""); - if (!enabled) { setOrderGroups([]); setIsLoading(false); return; } + if (!enabled) { setIsLoading(false); return; } // Single-group mode: load only the requested group (avoids pulling all // 430 groups with their full source_orders JSON — 2.6MB — for a detail view). @@ -80,12 +80,17 @@ export const useOrderGroups = ({ if (groupsResult.error) { setLoadError(groupsResult.error?.message || "Не удалось загрузить группы доставки"); - setOrderGroups([]); + // Список не стираем — показываем прежние данные, а не пустой экран. setIsLoading(false); return; } const payload = groupsResult.data || {}; + // Неожиданная форма ответа — тоже не стираем список. + if (!Array.isArray(payload.data)) { + setIsLoading(false); + return; + } setOrderGroups(payload.data || []); setTotalGroups(payload.total ?? (payload.data?.length || 0)); setIsLoading(false); @@ -110,7 +115,7 @@ export const useOrderGroups = ({ } if (cancelled) return; }; - if (enabled) doLoad(); else { setOrderGroups([]); setIsLoading(false); } + if (enabled) doLoad(); else { setIsLoading(false); } return () => { cancelled = true; }; }, [loadLiveData, enabled]); diff --git a/src/services/supabase/orderGroupRepository.js b/src/services/supabase/orderGroupRepository.js index f308348..a7c8dfc 100644 --- a/src/services/supabase/orderGroupRepository.js +++ b/src/services/supabase/orderGroupRepository.js @@ -616,7 +616,7 @@ export const fetchOrderGroups = async ({ if (!forceRefresh) { const cached = orderGroupsCache.get(cacheKey); - if (cached) return cached; + if (cached) return { data: cached, error: null }; } return safeSupabaseCall(async () => {