storenest-commerce
Version:
Complete e-commerce SDK for Storenest platform with React components, multi-language support, secure checkout, and enterprise-grade security
63 lines (62 loc) • 2.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StorenestProvider = StorenestProvider;
exports.useStorenest = useStorenest;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const useAuth_1 = require("../hooks/useAuth");
const useCart_1 = require("../hooks/useCart");
const useProducts_1 = require("../hooks/useProducts");
const useProducts_2 = require("../hooks/useProducts");
const StorenestContext = (0, react_1.createContext)(undefined);
function StorenestProvider({ children, storageKey = 'storenest_user' }) {
const auth = (0, useAuth_1.useAuth)(storageKey);
const cart = (0, useCart_1.useCart)(auth.userShopId);
const products = (0, useProducts_1.useProducts)();
const productDetail = (0, useProducts_2.useProductDetail)();
const value = {
// Auth
user: auth.user,
userShopId: auth.userShopId,
isAuthenticated: auth.isAuthenticated,
authLoading: auth.isLoading,
authError: auth.error,
login: auth.login,
register: auth.register,
logout: auth.logout,
// Cart
cart: cart.cart,
cartLoading: cart.isLoading,
cartError: cart.error,
cartItemCount: cart.cartItemCount,
cartTotal: cart.cartTotal,
addToCart: cart.addItem,
updateCartItem: cart.updateItem,
removeFromCart: cart.removeItem,
refreshCart: cart.refreshCart,
// Products
products: products.products,
productsLoading: products.isLoading,
productsError: products.error,
productsTotal: products.total,
productsPage: products.page,
productsLimit: products.limit,
hasNextPage: products.hasNextPage,
hasPreviousPage: products.hasPreviousPage,
loadProducts: products.loadProducts,
loadProductsByCategory: products.loadProductsByCategory,
// Product Detail
product: productDetail.product,
productLoading: productDetail.isLoading,
productError: productDetail.error,
loadProduct: productDetail.loadProduct,
};
return ((0, jsx_runtime_1.jsx)(StorenestContext.Provider, { value: value, children: children }));
}
function useStorenest() {
const context = (0, react_1.useContext)(StorenestContext);
if (context === undefined) {
throw new Error('useStorenest must be used within a StorenestProvider');
}
return context;
}