@commercelayer/react-components
Version:
The Official Commerce Layer React Components
2 lines • 2.04 kB
JavaScript
"use client";
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.InStockSubscriptionButton=InStockSubscriptionButton;const tslib_1=require("tslib"),jsx_runtime_1=require("react/jsx-runtime"),Parent_1=tslib_1.__importDefault(require("../utils/Parent")),CommerceLayerContext_1=tslib_1.__importDefault(require("../../context/CommerceLayerContext")),InStockSubscriptionContext_1=tslib_1.__importDefault(require("../../context/InStockSubscriptionContext")),useCustomContext_1=tslib_1.__importDefault(require("../../utils/hooks/useCustomContext")),jwt_1=require("../../utils/jwt"),react_1=require("react");function InStockSubscriptionButton(_a){var{skuCode,customerEmail,children,onClick,show=!1,label="Subscribe",loadingLabel="Loading..."}=_a,props=tslib_1.__rest(_a,["skuCode","customerEmail","children","onClick","show","label","loadingLabel"]);const{setInStockSubscription}=(0,useCustomContext_1.default)({context:InStockSubscriptionContext_1.default,contextComponentName:"InStockSubscriptionsContainer",currentComponentName:"InStockSubscriptionButton",key:"setInStockSubscription"}),{accessToken}=(0,react_1.useContext)(CommerceLayerContext_1.default),[loading,setLoading]=(0,react_1.useState)(!1),handleClick=()=>tslib_1.__awaiter(this,void 0,void 0,function*(){if(accessToken!=null&&customerEmail==null){const get=(0,jwt_1.jwt)(accessToken);if(get?.owner==null){console.error("Missing customerEmail");return}}if(setInStockSubscription==null){console.error("Missing <InStockSubscriptionsContainer>");return}setLoading(!0);const res=yield setInStockSubscription({customerEmail,skuCode});onClick?.(res),setLoading(!1)});if(children!=null){const parentProps=Object.assign({skuCode,customerEmail,onClick,show,label,loadingLabel},props);return(0,jsx_runtime_1.jsx)(Parent_1.default,Object.assign({},parentProps,{children}))}return show?(0,jsx_runtime_1.jsx)("button",Object.assign({onClick:()=>{handleClick()},disabled:loading},props,{children:loading?loadingLabel:label})):null}exports.default=InStockSubscriptionButton;