@tycoonsystems/tycoon-modules
Version:
www.tv.tycoon.systems/documentation
1 lines • 7.5 kB
JavaScript
import{fetchPost}from"@tycoonsystems/tycoon-modules/utility/fetch/fetch";import{logout}from"@tycoonsystems/tycoon-modules/utility/onboarding/SignIn.js";import{isObjectEmpty}from"@tycoonsystems/tycoon-modules/util";import Cookies from"universal-cookie";import{_LocalEventEmitter}from"@tycoonsystems/tycoon-modules/events/LocalEventEmitter";import{resolveVariables}from"/app.config";const cookies=new Cookies,createShop=async(e,t,r,s)=>{if(r.identifier&&r.hash&&s&&s.shopName){t={domainKey:t,shopData:s,hash:r.hash,identifier:r.identifier},s=await fetchPost(e+"/m/createshop",null,null,t);if(s&&s.hasOwnProperty("status")){if("disauthenticated"==s.status)return logout(),"disauthenticated";if("failed"==s.status)return!1;if("success"==s.status)return s}}return!1},doPublishProduct=async(e,t,r,s,o,i)=>{if(s.identifier&&s.hash&&o&&t){s=await fetchPost(e+"/m/publishproduct",null,null,i,{formData:!0});if(s&&s.hasOwnProperty("status")){if("disauthenticated"==s.status)return logout(),"disauthenticated";if("failed"==s.status)return!1;if("success"==s.status)return s}}return!1},resolveImg=(e,t,r)=>r||"img/default/greythumb_product.jpg",resolveStyles=e=>e&&e.styles?e.styles:[],resolveCurrentPrice=(e,t,r)=>{if(console.log(e,t,r),e&&e.styles){var s=e.styles.find(e=>e.sid===t);if(s&&Object.prototype.hasOwnProperty.call(s,"price"))return""+r+s.price;if(e.styles[0]&&Object.prototype.hasOwnProperty.call(e.styles[0],"price"))return""+r+e.styles[0].price}return""},resolveCurrentStyle=(e,t)=>{return e&&e.styles?e.styles.find(e=>e.sid===t):""},resolveCurrentOption=(e,t)=>{return e&&e.option?e.option.find(e=>e.sid===t):""},resolveDefaultStyle=(e,t,r,s,o)=>{isObjectEmpty(t)&&e&&e.styles&&e.styles[0]&&e.styles[0].sid&&(r(e.styles[0].sid),!s)&&e.styles[0].option&&e.styles[0].option[0]&&e.styles[0].option[0].sid&&o(e.styles[0].option[0].sid)},updateCart=(e,t,r)=>r?(localStorage.removeItem("cart"),{}):(localStorage.setItem("cart",JSON.stringify(t)),_LocalEventEmitter.dispatch("forceUpdateProps",{dispatch:"_cart"}),t),calculateTotal=(e,t,r,s)=>{const o=[];let i=0;e&&e.items&&e.items.map(e=>{var t=resolveCurrentStyle(e.product,e.style);t&&Object.prototype.hasOwnProperty.call(t,"price")&&(t="USD"===r?.region?.currency?t.price:r?.region?.currency&&t?.priceTable&&Object.prototype.hasOwnProperty.call(t.priceTable,r.region.currency)?t.priceTable[r.region.currency]:s?resolveRegionBasedPrice(s,t)?.price:t.price,o.push(Object.assign(e,{price:t})),i+=t*e.quantity)});e=s?.paymentConfig?.tax?.all??0,e={prices:o,taxRate:e,tax:i*e,totalNoTax:i,total:i*e+i};return r&&r.object?e:t?t+e.total:e.total},doUploadImageForProduct=async(e,t,r,s,o)=>{if(s.identifier&&s.hash&&r&&t){s=await fetchPost(e+"/m/uploadimageforproduct",null,null,o,{formData:!0});if(s&&s.hasOwnProperty("status")){if("disauthenticated"==s.status)return logout(),"disauthenticated";if("failed"==s.status)return!1;if("success"==s.status)return s}}return!1},doUploadImageForLineupParticipant=async(e,t,r,s,o)=>{if(s.identifier&&s.hash&&r&&t){s=await fetchPost(e+"/m/uploadimageforlineupparticipant",null,null,o,{formData:!0});if(s&&s.hasOwnProperty("status")){if("disauthenticated"==s.status)return logout(),"disauthenticated";if("failed"==s.status)return!1;if("success"==s.status)return s}}return!1},addToCartGlobal=async(e,t,r,s,o,i,a,n)=>{try{var c,l;if(console.log(e,t,r,s,o,i,a,n),o&&t&&e)return a(!0),c={domainKey:t,hash:r?.hash,identifier:r?.identifier,cart:s,product:o,spec:i,options:n},l=await fetchPost(e+"/m/addtocart",null,null,c),a(!1),!!l&&(l.hasOwnProperty("status")?"disauthenticated"==l.status?(logout(),"disauthenticated"):"failed"!=l.status&&("success"==l.status?l:void 0):void 0)}catch(e){return console.log(e),a&&a(!1),{status:"failed",message:"Could not add Product to cart"}}},addToCart=async(e,t,r,s,o,i,a,n)=>{try{if(console.log(e,t,r,o,i,s),r&&r.identifier&&r.hash&&o&&t&&e&&o&&o.styles&&i.style&&i.option){var c=o.styles.find(e=>e.sid===i.style);if(c&&c.option){var l=c.option.find(e=>e.sid===i.option);if(l&&l.quantity&&(0<l.quantity||-100===l.quantity)&&(console.log(s,o,i,n),a)){a(!0);var u={domainKey:t,hash:r.hash,identifier:r.identifier,cart:s,product:o,spec:i,options:n},d=await fetchPost(e+"/m/addtocart",null,null,u);if(a(!1),!d)return!1;if(d.hasOwnProperty("status")){if("disauthenticated"==d.status)return logout(),"disauthenticated";if("failed"==d.status)return!1;if("success"==d.status)return d}}}}throw new Error}catch(e){return console.log(e),a&&a(!1),{status:"failed",message:"Could not add Product to cart"}}},getUseCartOfCurrency=(r,e)=>{const t=e?.items&&e.items[0];if(t?.product?.styles){var s=t.product.styles.find(e=>e.sid===t.style);if(s){const o=resolveRegionBasedPrice(r,s);if(console.log(o),o){const i=[];s={items:e.items.filter(t=>{var e=t.product.styles.find(e=>e.sid===t.style);if(e){e=resolveRegionBasedPrice(r,e);if(e&&e.currency===o.currency)return!0}return i.push(t),!1}),currency:o,user:e.user};return s.remaining=i,s}}}},performPurchase=async(e,t,r,s,o,i)=>{try{var a=resolveVariables();if(a.paymentConfig&&a.dev){var n=a.paymentConfig?.keys?.stripe.match("live"),c=a.paymentConfig?.keys?.paystack.match("live");if(n||c)return console.log("Payment Cancelled: Some Payment Processing Keys are live but you are in development mode."),!1}if(r&&r.identifier&&r.hash&&s&&t&&e&&o){o(!0);var l={domainKey:t,hash:r.hash,identifier:r.identifier,cart:s,options:i},u=await fetchPost(e+"/m/performpurchase",null,null,l);if(o(!1),!u)return!1;if(u.hasOwnProperty("status")){if("disauthenticated"==u.status)return logout(),"disauthenticated";if("failed"==u.status)return!!u.message&&u;if("success"==u.status)return u}}throw new Error}catch(e){return console.log(e),o&&o(!1),{status:"failed",message:"Could not perform purchase"}}},westernMoneyFormat=new Intl.NumberFormat("en-US",{minimumIntegerDigits:1,minimumFractionDigits:2,maximumFractionDigits:2}),resolveMoneyFormat=e=>{try{return isNaN(Number(e))||null===e?null:westernMoneyFormat.format(e)}catch(e){return console.log(e),null}},resolveRegionBasedPrice=(e,t,r)=>{if(r)return{currency:r.currency??null,symbol:r.symbol??null,price:r.price??null,code:r.code??null};r=e?._loggedIn?.meta?.locationMeta?.country??"US";if(r&&e?.regionsData&&e.regionsData[r]){if(!t?.priceTable)return{currency:e.regionsData[r].currency,symbol:e.regionsData[r].symbol,price:null,code:e?.regionsData[r].code};if(Object.prototype.hasOwnProperty.call(t.priceTable,e.regionsData[r].currency))return{currency:e.regionsData[r].currency,symbol:e.regionsData[r].symbol,price:t.priceTable[e.regionsData[r].currency],code:e?.regionsData[r].code};{const s=e.regionsData[r].region;r=Object.entries(e.regionsData).find(e=>!(e[1].region!==s||!Object.prototype.hasOwnProperty.call(t.priceTable,e[1].currency)));if(r&&r[1])return{currency:r[1].currency,symbol:r[1].symbol,price:t.priceTable[r[1].currency],code:r[1].code}}}return{currency:"USD",symbol:"$",price:t&&Object.prototype.hasOwnProperty.call(t,"price")?t.price:null,code:"US"}},resolveOption=(e,t,r,s=!1)=>{if(e&&e.styles&&t){e=e.styles.find(e=>e.sid===t);if(e.option){e=e.option.find(e=>e.sid===r);if(s&&e)return e;if(e&&e.option)return e.option}}return""};export{createShop,doPublishProduct,resolveImg,resolveStyles,resolveCurrentPrice,resolveCurrentStyle,resolveCurrentOption,resolveDefaultStyle,updateCart,calculateTotal,doUploadImageForProduct,doUploadImageForLineupParticipant,addToCartGlobal,addToCart,getUseCartOfCurrency,performPurchase,westernMoneyFormat,resolveMoneyFormat,resolveRegionBasedPrice,resolveOption};