|
|
@@ -15,6 +15,7 @@ interface ShopContextType {
|
|
|
stores: StoreData[];
|
|
|
setStores: (stores: StoreData[]) => void;
|
|
|
isLoading: boolean;
|
|
|
+ isShopSelecting: boolean;
|
|
|
storesLoaded: boolean;
|
|
|
refreshStores: () => Promise<void>;
|
|
|
}
|
|
|
@@ -25,6 +26,7 @@ export const ShopProvider: React.FC<{ children: ReactNode }> = ({ children }) =>
|
|
|
const [selectedShop, setSelectedShopState] = useState<StoreData | null>(null);
|
|
|
const [stores, setStoresState] = useState<StoreData[]>([]);
|
|
|
const [isLoading, setIsLoading] = useState(true);
|
|
|
+ const [isShopSelecting, setIsShopSelecting] = useState(true);
|
|
|
const [storesLoaded, setStoresLoaded] = useState(false);
|
|
|
|
|
|
// Wrap setStores to track when stores are actually loaded (memoized to prevent re-renders)
|
|
|
@@ -88,6 +90,7 @@ export const ShopProvider: React.FC<{ children: ReactNode }> = ({ children }) =>
|
|
|
setSelectedShopState(shopFromUrl);
|
|
|
localStorage.setItem('selected_shop_id', urlShopId);
|
|
|
setIsLoading(false);
|
|
|
+ setIsShopSelecting(false);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
@@ -112,6 +115,7 @@ export const ShopProvider: React.FC<{ children: ReactNode }> = ({ children }) =>
|
|
|
setSelectedShopState(activeStores[0]);
|
|
|
}
|
|
|
setIsLoading(false);
|
|
|
+ setIsShopSelecting(false);
|
|
|
}, [stores, storesLoaded]);
|
|
|
|
|
|
const setSelectedShop = (shop: StoreData | null) => {
|
|
|
@@ -124,7 +128,7 @@ export const ShopProvider: React.FC<{ children: ReactNode }> = ({ children }) =>
|
|
|
};
|
|
|
|
|
|
return (
|
|
|
- <ShopContext.Provider value={{ selectedShop, setSelectedShop, stores, setStores, isLoading, storesLoaded, refreshStores: fetchStores }}>
|
|
|
+ <ShopContext.Provider value={{ selectedShop, setSelectedShop, stores, setStores, isLoading, isShopSelecting, storesLoaded, refreshStores: fetchStores }}>
|
|
|
{children}
|
|
|
</ShopContext.Provider>
|
|
|
);
|