import{__,sprintf}from"@wordpress/i18n";import PaystackPop from"@paystack/inline-js";import{h,Host}from"@stencil/core";import apiFetch from"../../../functions/fetch";export class ScPaystackAddMethod{constructor(){this.liveMode=!0,this.customerId=void 0,this.successUrl=void 0,this.currency=void 0,this.loading=void 0,this.loaded=void 0,this.error=void 0,this.paymentIntent=void 0}async handlePaymentIntentCreate(){var e,t;const{public_key:r,access_code:s}=(null===(t=null===(e=this.paymentIntent)||void 0===e?void 0:e.processor_data)||void 0===t?void 0:t.paystack)||{};if(!r||!s)return;const a=new PaystackPop;await a.newTransaction({key:r,accessCode:s,onSuccess:async e=>{if("success"!==(null==e?void 0:e.status))throw{message:sprintf(__("Paystack transaction could not be finished. Status: %s","surecart"),null==e?void 0:e.status)};window.location.assign(this.successUrl)},onClose:e=>{console.error(e),alert((null==e?void 0:e.message)||__("The payment did not process. Please try again.","surecart"))}})}async createPaymentIntent(){var e,t;try{this.loading=!0,this.error="",this.paymentIntent=await apiFetch({method:"POST",path:"surecart/v1/payment_intents",data:{processor_type:"paystack",reusable:!0,live_mode:this.liveMode,customer_id:this.customerId,currency:this.currency,refresh_status:!0}})}catch(r){this.error=(null===(t=null===(e=null==r?void 0:r.additional_errors)||void 0===e?void 0:e[0])||void 0===t?void 0:t.message)||(null==r?void 0:r.message)||__("Something went wrong","surecart")}finally{this.loading=!1}}render(){return h(Host,{key:"5f78fb60a51e5209f58417eea143cd252207d33e"},this.error&&h("sc-alert",{key:"6f237808e93a530768a1890bea732fbdd80662e1",open:!!this.error,type:"danger"},h("span",{key:"00c047f3371dd4bc061afdcb7ac422503a42fe14",slot:"title"},__("Error","surecart")),this.error),h("div",{key:"b52ae4e43019f9927c5bef052fe67e1361cc461a",class:"sc-paystack-button-container"},h("sc-alert",{key:"6983a103af59cec36cb2b97d44210b11c2cd0084",open:!0,type:"warning"},__("In order to add a new card, we will need to make a small transaction to authenticate it. This is for authentication purposes and will be immediately refunded.","surecart"),h("div",{key:"b87cf5834724eda0d92f0a30561bc79ae99a2528"},h("sc-button",{key:"08a0b62303c8173037cb5615550555b07caec636",loading:this.loading,type:"primary",onClick:()=>this.createPaymentIntent(),style:{marginTop:"var(--sc-spacing-medium)"}},__("Add New Card","surecart"))))))}static get is(){return"sc-paystack-add-method"}static get originalStyleUrls(){return{$:["sc-paystack-add-method.scss"]}}static get styleUrls(){return{$:["sc-paystack-add-method.css"]}}static get properties(){return{liveMode:{type:"boolean",mutable:!1,complexType:{original:"boolean",resolved:"boolean",references:{}},required:!1,optional:!1,docs:{tags:[],text:""},attribute:"live-mode",reflect:!1,defaultValue:"true"},customerId:{type:"string",mutable:!1,complexType:{original:"string",resolved:"string",references:{}},required:!1,optional:!1,docs:{tags:[],text:""},attribute:"customer-id",reflect:!1},successUrl:{type:"string",mutable:!1,complexType:{original:"string",resolved:"string",references:{}},required:!1,optional:!1,docs:{tags:[],text:""},attribute:"success-url",reflect:!1},currency:{type:"string",mutable:!1,complexType:{original:"string",resolved:"string",references:{}},required:!1,optional:!1,docs:{tags:[],text:""},attribute:"currency",reflect:!1}}}static get states(){return{loading:{},loaded:{},error:{},paymentIntent:{}}}static get watchers(){return[{propName:"paymentIntent",methodName:"handlePaymentIntentCreate"}]}}