@sunrise-upc/mobile-prod-card 11.12.3 → 11.12.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import o from"js-cookie";import{TV_SERVICE_OPTION as l,RATEPLAN as i,DEFAULT_MOBILEPOSTPAID_BUNDLE as n,VCTYPE as e,DEFAULT_WIRELINE_BUNDLE as d,ONE_ECOMMERCE_SUMMARY as u,ONE_ECOMMERCE_INTERNET_SUMMARY as t}from"../../utils/constants.js";import{fetchShogunOfferData as v,createCartV2 as r}from"../../services/LineTableService.js";import{getElementMaximumHeight as c,getLocalStorageWithExpiry as a,checkLinkWithLang as s}from"../../utils/utils.js";import{trackNewDatalayerEvent as p}from"../../utils/AnalyticsUtils.js";import{LINETABLEPRODUCT as m,ADDTOCART as f,LINETABLE as y,LINETABLEDEVICE as h,COMBINEDEVICE as g,GAEVENT as I}from"../../Analytics/AnalyticsConstants.js";import{trackEligibleItem as b,getEcomCartInfo as T}from"../../models/Analytics/items.js";import{calculateDateTime as w}from"./StaticLineTabelTimer/util.js";const P=(o,l)=>{try{const i=new Date,n=w(new Date(o.replace(/-/g,"/"))),e=w(new Date(l.replace(/-/g,"/")));return!Number.isNaN(n.getTime())&&!Number.isNaN(e.getTime())&&(i>=n&&i<e)}catch(o){return!1}},D=(o,l)=>{try{const i=w(new Date(o.replace(/-/g,"/"))),n=w(new Date(l.replace(/-/g,"/")));if(Number.isNaN(i.getTime())||Number.isNaN(n.getTime()))return 0;const e=(new Date).getTime(),d=i.getTime(),u=n.getTime();return e<d?Math.max(0,d-e):e>=d&&e<u?Math.max(0,u-e):0}catch(o){return 0}},N=(o,l,i,e,d)=>{null==o||o.map(o=>{var e,u,t,v,r,c,a,s,p,m,f,y,h,g,I,b,T,w,D,N,C,S,_,x,O;const L={id:"",promoIds:[]},A=null===(r=null===(v=null===(t=null===(u=null===(e=null==o?void 0:o.products)||void 0===e?void 0:e[0])||void 0===u?void 0:u.reference)||void 0===t?void 0:t.content)||void 0===v?void 0:v.product)||void 0===r?void 0:r[0],E=null===(m=null===(p=null===(s=null===(a=null===(c=null==o?void 0:o.promotion)||void 0===c?void 0:c[0])||void 0===a?void 0:a.reference)||void 0===s?void 0:s.content)||void 0===p?void 0:p.promoDescription)||void 0===m?void 0:m[0];null==E||E.promotionId,L.id=null==A?void 0:A.productId;const B=null===(f=null==o?void 0:o.timer)||void 0===f?void 0:f[0],k=!!B&&P(B.startTime,B.endTime),M=null===(T=null===(b=null===(I=null===(g=null===(h=null===(y=null==B?void 0:B.promotion)||void 0===y?void 0:y[0])||void 0===h?void 0:h.reference)||void 0===g?void 0:g.content)||void 0===I?void 0:I.promoDescription)||void 0===b?void 0:b[0])||void 0===T?void 0:T.promotionId,$=d&&!0===d&&""===(null==E?void 0:E.promotionId)?n:null==E?void 0:E.promotionId;if(k&&M?null===(w=null==L?void 0:L.promoIds)||void 0===w||w.push(M):null===(D=null==L?void 0:L.promoIds)||void 0===D||D.push($),i){const l=null===(x=null===(_=null===(S=null===(C=null===(N=null==o?void 0:o.mobilePromotion)||void 0===N?void 0:N[0])||void 0===C?void 0:C.reference)||void 0===S?void 0:S.content)||void 0===_?void 0:_.promoDescription)||void 0===x?void 0:x[0];null===(O=null==L?void 0:L.promoIds)||void 0===O||O.push(null==l?void 0:l.promotionId)}null==l||l.push(L)})},C=(o,l,i)=>{var n,e,d;const u=null===(n=null==o?void 0:o.tabCaption)||void 0===n?void 0:n.replace(/\b\w/g,o=>o.toUpperCase()).replace(/\s+/g,"");return{atlOffers:[{placements:i,offerValidations:[{key:"Segment",type:"CustomerType",value:"Residential"},{key:"OrderType",type:"CustomerInterest",value:"New"},{key:"CurrentPage",type:"Context",value:"mobile-subscription"},{key:"Category",type:"CustomerInterest",value:null!=u?u:""},{key:"RequestedOfferCount",type:"Context",value:null!==(d=null===(e=null==o?void 0:o.pegaRequestOfferCount)||void 0===e?void 0:e.toString())&&void 0!==d?d:"3"},l?{key:"Tag",type:"CustomerInterest",value:l}:null].filter(Boolean)}]}},S=o=>{let l=!1,i=!1;return null==o||o.map(o=>{var n;null===(n=null==o?void 0:o.promotionInfo)||void 0===n||n.map(o=>{(null==o?void 0:o.hardwareGift)&&(l=!0),(null==o?void 0:o.cashBack)&&(i=!0)})}),{showGift:l,cashbackAvailable:i}},_=(l,i,t,v,c,p,h,g,I,T,w,P,D,N,C,S,_,x,O,L)=>{var A,E,B;if(h){l(!0);const d=a(e);0!==(null===(A=Object.keys(v))||void 0===A?void 0:A.length)&&r(v,"",(null==p?void 0:p.promoID)?null==p?void 0:p.promoID:n,i,"mobile",t,N,C,null===(B=null===(E=null==c?void 0:c.productContainer)||void 0===E?void 0:E[0])||void 0===B?void 0:B.isQoQaFlow,null==d?void 0:d.voucher,null,null,x,O,L).then(l=>{var i;o.remove("one-commerce-cartId",{path:"/"}),o.set("one-commerce-cartId",null==l?void 0:l.id,{path:"/"}),o.set("cartProduct",null==p?void 0:p.id,{path:"/"}),b(f,v,"",m),window.location.href=null===(i=null==c?void 0:c.summaryPageUrl)||void 0===i?void 0:i.cached_url}).catch(o=>{console.log(o),l(!1)}).finally(()=>{l(!1)})}else{const n="undefined"!=typeof window&&o.get("one-commerce-linecheckcorrelationid");I&&T&&n?(l(!0),0!==v.length&&r(v,g,(null==p?void 0:p.promoID)?null==p?void 0:p.promoID:d,i,"fixnet",t,"","",!1,"","",_,void 0,void 0,L).then(l=>{var i,n,e,d,t,r,a,m,h,g,I;"undefined"!=typeof window&&o.remove("one-commerce-cartId",{path:"/"}),"undefined"!=typeof window&&o.set("one-commerce-cartId",null==l?void 0:l.id,{path:"/"}),"undefined"!=typeof window&&o.set("cartProduct",null==p?void 0:p.id,{path:"/"}),"undefined"!=typeof window&&o.remove("landline"),b(f,v,"",y);const T=s(null===(i=null==S?void 0:S.productBasedCheckoutUrl)||void 0===i?void 0:i.cached_url);let w=!1;if((null===(n=v[0])||void 0===n?void 0:n.isBundle)?null===(d=null===(e=v[0])||void 0===e?void 0:e.bundledOffers)||void 0===d||d.map(o=>{var l,i,n;"internet"!==(null===(l=null==o?void 0:o.productType)||void 0===l?void 0:l.toLowerCase())&&"tv"!=(null===(i=null==o?void 0:o.productType)||void 0===i?void 0:i.toLowerCase())||(null==o?void 0:o.recommendAccessory)&&(w=null==o?void 0:o.recommendAccessory),"mobile"!==(null===(n=null==o?void 0:o.productType)||void 0===n?void 0:n.toLowerCase())||(w=!1)}):(null===(t=null==v?void 0:v[0])||void 0===t?void 0:t.recommendAccessory)&&(w=null===(r=null==v?void 0:v[0])||void 0===r?void 0:r.recommendAccessory),w){const o={flow:"WIN"};sessionStorage.setItem(u,JSON.stringify(o))}const P=T||((null==S?void 0:S.enableTVStreamingOptionsStepper)&&(null===(a=null==c?void 0:c.vasStepperURL)||void 0===a?void 0:a.cached_url)?null===(m=null==c?void 0:c.vasStepperURL)||void 0===m?void 0:m.cached_url:w&&(null===(h=null==c?void 0:c.multiItemPageRedirectionUrl)||void 0===h?void 0:h.cached_url)?null===(g=null==c?void 0:c.multiItemPageRedirectionUrl)||void 0===g?void 0:g.cached_url:null===(I=null==c?void 0:c.summaryPageUrl)||void 0===I?void 0:I.cached_url);window.location.href=P}).catch(o=>{console.log(o)}).finally(()=>{l(!1)})):(null==c?void 0:c.enableLinecheckOverlay)?w(!P):D()}},x=(o,l)=>{c(`headingV3${o}`,l),c(`descriptionV3${o}`,l),c(`titleV3${o}`,l),(()=>{let i=0;const n=[];[...Array(l)].forEach((l,e)=>{const d=document.getElementById(`timer-section${o}${e}`);if(d){n.push(d);if("true"===d.dataset.timerActive){const o=d.firstElementChild,l=parseFloat((null==o?void 0:o.style.height)||"0")||0;i=Math.max(i,l)}}}),n.forEach(o=>{const l="true"===o.dataset.timerActive;o.style.transition="height 0.3s ease",o.style.height=l?"0px":`${i}px`})})(),c(`detailsectionv3${o}`,l),c(`product-configv3${o}`,l),c(`gift-section${o}`,l),c(`benefits-section${o}`,l),c(`order-section${o}`,l),c(`price-section${o}`,l),c(`benefits-price-section${o}`,l),c(`contract-section${o}`,l),c(`exclusive-benefits-section${o}`,l),c(`discountedpricetoggle-section${o}`,l)},O=(o,l,i,e,d,u)=>{var t,v,r,c,a,s,m;const y={msisdn:null!==(t=null==e?void 0:e.msisdn)&&void 0!==t?t:"",ratePlan:null!==(v=null==e?void 0:e.ratePlan)&&void 0!==v?v:"",ratePlanType:null!==(r=null==e?void 0:e.ratePlanType)&&void 0!==r?r:"",productId:e?null==o?void 0:o.id:""},w=(null==o?void 0:o.promoID)?null==o?void 0:o.promoID:n;let P="";P=`?componentCode=&productType=subscription&segmentCode=RC&prefPromo=${null!=w?w:""}&productCode=${null!==(c=null==o?void 0:o.id)&&void 0!==c?c:""}`,window.location.href=(null===(m=null===(s=null===(a=null==l?void 0:l.addSmartPhone)||void 0===a?void 0:a[0])||void 0===s?void 0:s.buttonLink)||void 0===m?void 0:m.cached_url)+P,((o,l,i,n,e,d)=>{var u,t,v,r,c,a,s,p,m,f,y,h,g,I,b,T,w,P,D,N,C,S,_,x,O;const L=l,A=null!==(r=null===(v=null===(t=null===(u=null==L?void 0:L[0])||void 0===u?void 0:u.prices)||void 0===t?void 0:t[0])||void 0===v?void 0:v.value)&&void 0!==r?r:0,E=null!==(p=null===(s=null===(a=null===(c=null==L?void 0:L[0])||void 0===c?void 0:c.derivedPrice)||void 0===a?void 0:a[0])||void 0===s?void 0:s.value)&&void 0!==p?p:0,B=null!==(h=null===(y=null===(f=null===(m=null==L?void 0:L[0])||void 0===m?void 0:m.promotionInfo)||void 0===f?void 0:f[0])||void 0===y?void 0:y.contractDuration)&&void 0!==h?h:0,k=null!==(T=null===(b=null===(I=null===(g=null==L?void 0:L[0])||void 0===g?void 0:g.promotionInfo)||void 0===I?void 0:I[0])||void 0===b?void 0:b.campaignDuration)&&void 0!==T?T:0,M=null!=i?i:"",$=d&&(null===(D=null===(P=null===(w=null==l?void 0:l[0])||void 0===w?void 0:w.promotionInfo)||void 0===P?void 0:P[0])||void 0===D?void 0:D.id),U=d&&(null===(S=null===(C=null===(N=null==l?void 0:l[0])||void 0===N?void 0:N.promotionInfo)||void 0===C?void 0:C[0])||void 0===S?void 0:S.version),F=d?{discountRef:$,discountType:"DISCOUNT"}:null,R=[];null==R||R.push({author:"offerType",text:"ATL"}),null==R||R.push({author:"externalPromotionName",text:$}),null==R||R.push({author:"offerVersion",text:U});const V=d?R:null,j=new URLSearchParams(window.location.search).get("flow"),J={mobileSubscription:null!==(x=null===(_=null==L?void 0:L[0])||void 0===_?void 0:_.id)&&void 0!==x?x:"",mobileSubscriptionPrice:E>0?E:A,mobileSubscriptionPromo:o,subGroup:"MOBILE",duration:Number(k>0?k:B),basePrice:A,withoutPromo:!1,pretopostvalue:M,upBenefit:"MULTIMOBILE"==n.mob_benefit_category||"FMC"==n.mob_benefit_category,ultimateBundlePromo:null!==(O=null==e?void 0:e.ultimateBundlePromotion)&&void 0!==O?O:"",clientDiscountInfo:F,extraNotes:V,isOttFlow:"ott"===j};void 0!==typeof window&&sessionStorage.setItem("one-ecommerce-mobileSummary",JSON.stringify(J))})(w,i,e&&y,o,d,u),p(I,g,T(i,"",h)),b(f,i,"",h)},L=(o,l,i,e,d,u)=>{((o,l,i,n,e,d,u)=>{var v,r,c,a,s,p,m,f,y,h,g,I,b,T,w,P,D,N,C,S,_,x,O,L,A,E;const B=l,k=null!==(a=null===(c=null===(r=null===(v=null==B?void 0:B[0])||void 0===v?void 0:v.prices)||void 0===r?void 0:r[0])||void 0===c?void 0:c.value)&&void 0!==a?a:0,M=null!==(f=null===(m=null===(p=null===(s=null==B?void 0:B[0])||void 0===s?void 0:s.derivedPrice)||void 0===p?void 0:p[0])||void 0===m?void 0:m.value)&&void 0!==f?f:0,$=null!==(b=null!==(I=null===(g=null===(h=null===(y=null==B?void 0:B[0])||void 0===y?void 0:y.promotionInfo)||void 0===h?void 0:h[0])||void 0===g?void 0:g.contractDuration)&&void 0!==I?I:null==i?void 0:i.contractDuration)&&void 0!==b?b:0,U=null!==(D=null===(P=null===(w=null===(T=null==B?void 0:B[0])||void 0===T?void 0:T.promotionInfo)||void 0===w?void 0:w[0])||void 0===P?void 0:P.campaignDuration)&&void 0!==D?D:0,F=e&&(null===(S=null===(C=null===(N=null==l?void 0:l[0])||void 0===N?void 0:N.promotionInfo)||void 0===C?void 0:C[0])||void 0===S?void 0:S.id),R=e&&(null===(O=null===(x=null===(_=null==l?void 0:l[0])||void 0===_?void 0:_.promotionInfo)||void 0===x?void 0:x[0])||void 0===O?void 0:O.version),V=e?{discountRef:F,discountType:"DISCOUNT"}:null,j=[];null==j||j.push({author:"offerType",text:"ATL"}),null==j||j.push({author:"externalPromotionName",text:F}),null==j||j.push({author:"offerVersion",text:R});const J=e?j:null,G={internetSubscription:null!=d?d:"",internetSubscriptionId:null!==(A=null===(L=null==B?void 0:B[0])||void 0===L?void 0:L.id)&&void 0!==A?A:"",internetSubscriptionPrice:M>0?M:k,internetSubscriptionPromo:o,subGroup:"INTERNET",duration:Number(U>0?U:$),basePrice:k,withPromo:M>0,upBenefit:"MULTIMOBILE"==i.mob_benefit_category||"FMC"==i.mob_benefit_category,ultimateBundlePromo:null!==(E=null==n?void 0:n.ultimateBundlePromotion)&&void 0!==E?E:"",clientDiscountInfo:V,extraNotes:J,productType:"subscription",recommendAccessory:u};void 0!==typeof window&&sessionStorage.setItem(t,JSON.stringify(G))})((null==o?void 0:o.promoID)?null==o?void 0:o.promoID:n,l,o,i,e,d,u),p(I,g,T(l,"",h)),b(f,l,"",h)},A=(o,l)=>{let i;return l||(i=(o||[]).filter(o=>!0===(null==o?void 0:o.enableTV))),i},E=(o,l,i,n,e,d)=>{var u,t,v,r,c,a,s,p,m,f,y;const h={base:"",onetimePrice:"",discount:[],contractDuration:"",int_fmc:0,mob_fmc:0,mob_benefit_category:"",id:"",promoID:"",loyaltyPrice:""};let g=0,I=0,b=0;Array.isArray(o)&&(null==o||o.map(l=>{var i,n,u,t,v,r,c,a,s;h.id=null!==(i=null==l?void 0:l.id)&&void 0!==i?i:"",null===(n=null==l?void 0:l.prices)||void 0===n||n.map(o=>{var l,i;"recurring"===(null===(l=null==o?void 0:o.priceType)||void 0===l?void 0:l.toLowerCase())?e&&(null==e?void 0:e.length)>0?(null==e||e.forEach(o=>{(null==o?void 0:o.beneficiaryPrice)>0?I+=parseFloat(null==o?void 0:o.beneficiaryPrice):(null==o?void 0:o.derivedPrice)>0?I+=parseFloat(null==o?void 0:o.derivedPrice):b+=parseFloat(null==o?void 0:o.recurringPrice),(null==o?void 0:o.recurringPrice)>0&&(g+=parseFloat(null==o?void 0:o.recurringPrice))}),I>0&&(I+=b),h.base=JSON.stringify(parseFloat(null==o?void 0:o.value)+(I>0?I:g))):h.base=null==o?void 0:o.value:"one time"===(null===(i=null==o?void 0:o.priceType)||void 0===i?void 0:i.toLowerCase())&&(h.onetimePrice=null==o?void 0:o.value)}),null===(u=null==l?void 0:l.derivedPrice)||void 0===u||u.map(l=>{var i,n,u,t,v,r,c,a;const s={cycleStart:"",cycleEnd:"",value:""};s.cycleStart=d&&!(null===(i=null==o?void 0:o[0])||void 0===i?void 0:i.isBundle)&&(null===(n=null==o?void 0:o[0])||void 0===n?void 0:n.contractDuration)?1:null===(u=null==l?void 0:l.cycle)||void 0===u?void 0:u.cycleStart,s.cycleEnd=d&&!(null===(t=null==o?void 0:o[0])||void 0===t?void 0:t.isBundle)&&(null===(v=null==o?void 0:o[0])||void 0===v?void 0:v.contractDuration)?d&&!(null===(r=null==o?void 0:o[0])||void 0===r?void 0:r.isBundle)&&(null===(c=null==o?void 0:o[0])||void 0===c?void 0:c.contractDuration):null===(a=null==l?void 0:l.cycle)||void 0===a?void 0:a.cycleEnd,s.value=null==l?void 0:l.value,e&&(null==e?void 0:e.length)>0&&(s.value=I>0?JSON.stringify(parseFloat(null==l?void 0:l.value)+I):JSON.stringify(parseFloat(null==l?void 0:l.value)+g)),h.discount.push(s)}),(null===(r=null===(v=null===(t=null==l?void 0:l.promotionInfo)||void 0===t?void 0:t[0])||void 0===v?void 0:v.relatedPromo)||void 0===r?void 0:r.length)>0&&(null===(s=null===(a=null===(c=null==l?void 0:l.promotionInfo)||void 0===c?void 0:c[0])||void 0===a?void 0:a.relatedPromo)||void 0===s||s.map(o=>{"LOYALTY_DISCOUNT"===(null==o?void 0:o.type)&&(h.loyaltyPrice=null==o?void 0:o.discount)}))})),null===(t=null===(u=null==o?void 0:o[0])||void 0===u?void 0:u.bundledOffers)||void 0===t||t.forEach(o=>{var l,i,n,e,u;null===(l=null==o?void 0:o.prices)||void 0===l||l.forEach(o=>{var l,i;(null===(l=null==o?void 0:o.priceAlteration)||void 0===l?void 0:l.length)>0&&(null===(i=null==o?void 0:o.priceAlteration)||void 0===i||i.forEach(o=>{"INTERNET_FMC"==(null==o?void 0:o.priceCategory)?h.int_fmc+=Number(null==o?void 0:o.value):"MULTIMOBILE"!=(null==o?void 0:o.priceCategory)&&"FMC"!=(null==o?void 0:o.priceCategory)||(h.mob_fmc+=Number(null==o?void 0:o.value),h.mob_benefit_category=null==o?void 0:o.priceCategory)}))}),(null==o?void 0:o.contractDuration)&&(h.contractDuration=null==o?void 0:o.contractDuration),(null===(n=null===(i=null==o?void 0:o.promotionInfo)||void 0===i?void 0:i[0])||void 0===n?void 0:n.id)&&!d&&(h.promoID=null===(u=null===(e=null==o?void 0:o.promotionInfo)||void 0===e?void 0:e[0])||void 0===u?void 0:u.id)}),(null===(v=null==o?void 0:o[0])||void 0===v?void 0:v.isBundle)||(h.contractDuration=null===(r=null==o?void 0:o[0])||void 0===r?void 0:r.contractDuration,d||(h.promoID=null===(s=null===(a=null===(c=null==o?void 0:o[0])||void 0===c?void 0:c.promotionInfo)||void 0===a?void 0:a[0])||void 0===s?void 0:s.id));let T=0;if(null===(m=null===(p=null==o?void 0:o[0])||void 0===p?void 0:p.prices)||void 0===m||m.map(o=>{var l,i;(null===(l=null==o?void 0:o.priceAlteration)||void 0===l?void 0:l.length)>0&&(null===(i=null==o?void 0:o.priceAlteration)||void 0===i||i.map(o=>{"INTERNET_FMC"==(null==o?void 0:o.priceCategory)?T+=Number(null==o?void 0:o.value):"MULTIMOBILE"!=(null==o?void 0:o.priceCategory)&&"FMC"!=(null==o?void 0:o.priceCategory)||(h.mob_fmc+=Number(null==o?void 0:o.value),h.mob_benefit_category=null==o?void 0:o.priceCategory)}))}),(null==h?void 0:h.contractDuration)||l||(h.contractDuration="12"),h.int_fmc=h.int_fmc,"4P"==i){let l="0";null===(y=null===(f=null==o?void 0:o[0])||void 0===f?void 0:f.bundledOffers)||void 0===y||y.map(o=>{(null==o?void 0:o.contractDuration)&&(l=Number(l)>Number(null==o?void 0:o.contractDuration)?l:null==o?void 0:o.contractDuration)}),h.contractDuration=l}return h},B=(o,l)=>{var i,n;let e=o;e=o.filter(o=>{var i;const n=null===(i=null==o?void 0:o.gigaSpeed)||void 0===i?void 0:i.toLowerCase();return(null==l?void 0:l.gigaSpeed)?"hide"!=n:"show"!=n});let d=e;let u=[],t=[],v=[];for(let o of d){const l=null===(i=null==o?void 0:o.productIndex)||void 0===i?void 0:i.includes(","),e=l&&(null===(n=null==o?void 0:o.productIndex)||void 0===n?void 0:n.split(","));if(l)for(let l of e)for(let i=0;i<3;i++)Number(l)===i&&(0===i?u.push(o):1===i?t.push(o):v.push(o));else for(let l=0;l<3;l++)Number(null==o?void 0:o.productIndex)===l&&(0===l?u.push(o):1===l?t.push(o):v.push(o))}return(null==l?void 0:l.TV)&&(null==l?void 0:l.Netflix)?v:(null==l?void 0:l.TV)?t:u},k=o=>{var n;return null===(n=(null==o?void 0:o.products)||[])||void 0===n?void 0:n.map(o=>{var n,e,d;return{itemType:null!==(n=null==o?void 0:o.type)&&void 0!==n?n:"",promotionId:null!==(e=null==o?void 0:o.promo)&&void 0!==e?e:"",items:[{itemType:(null==o?void 0:o.type)===l?l:i,id:null!==(d=null==o?void 0:o.id)&&void 0!==d?d:""}]}})};let M=null;const $=o=>(null==M?void 0:M.gloxTokenId)===o&&null!==M.results,U=(o,l,i)=>{if($(o))return Promise.resolve(M.results);if((null==M?void 0:M.gloxTokenId)===o&&null!==M.promise)return M.promise;const n=v(o,l,i).then(i=>{var n;const e=null!==(n=null==i?void 0:i[l])&&void 0!==n?n:[];return(null==M?void 0:M.gloxTokenId)===o&&(M.results=e,M.promise=null),e}).catch(l=>{throw(null==M?void 0:M.gloxTokenId)===o&&(M=null),l});return M={gloxTokenId:o,results:null,promise:n},n},F=(o,l)=>{const i=o.filter(o=>{var i,n,e,d,u,t;const v=null===(t=null===(u=null===(d=null===(e=null===(n=null===(i=null==o?void 0:o.products)||void 0===i?void 0:i[0])||void 0===n?void 0:n.reference)||void 0===e?void 0:e.content)||void 0===d?void 0:d.product)||void 0===u?void 0:u[0])||void 0===t?void 0:t.productId;return l.includes(v)});return i.sort((o,i)=>{var n,e,d,u,t,v,r,c,a,s,p,m;const f=null===(v=null===(t=null===(u=null===(d=null===(e=null===(n=null==o?void 0:o.products)||void 0===n?void 0:n[0])||void 0===e?void 0:e.reference)||void 0===d?void 0:d.content)||void 0===u?void 0:u.product)||void 0===t?void 0:t[0])||void 0===v?void 0:v.productId,y=null===(m=null===(p=null===(s=null===(a=null===(c=null===(r=null==i?void 0:i.products)||void 0===r?void 0:r[0])||void 0===c?void 0:c.reference)||void 0===a?void 0:a.content)||void 0===s?void 0:s.product)||void 0===p?void 0:p[0])||void 0===m?void 0:m.productId;return l.indexOf(f)-l.indexOf(y)}),i};export{S as checkGiftOrCashback,O as combineWithSmartPhone,L as combineWithVasOptions,B as fetchFilteredProducts,k as fetchOttItems,C as fetchPegaProducts,E as fetchPrice,A as fetchServiceOptions,N as fetchStaticProductIds,F as filterShogunProducts,x as findHeight,U as getShogunSharedOffer,D as getTimeUntilNextTimerEvent,$ as isShogunOfferResolved,P as isTimerActive,_ as staticCreateCart};
|
|
1
|
+
import o from"js-cookie";import{TV_SERVICE_OPTION as l,RATEPLAN as i,DEFAULT_MOBILEPOSTPAID_BUNDLE as n,VCTYPE as e,DEFAULT_WIRELINE_BUNDLE as d,ONE_ECOMMERCE_SUMMARY as u,ONE_ECOMMERCE_INTERNET_SUMMARY as t}from"../../utils/constants.js";import{fetchShogunOfferData as v,createCartV2 as r}from"../../services/LineTableService.js";import{getElementMaximumHeight as c,getLocalStorageWithExpiry as a,checkLinkWithLang as s}from"../../utils/utils.js";import{trackNewDatalayerEvent as p}from"../../utils/AnalyticsUtils.js";import{LINETABLEPRODUCT as m,ADDTOCART as f,LINETABLE as y,LINETABLEDEVICE as h,COMBINEDEVICE as g,GAEVENT as I}from"../../Analytics/AnalyticsConstants.js";import{trackEligibleItem as b,getEcomCartInfo as T}from"../../models/Analytics/items.js";import{calculateDateTime as w}from"./StaticLineTabelTimer/util.js";const D=(o,l)=>{try{const i=new Date,n=w(new Date(o.replace(/-/g,"/"))),e=w(new Date(l.replace(/-/g,"/")));return!Number.isNaN(n.getTime())&&!Number.isNaN(e.getTime())&&(i>=n&&i<e)}catch(o){return!1}},P=(o,l)=>{try{const i=w(new Date(o.replace(/-/g,"/"))),n=w(new Date(l.replace(/-/g,"/")));if(Number.isNaN(i.getTime())||Number.isNaN(n.getTime()))return 0;const e=(new Date).getTime(),d=i.getTime(),u=n.getTime();return e<d?Math.max(0,d-e):e>=d&&e<u?Math.max(0,u-e):0}catch(o){return 0}},C=(o,l,i,e,d)=>{null==o||o.map(o=>{var e,u,t,v,r,c,a,s,p,m,f,y,h,g,I,b,T,w,P,C,N,S,_,x,L;const O={id:"",promoIds:[]},E=null===(r=null===(v=null===(t=null===(u=null===(e=null==o?void 0:o.products)||void 0===e?void 0:e[0])||void 0===u?void 0:u.reference)||void 0===t?void 0:t.content)||void 0===v?void 0:v.product)||void 0===r?void 0:r[0],A=null===(m=null===(p=null===(s=null===(a=null===(c=null==o?void 0:o.promotion)||void 0===c?void 0:c[0])||void 0===a?void 0:a.reference)||void 0===s?void 0:s.content)||void 0===p?void 0:p.promoDescription)||void 0===m?void 0:m[0];null==A||A.promotionId,O.id=null==E?void 0:E.productId;const B=null===(f=null==o?void 0:o.timer)||void 0===f?void 0:f[0],M=!!B&&D(B.startTime,B.endTime),k=null===(T=null===(b=null===(I=null===(g=null===(h=null===(y=null==B?void 0:B.promotion)||void 0===y?void 0:y[0])||void 0===h?void 0:h.reference)||void 0===g?void 0:g.content)||void 0===I?void 0:I.promoDescription)||void 0===b?void 0:b[0])||void 0===T?void 0:T.promotionId,U=d&&!0===d&&""===(null==A?void 0:A.promotionId)?n:null==A?void 0:A.promotionId;if(M&&k?null===(w=null==O?void 0:O.promoIds)||void 0===w||w.push(k):null===(P=null==O?void 0:O.promoIds)||void 0===P||P.push(U),i){const l=null===(x=null===(_=null===(S=null===(N=null===(C=null==o?void 0:o.mobilePromotion)||void 0===C?void 0:C[0])||void 0===N?void 0:N.reference)||void 0===S?void 0:S.content)||void 0===_?void 0:_.promoDescription)||void 0===x?void 0:x[0];null===(L=null==O?void 0:O.promoIds)||void 0===L||L.push(null==l?void 0:l.promotionId)}null==l||l.push(O)})},N=(o,l,i)=>{var n,e,d;const u=null===(n=null==o?void 0:o.tabCaption)||void 0===n?void 0:n.replace(/\b\w/g,o=>o.toUpperCase()).replace(/\s+/g,"");return{atlOffers:[{placements:i,offerValidations:[{key:"Segment",type:"CustomerType",value:"Residential"},{key:"OrderType",type:"CustomerInterest",value:"New"},{key:"CurrentPage",type:"Context",value:"mobile-subscription"},{key:"Category",type:"CustomerInterest",value:null!=u?u:""},{key:"RequestedOfferCount",type:"Context",value:null!==(d=null===(e=null==o?void 0:o.pegaRequestOfferCount)||void 0===e?void 0:e.toString())&&void 0!==d?d:"3"},l?{key:"Tag",type:"CustomerInterest",value:l}:null].filter(Boolean)}]}},S=o=>{let l=!1,i=!1;return null==o||o.map(o=>{var n;null===(n=null==o?void 0:o.promotionInfo)||void 0===n||n.map(o=>{(null==o?void 0:o.hardwareGift)&&(l=!0),(null==o?void 0:o.cashBack)&&(i=!0)})}),{showGift:l,cashbackAvailable:i}},_=(l,i,t,v,c,p,h,g,I,T,w,D,P,C,N,S,_,x,L,O)=>{var E,A,B;if(h){l(!0);const d=a(e);0!==(null===(E=Object.keys(v))||void 0===E?void 0:E.length)&&r(v,"",(null==p?void 0:p.promoID)?null==p?void 0:p.promoID:n,i,"mobile",t,C,N,null===(B=null===(A=null==c?void 0:c.productContainer)||void 0===A?void 0:A[0])||void 0===B?void 0:B.isQoQaFlow,null==d?void 0:d.voucher,null,null,x,L,O).then(l=>{var i;o.remove("one-commerce-cartId",{path:"/"}),o.set("one-commerce-cartId",null==l?void 0:l.id,{path:"/"}),o.set("cartProduct",null==p?void 0:p.id,{path:"/"}),b(f,v,"",m),window.location.href=null===(i=null==c?void 0:c.summaryPageUrl)||void 0===i?void 0:i.cached_url}).catch(o=>{console.log(o),l(!1)}).finally(()=>{l(!1)})}else{const n="undefined"!=typeof window&&o.get("one-commerce-linecheckcorrelationid");I&&T&&n?(l(!0),0!==v.length&&r(v,g,(null==p?void 0:p.promoID)?null==p?void 0:p.promoID:d,i,"fixnet",t,"","",!1,"","",_,void 0,void 0,O).then(l=>{var i,n,e,d,t,r,a,m,h,g,I;"undefined"!=typeof window&&o.remove("one-commerce-cartId",{path:"/"}),"undefined"!=typeof window&&o.set("one-commerce-cartId",null==l?void 0:l.id,{path:"/"}),"undefined"!=typeof window&&o.set("cartProduct",null==p?void 0:p.id,{path:"/"}),"undefined"!=typeof window&&o.remove("landline"),b(f,v,"",y);const T=s(null===(i=null==S?void 0:S.productBasedCheckoutUrl)||void 0===i?void 0:i.cached_url);let w=!1;if((null===(n=v[0])||void 0===n?void 0:n.isBundle)?null===(d=null===(e=v[0])||void 0===e?void 0:e.bundledOffers)||void 0===d||d.map(o=>{var l,i,n;"internet"!==(null===(l=null==o?void 0:o.productType)||void 0===l?void 0:l.toLowerCase())&&"tv"!=(null===(i=null==o?void 0:o.productType)||void 0===i?void 0:i.toLowerCase())||(null==o?void 0:o.recommendAccessory)&&(w=null==o?void 0:o.recommendAccessory),"mobile"!==(null===(n=null==o?void 0:o.productType)||void 0===n?void 0:n.toLowerCase())||(w=!1)}):(null===(t=null==v?void 0:v[0])||void 0===t?void 0:t.recommendAccessory)&&(w=null===(r=null==v?void 0:v[0])||void 0===r?void 0:r.recommendAccessory),w){const o={flow:"WIN"};sessionStorage.setItem(u,JSON.stringify(o))}const D=T||((null==S?void 0:S.enableTVStreamingOptionsStepper)&&(null===(a=null==c?void 0:c.vasStepperURL)||void 0===a?void 0:a.cached_url)?null===(m=null==c?void 0:c.vasStepperURL)||void 0===m?void 0:m.cached_url:w&&(null===(h=null==c?void 0:c.multiItemPageRedirectionUrl)||void 0===h?void 0:h.cached_url)?null===(g=null==c?void 0:c.multiItemPageRedirectionUrl)||void 0===g?void 0:g.cached_url:null===(I=null==c?void 0:c.summaryPageUrl)||void 0===I?void 0:I.cached_url);window.location.href=D}).catch(o=>{console.log(o)}).finally(()=>{l(!1)})):(null==c?void 0:c.enableLinecheckOverlay)?w(!D):P()}},x=(o,l)=>{c(`headingV3${o}`,l),c(`descriptionV3${o}`,l),c(`titleV3${o}`,l),(()=>{let i=0;const n=[];[...Array(l)].forEach((l,e)=>{const d=document.getElementById(`timer-section${o}${e}`);if(d){n.push(d);if("true"===d.dataset.timerActive){const o=d.firstElementChild,l=parseFloat((null==o?void 0:o.style.height)||"0")||0;i=Math.max(i,l)}}}),n.forEach(o=>{const l="true"===o.dataset.timerActive;o.style.transition="height 0.3s ease",o.style.height=l?"0px":`${i}px`})})(),c(`detailsectionv3${o}`,l),c(`product-configv3${o}`,l),c(`gift-section${o}`,l),c(`benefits-section${o}`,l),c(`order-section${o}`,l),c(`price-section${o}`,l),c(`benefits-price-section${o}`,l),c(`contract-section${o}`,l),c(`exclusive-benefits-section${o}`,l),c(`discountedpricetoggle-section${o}`,l)},L=(o,l,i,e,d,u)=>{var t,v,r,c,a,s,m;const y={msisdn:null!==(t=null==e?void 0:e.msisdn)&&void 0!==t?t:"",ratePlan:null!==(v=null==e?void 0:e.ratePlan)&&void 0!==v?v:"",ratePlanType:null!==(r=null==e?void 0:e.ratePlanType)&&void 0!==r?r:"",productId:e?null==o?void 0:o.id:""},w=(null==o?void 0:o.promoID)?null==o?void 0:o.promoID:n;let D="";D=`?componentCode=&productType=subscription&segmentCode=RC&prefPromo=${null!=w?w:""}&productCode=${null!==(c=null==o?void 0:o.id)&&void 0!==c?c:""}`,window.location.href=(null===(m=null===(s=null===(a=null==l?void 0:l.addSmartPhone)||void 0===a?void 0:a[0])||void 0===s?void 0:s.buttonLink)||void 0===m?void 0:m.cached_url)+D,((o,l,i,n,e,d)=>{var u,t,v,r,c,a,s,p,m,f,y,h,g,I,b,T,w,D,P,C,N,S,_,x,L;const O=l,E=null!==(r=null===(v=null===(t=null===(u=null==O?void 0:O[0])||void 0===u?void 0:u.prices)||void 0===t?void 0:t[0])||void 0===v?void 0:v.value)&&void 0!==r?r:0,A=null!==(p=null===(s=null===(a=null===(c=null==O?void 0:O[0])||void 0===c?void 0:c.derivedPrice)||void 0===a?void 0:a[0])||void 0===s?void 0:s.value)&&void 0!==p?p:0,B=null!==(h=null===(y=null===(f=null===(m=null==O?void 0:O[0])||void 0===m?void 0:m.promotionInfo)||void 0===f?void 0:f[0])||void 0===y?void 0:y.contractDuration)&&void 0!==h?h:0,M=null!==(T=null===(b=null===(I=null===(g=null==O?void 0:O[0])||void 0===g?void 0:g.promotionInfo)||void 0===I?void 0:I[0])||void 0===b?void 0:b.campaignDuration)&&void 0!==T?T:0,k=null!=i?i:"",U=d&&(null===(P=null===(D=null===(w=null==l?void 0:l[0])||void 0===w?void 0:w.promotionInfo)||void 0===D?void 0:D[0])||void 0===P?void 0:P.id),R=d&&(null===(S=null===(N=null===(C=null==l?void 0:l[0])||void 0===C?void 0:C.promotionInfo)||void 0===N?void 0:N[0])||void 0===S?void 0:S.version),$=d?{discountRef:U,discountType:"DISCOUNT"}:null,F=[];null==F||F.push({author:"offerType",text:"ATL"}),null==F||F.push({author:"externalPromotionName",text:U}),null==F||F.push({author:"offerVersion",text:R});const V=d?F:null,j=new URLSearchParams(window.location.search).get("flow"),J={mobileSubscription:null!==(x=null===(_=null==O?void 0:O[0])||void 0===_?void 0:_.id)&&void 0!==x?x:"",mobileSubscriptionPrice:A>0?A:E,mobileSubscriptionPromo:o,subGroup:"MOBILE",duration:Number(M>0?M:B),basePrice:E,withoutPromo:!1,pretopostvalue:k,upBenefit:"MULTIMOBILE"==n.mob_benefit_category||"FMC"==n.mob_benefit_category,ultimateBundlePromo:null!==(L=null==e?void 0:e.ultimateBundlePromotion)&&void 0!==L?L:"",clientDiscountInfo:$,extraNotes:V,isOttFlow:"ott"===j};void 0!==typeof window&&sessionStorage.setItem("one-ecommerce-mobileSummary",JSON.stringify(J))})(w,i,e&&y,o,d,u),p(I,g,T(i,"",h)),b(f,i,"",h)},O=(o,l,i,e,d,u)=>{((o,l,i,n,e,d,u)=>{var v,r,c,a,s,p,m,f,y,h,g,I,b,T,w,D,P,C,N,S,_,x,L,O,E,A;const B=l,M=null!==(a=null===(c=null===(r=null===(v=null==B?void 0:B[0])||void 0===v?void 0:v.prices)||void 0===r?void 0:r[0])||void 0===c?void 0:c.value)&&void 0!==a?a:0,k=null!==(f=null===(m=null===(p=null===(s=null==B?void 0:B[0])||void 0===s?void 0:s.derivedPrice)||void 0===p?void 0:p[0])||void 0===m?void 0:m.value)&&void 0!==f?f:0,U=null!==(b=null!==(I=null===(g=null===(h=null===(y=null==B?void 0:B[0])||void 0===y?void 0:y.promotionInfo)||void 0===h?void 0:h[0])||void 0===g?void 0:g.contractDuration)&&void 0!==I?I:null==i?void 0:i.contractDuration)&&void 0!==b?b:0,R=null!==(P=null===(D=null===(w=null===(T=null==B?void 0:B[0])||void 0===T?void 0:T.promotionInfo)||void 0===w?void 0:w[0])||void 0===D?void 0:D.campaignDuration)&&void 0!==P?P:0,$=e&&(null===(S=null===(N=null===(C=null==l?void 0:l[0])||void 0===C?void 0:C.promotionInfo)||void 0===N?void 0:N[0])||void 0===S?void 0:S.id),F=e&&(null===(L=null===(x=null===(_=null==l?void 0:l[0])||void 0===_?void 0:_.promotionInfo)||void 0===x?void 0:x[0])||void 0===L?void 0:L.version),V=e?{discountRef:$,discountType:"DISCOUNT"}:null,j=[];null==j||j.push({author:"offerType",text:"ATL"}),null==j||j.push({author:"externalPromotionName",text:$}),null==j||j.push({author:"offerVersion",text:F});const J=e?j:null,G={internetSubscription:null!=d?d:"",internetSubscriptionId:null!==(E=null===(O=null==B?void 0:B[0])||void 0===O?void 0:O.id)&&void 0!==E?E:"",internetSubscriptionPrice:k>0?k:M,internetSubscriptionPromo:o,subGroup:"INTERNET",duration:Number(R>0?R:U),basePrice:M,withPromo:k>0,upBenefit:"MULTIMOBILE"==i.mob_benefit_category||"FMC"==i.mob_benefit_category,ultimateBundlePromo:null!==(A=null==n?void 0:n.ultimateBundlePromotion)&&void 0!==A?A:"",clientDiscountInfo:V,extraNotes:J,productType:"subscription",recommendAccessory:u};void 0!==typeof window&&sessionStorage.setItem(t,JSON.stringify(G))})((null==o?void 0:o.promoID)?null==o?void 0:o.promoID:n,l,o,i,e,d,u),p(I,g,T(l,"",h)),b(f,l,"",h)},E=(o,l)=>{let i;return l||(i=(o||[]).filter(o=>!0===(null==o?void 0:o.enableTV))),i},A=(o,l,i,n,e,d)=>{var u,t,v,r,c,a,s,p,m,f,y;const h={base:"",onetimePrice:"",discount:[],contractDuration:"",int_fmc:0,mob_fmc:0,mob_benefit_category:"",id:"",promoID:"",loyaltyPrice:""};let g=0,I=0,b=0;Array.isArray(o)&&(null==o||o.map(l=>{var i,n,u,t,v,r,c,a,s;h.id=null!==(i=null==l?void 0:l.id)&&void 0!==i?i:"",null===(n=null==l?void 0:l.prices)||void 0===n||n.map(o=>{var l,i;"recurring"===(null===(l=null==o?void 0:o.priceType)||void 0===l?void 0:l.toLowerCase())?e&&(null==e?void 0:e.length)>0?(null==e||e.forEach(o=>{(null==o?void 0:o.beneficiaryPrice)>0?I+=parseFloat(null==o?void 0:o.beneficiaryPrice):(null==o?void 0:o.derivedPrice)>0?I+=parseFloat(null==o?void 0:o.derivedPrice):b+=parseFloat(null==o?void 0:o.recurringPrice),(null==o?void 0:o.recurringPrice)>0&&(g+=parseFloat(null==o?void 0:o.recurringPrice))}),I>0&&(I+=b),h.base=JSON.stringify(parseFloat(null==o?void 0:o.value)+(I>0?I:g))):h.base=null==o?void 0:o.value:"one time"===(null===(i=null==o?void 0:o.priceType)||void 0===i?void 0:i.toLowerCase())&&(h.onetimePrice=null==o?void 0:o.value)}),null===(u=null==l?void 0:l.derivedPrice)||void 0===u||u.map(l=>{var i,n,u,t,v,r,c,a;const s={cycleStart:"",cycleEnd:"",value:""};s.cycleStart=d&&!(null===(i=null==o?void 0:o[0])||void 0===i?void 0:i.isBundle)&&(null===(n=null==o?void 0:o[0])||void 0===n?void 0:n.contractDuration)?1:null===(u=null==l?void 0:l.cycle)||void 0===u?void 0:u.cycleStart,s.cycleEnd=d&&!(null===(t=null==o?void 0:o[0])||void 0===t?void 0:t.isBundle)&&(null===(v=null==o?void 0:o[0])||void 0===v?void 0:v.contractDuration)?d&&!(null===(r=null==o?void 0:o[0])||void 0===r?void 0:r.isBundle)&&(null===(c=null==o?void 0:o[0])||void 0===c?void 0:c.contractDuration):null===(a=null==l?void 0:l.cycle)||void 0===a?void 0:a.cycleEnd,s.value=null==l?void 0:l.value,e&&(null==e?void 0:e.length)>0&&(s.value=I>0?JSON.stringify(parseFloat(null==l?void 0:l.value)+I):JSON.stringify(parseFloat(null==l?void 0:l.value)+g)),h.discount.push(s)}),(null===(r=null===(v=null===(t=null==l?void 0:l.promotionInfo)||void 0===t?void 0:t[0])||void 0===v?void 0:v.relatedPromo)||void 0===r?void 0:r.length)>0&&(null===(s=null===(a=null===(c=null==l?void 0:l.promotionInfo)||void 0===c?void 0:c[0])||void 0===a?void 0:a.relatedPromo)||void 0===s||s.map(o=>{"LOYALTY_DISCOUNT"===(null==o?void 0:o.type)&&(h.loyaltyPrice=null==o?void 0:o.discount)}))})),null===(t=null===(u=null==o?void 0:o[0])||void 0===u?void 0:u.bundledOffers)||void 0===t||t.forEach(o=>{var l,i,n,e,u;null===(l=null==o?void 0:o.prices)||void 0===l||l.forEach(o=>{var l,i;(null===(l=null==o?void 0:o.priceAlteration)||void 0===l?void 0:l.length)>0&&(null===(i=null==o?void 0:o.priceAlteration)||void 0===i||i.forEach(o=>{"INTERNET_FMC"==(null==o?void 0:o.priceCategory)?h.int_fmc+=Number(null==o?void 0:o.value):"MULTIMOBILE"!=(null==o?void 0:o.priceCategory)&&"MULTIMOBILE_REWARD"!=(null==o?void 0:o.priceCategory)&&"FMC"!=(null==o?void 0:o.priceCategory)||(h.mob_fmc+=Number(null==o?void 0:o.value),h.mob_benefit_category=null==o?void 0:o.priceCategory)}))}),(null==o?void 0:o.contractDuration)&&(h.contractDuration=null==o?void 0:o.contractDuration),(null===(n=null===(i=null==o?void 0:o.promotionInfo)||void 0===i?void 0:i[0])||void 0===n?void 0:n.id)&&!d&&(h.promoID=null===(u=null===(e=null==o?void 0:o.promotionInfo)||void 0===e?void 0:e[0])||void 0===u?void 0:u.id)}),(null===(v=null==o?void 0:o[0])||void 0===v?void 0:v.isBundle)||(h.contractDuration=null===(r=null==o?void 0:o[0])||void 0===r?void 0:r.contractDuration,d||(h.promoID=null===(s=null===(a=null===(c=null==o?void 0:o[0])||void 0===c?void 0:c.promotionInfo)||void 0===a?void 0:a[0])||void 0===s?void 0:s.id));let T=0;if(null===(m=null===(p=null==o?void 0:o[0])||void 0===p?void 0:p.prices)||void 0===m||m.map(o=>{var l,i;(null===(l=null==o?void 0:o.priceAlteration)||void 0===l?void 0:l.length)>0&&(null===(i=null==o?void 0:o.priceAlteration)||void 0===i||i.map(o=>{"INTERNET_FMC"==(null==o?void 0:o.priceCategory)?T+=Number(null==o?void 0:o.value):"MULTIMOBILE"!=(null==o?void 0:o.priceCategory)&&"MULTIMOBILE_REWARD"!=(null==o?void 0:o.priceCategory)&&"FMC"!=(null==o?void 0:o.priceCategory)||(h.mob_fmc+=Number(null==o?void 0:o.value),h.mob_benefit_category=null==o?void 0:o.priceCategory)}))}),(null==h?void 0:h.contractDuration)||l||(h.contractDuration="12"),h.int_fmc=h.int_fmc,"4P"==i){let l="0";null===(y=null===(f=null==o?void 0:o[0])||void 0===f?void 0:f.bundledOffers)||void 0===y||y.map(o=>{(null==o?void 0:o.contractDuration)&&(l=Number(l)>Number(null==o?void 0:o.contractDuration)?l:null==o?void 0:o.contractDuration)}),h.contractDuration=l}return h},B=(o,l)=>{var i,n;let e=o;e=o.filter(o=>{var i;const n=null===(i=null==o?void 0:o.gigaSpeed)||void 0===i?void 0:i.toLowerCase();return(null==l?void 0:l.gigaSpeed)?"hide"!=n:"show"!=n});let d=e;let u=[],t=[],v=[];for(let o of d){const l=null===(i=null==o?void 0:o.productIndex)||void 0===i?void 0:i.includes(","),e=l&&(null===(n=null==o?void 0:o.productIndex)||void 0===n?void 0:n.split(","));if(l)for(let l of e)for(let i=0;i<3;i++)Number(l)===i&&(0===i?u.push(o):1===i?t.push(o):v.push(o));else for(let l=0;l<3;l++)Number(null==o?void 0:o.productIndex)===l&&(0===l?u.push(o):1===l?t.push(o):v.push(o))}return(null==l?void 0:l.TV)&&(null==l?void 0:l.Netflix)?v:(null==l?void 0:l.TV)?t:u},M=o=>{var n;return null===(n=(null==o?void 0:o.products)||[])||void 0===n?void 0:n.map(o=>{var n,e,d;return{itemType:null!==(n=null==o?void 0:o.type)&&void 0!==n?n:"",promotionId:null!==(e=null==o?void 0:o.promo)&&void 0!==e?e:"",items:[{itemType:(null==o?void 0:o.type)===l?l:i,id:null!==(d=null==o?void 0:o.id)&&void 0!==d?d:""}]}})};let k=null;const U=o=>(null==k?void 0:k.gloxTokenId)===o&&null!==k.results,R=(o,l,i)=>{if(U(o))return Promise.resolve(k.results);if((null==k?void 0:k.gloxTokenId)===o&&null!==k.promise)return k.promise;const n=v(o,l,i).then(i=>{var n;const e=null!==(n=null==i?void 0:i[l])&&void 0!==n?n:[];return(null==k?void 0:k.gloxTokenId)===o&&(k.results=e,k.promise=null),e}).catch(l=>{throw(null==k?void 0:k.gloxTokenId)===o&&(k=null),l});return k={gloxTokenId:o,results:null,promise:n},n},$=(o,l)=>{const i=o.filter(o=>{var i,n,e,d,u,t;const v=null===(t=null===(u=null===(d=null===(e=null===(n=null===(i=null==o?void 0:o.products)||void 0===i?void 0:i[0])||void 0===n?void 0:n.reference)||void 0===e?void 0:e.content)||void 0===d?void 0:d.product)||void 0===u?void 0:u[0])||void 0===t?void 0:t.productId;return l.includes(v)});return i.sort((o,i)=>{var n,e,d,u,t,v,r,c,a,s,p,m;const f=null===(v=null===(t=null===(u=null===(d=null===(e=null===(n=null==o?void 0:o.products)||void 0===n?void 0:n[0])||void 0===e?void 0:e.reference)||void 0===d?void 0:d.content)||void 0===u?void 0:u.product)||void 0===t?void 0:t[0])||void 0===v?void 0:v.productId,y=null===(m=null===(p=null===(s=null===(a=null===(c=null===(r=null==i?void 0:i.products)||void 0===r?void 0:r[0])||void 0===c?void 0:c.reference)||void 0===a?void 0:a.content)||void 0===s?void 0:s.product)||void 0===p?void 0:p[0])||void 0===m?void 0:m.productId;return l.indexOf(f)-l.indexOf(y)}),i};export{S as checkGiftOrCashback,L as combineWithSmartPhone,O as combineWithVasOptions,B as fetchFilteredProducts,M as fetchOttItems,N as fetchPegaProducts,A as fetchPrice,E as fetchServiceOptions,C as fetchStaticProductIds,$ as filterShogunProducts,x as findHeight,R as getShogunSharedOffer,P as getTimeUntilNextTimerEvent,U as isShogunOfferResolved,D as isTimerActive,_ as staticCreateCart};
|
|
2
2
|
//# sourceMappingURL=Product.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Product.utils.js","sources":["../../../../src/components/StaticLineTable/Product.utils.ts"],"sourcesContent":["import Cookies from 'js-cookie';\r\nimport { SetStateAction } from 'react';\r\nimport {\r\n DEFAULT_MOBILEPOSTPAID_BUNDLE,\r\n DEFAULT_WIRELINE_BUNDLE,\r\n ONE_ECOMMERCE_INTERNET_SUMMARY,\r\n ONE_ECOMMERCE_SUMMARY,\r\n RATEPLAN,\r\n TV_SERVICE_OPTION,\r\n VCTYPE\r\n} from '../../utils/constants';\r\nimport { createCartV2, fetchShogunOfferData } from '../../services/LineTableService';\r\nimport {\r\n checkLinkWithLang,\r\n getElementMaximumHeight,\r\n getLocalStorageWithExpiry,\r\n returnPriceByType\r\n} from '../../utils/utils';\r\nimport { trackNewDatalayerEvent } from '../../utils/AnalyticsUtils';\r\nimport {\r\n ADDTOCART,\r\n COMBINEDEVICE,\r\n GAEVENT,\r\n LINETABLE,\r\n LINETABLEDEVICE,\r\n LINETABLEPRODUCT\r\n} from '../../Analytics/AnalyticsConstants';\r\nimport { getEcomCartInfo, trackEligibleItem } from '../../models/Analytics/items';\r\nimport { AtlOffer, OfferValidation, PegaProductRequestBase } from '../lineTable/lineTable.types';\r\nimport { calculateDateTime } from './StaticLineTabelTimer/util';\r\n\r\nexport const isTimerActive = (startTime: string, endTime: string): boolean => {\r\n try {\r\n const now = new Date();\r\n const start = calculateDateTime(new Date(startTime.replace(/-/g, '/')));\r\n const end = calculateDateTime(new Date(endTime.replace(/-/g, '/')));\r\n\r\n if (Number.isNaN(start.getTime()) || Number.isNaN(end.getTime())) {\r\n return false;\r\n }\r\n\r\n return now >= start && now < end;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\nexport const getTimeUntilNextTimerEvent = (startTime: string, endTime: string): number => {\r\n try {\r\n const start = calculateDateTime(new Date(startTime.replace(/-/g, '/')));\r\n const end = calculateDateTime(new Date(endTime.replace(/-/g, '/')));\r\n\r\n if (Number.isNaN(start.getTime()) || Number.isNaN(end.getTime())) {\r\n return 0;\r\n }\r\n\r\n const now = new Date().getTime();\r\n const startTimeMs = start.getTime();\r\n const endTimeMs = end.getTime();\r\n\r\n // Next transition is start when timer is upcoming, otherwise end when active.\r\n if (now < startTimeMs) {\r\n return Math.max(0, startTimeMs - now);\r\n }\r\n if (now >= startTimeMs && now < endTimeMs) {\r\n return Math.max(0, endTimeMs - now);\r\n }\r\n\r\n return 0;\r\n } catch {\r\n return 0;\r\n }\r\n};\r\n\r\nexport const fetchStaticProductIds = (\r\n productList: any,\r\n productId: any,\r\n bundle4PProduct?: boolean,\r\n tvOptionIds?: any,\r\n //US_31295\r\n pricesToggleState?: any\r\n): any => {\r\n let enableStream = false;\r\n let promotionId = '';\r\n productList?.map((data: any) => {\r\n const productRequest: any = {\r\n id: '',\r\n promoIds: []\r\n };\r\n\r\n const productData = data?.products?.[0]?.reference?.content?.product?.[0];\r\n const promotionData = data?.promotion?.[0]?.reference?.content?.promoDescription?.[0];\r\n promotionId = promotionData?.promotionId;\r\n productRequest['id'] = productData?.productId;\r\n const timer = data?.timer?.[0];\r\n const timerIsActive = timer ? isTimerActive(timer.startTime, timer.endTime) : false;\r\n const timerPromotionId =\r\n timer?.promotion?.[0]?.reference?.content?.promoDescription?.[0]?.promotionId;\r\n const defaultPromotionId =\r\n pricesToggleState && pricesToggleState === true && promotionData?.promotionId === ''\r\n ? DEFAULT_MOBILEPOSTPAID_BUNDLE\r\n : promotionData?.promotionId;\r\n\r\n //US_31295 - add default promo only when timer is not active and timer has no promo\r\n if (timerIsActive && timerPromotionId) {\r\n productRequest?.promoIds?.push(timerPromotionId);\r\n } else {\r\n productRequest?.promoIds?.push(defaultPromotionId);\r\n }\r\n\r\n //for 4P product\r\n if (bundle4PProduct) {\r\n const mobilePromotionData =\r\n data?.mobilePromotion?.[0]?.reference?.content?.promoDescription?.[0];\r\n productRequest?.promoIds?.push(mobilePromotionData?.promotionId);\r\n }\r\n\r\n productId?.push(productRequest);\r\n });\r\n if (enableStream) {\r\n tvOptionIds?.map((option: any) => {\r\n const tvOptionObj: any = {\r\n id: '',\r\n promoIds: []\r\n };\r\n tvOptionObj['id'] = option?.text;\r\n tvOptionObj?.promoIds?.push(promotionId);\r\n\r\n productId?.push(tvOptionObj);\r\n });\r\n }\r\n};\r\n\r\nexport const fetchPegaProducts = (\r\n content: any,\r\n pegaCustomerInterest?: string,\r\n placements?: string\r\n): PegaProductRequestBase => {\r\n // const url = window?.location?.pathname?.split('/') ?? [];\r\n // const pathname = url[url.length - 1];\r\n //set customerInterest as content?.tabCaption capitalize inital letter and after space and then remove spaces - from Other plans into OtherPlans\r\n const customerInterest = content?.tabCaption\r\n ?.replace(/\\b\\w/g, (l: string) => l.toUpperCase())\r\n .replace(/\\s+/g, '');\r\n\r\n const offerValidations = [\r\n {\r\n key: 'Segment',\r\n type: 'CustomerType',\r\n value: 'Residential'\r\n },\r\n {\r\n key: 'OrderType',\r\n type: 'CustomerInterest',\r\n value: 'New'\r\n },\r\n {\r\n key: 'CurrentPage',\r\n type: 'Context',\r\n value: 'mobile-subscription' //pathname ?? ''\r\n },\r\n {\r\n key: 'Category',\r\n type: 'CustomerInterest',\r\n value: customerInterest ?? ''\r\n },\r\n {\r\n key: 'RequestedOfferCount',\r\n type: 'Context',\r\n value: content?.pegaRequestOfferCount?.toString() ?? '3'\r\n },\r\n pegaCustomerInterest\r\n ? {\r\n key: 'Tag',\r\n type: 'CustomerInterest',\r\n value: pegaCustomerInterest\r\n }\r\n : null\r\n ].filter(Boolean) as OfferValidation[];\r\n\r\n const atlOffers: AtlOffer = {\r\n placements,\r\n offerValidations\r\n };\r\n\r\n const pegaProducts: PegaProductRequestBase = {\r\n atlOffers: [atlOffers]\r\n };\r\n\r\n return pegaProducts;\r\n};\r\n\r\nexport const checkGiftOrCashback = (data: any): any => {\r\n let showGift = false;\r\n let cashbackAvailable = false;\r\n data?.map((product: any) => {\r\n product?.promotionInfo?.map((offer: any) => {\r\n if (offer?.hardwareGift) showGift = true;\r\n if (offer?.cashBack) cashbackAvailable = true;\r\n });\r\n });\r\n return { showGift, cashbackAvailable };\r\n};\r\n\r\nexport const staticCreateCart = (\r\n setShowLoader: { (value: SetStateAction<boolean>): void; (arg0: boolean): void },\r\n cartEndPoint: string,\r\n giftItem: any,\r\n uniqueProductData: any,\r\n mainContent: any,\r\n showPrice: any,\r\n isMobileFlow: boolean,\r\n radioValue: any,\r\n eligibleBundle: any,\r\n address: any,\r\n setShowLinecheck: any,\r\n showLinecheck: any,\r\n lineCheckCallBack: any,\r\n enableP2P: any,\r\n P2PData: any,\r\n content: any,\r\n tvOptions?: any,\r\n discountRef?: string,\r\n discountVersion?: string,\r\n // Shogun/rewards (loyalty) flow — forwarded verbatim to createCartV2 so it\r\n // can append the pointsBurnt note at the item level (RATEPLAN for MOBILE,\r\n // internet item for FIXNET).\r\n rewardsInfo?: { pointsBurnt?: string | number }\r\n): any => {\r\n if (isMobileFlow) {\r\n setShowLoader(true);\r\n const vcType: { voucher: string; voucherType: string } = getLocalStorageWithExpiry(VCTYPE);\r\n Object.keys(uniqueProductData)?.length !== 0 &&\r\n createCartV2(\r\n uniqueProductData,\r\n '',\r\n showPrice?.promoID ? showPrice?.promoID : DEFAULT_MOBILEPOSTPAID_BUNDLE,\r\n cartEndPoint,\r\n 'mobile',\r\n giftItem,\r\n enableP2P,\r\n P2PData,\r\n mainContent?.productContainer?.[0]?.isQoQaFlow,\r\n vcType?.voucher,\r\n null,\r\n null,\r\n discountRef,\r\n discountVersion,\r\n rewardsInfo\r\n )\r\n .then((res: any) => {\r\n Cookies.remove('one-commerce-cartId', { path: '/' });\r\n // saving newly created cartid in the cookies.\r\n Cookies.set('one-commerce-cartId', res?.id, { path: '/' });\r\n Cookies.set('cartProduct', showPrice?.id, { path: '/' });\r\n trackEligibleItem(ADDTOCART, uniqueProductData, '', LINETABLEPRODUCT);\r\n window.location.href = mainContent?.summaryPageUrl?.cached_url;\r\n })\r\n .catch((err) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err);\r\n setShowLoader(false);\r\n })\r\n .finally(() => {\r\n setShowLoader(false);\r\n });\r\n } else {\r\n const linecheckId: any =\r\n typeof window !== 'undefined' && Cookies.get('one-commerce-linecheckcorrelationid');\r\n if (!eligibleBundle || !address || !linecheckId) {\r\n mainContent?.enableLinecheckOverlay ? setShowLinecheck(!showLinecheck) : lineCheckCallBack();\r\n } else {\r\n setShowLoader(true);\r\n uniqueProductData.length !== 0 &&\r\n createCartV2(\r\n uniqueProductData,\r\n radioValue,\r\n showPrice?.promoID ? showPrice?.promoID : DEFAULT_WIRELINE_BUNDLE,\r\n cartEndPoint,\r\n 'fixnet',\r\n giftItem,\r\n '',\r\n '',\r\n false,\r\n '',\r\n '',\r\n tvOptions,\r\n undefined,\r\n undefined,\r\n rewardsInfo\r\n )\r\n .then((res: any) => {\r\n typeof window !== 'undefined' && Cookies.remove('one-commerce-cartId', { path: '/' });\r\n // saving newly created cartid in the cookies.\r\n typeof window !== 'undefined' &&\r\n Cookies.set('one-commerce-cartId', res?.id, { path: '/' });\r\n typeof window !== 'undefined' &&\r\n Cookies.set('cartProduct', showPrice?.id, { path: '/' });\r\n typeof window !== 'undefined' && Cookies.remove('landline');\r\n trackEligibleItem(ADDTOCART, uniqueProductData, '', LINETABLE);\r\n const productUrl = checkLinkWithLang(content?.productBasedCheckoutUrl?.cached_url);\r\n let recommendAccessory = false;\r\n /**Check if bundle or Internet and add it to cart request*/\r\n if (uniqueProductData[0]?.isBundle) {\r\n uniqueProductData[0]?.bundledOffers?.map((item: any) => {\r\n if (\r\n item?.productType?.toLowerCase() === 'internet' ||\r\n item?.productType?.toLowerCase() == 'tv'\r\n ) {\r\n if (item?.recommendAccessory) {\r\n recommendAccessory = item?.recommendAccessory;\r\n }\r\n }\r\n // setting to false incase of Mobile product Type as it is currently out of scope\r\n if (item?.productType?.toLowerCase() === 'mobile') {\r\n recommendAccessory = false;\r\n return;\r\n }\r\n });\r\n } else {\r\n /**Add standlone product such as internet to cart request*/\r\n if (uniqueProductData?.[0]?.recommendAccessory) {\r\n recommendAccessory = uniqueProductData?.[0]?.recommendAccessory;\r\n }\r\n }\r\n //setting the session to identify internet flow for mia for win\r\n if (recommendAccessory) {\r\n const sessionObj = { flow: 'WIN' };\r\n sessionStorage.setItem(ONE_ECOMMERCE_SUMMARY, JSON.stringify(sessionObj));\r\n }\r\n\r\n const finalURL = productUrl\r\n ? productUrl\r\n : content?.enableTVStreamingOptionsStepper && mainContent?.vasStepperURL?.cached_url\r\n ? mainContent?.vasStepperURL?.cached_url\r\n : recommendAccessory && mainContent?.multiItemPageRedirectionUrl?.cached_url\r\n ? mainContent?.multiItemPageRedirectionUrl?.cached_url\r\n : mainContent?.summaryPageUrl?.cached_url;\r\n\r\n window.location.href = finalURL;\r\n })\r\n .catch((err: any) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err);\r\n })\r\n .finally(() => {\r\n setShowLoader(false);\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const findHeight = (tabIndex: number, cardsLength: number) => {\r\n const setTimerSectionHeight = () => {\r\n let maxActiveTimerHeight = 0;\r\n const timerSections: HTMLElement[] = [];\r\n\r\n [...Array(cardsLength)].forEach((_, index) => {\r\n const timerSection = document.getElementById(`timer-section${tabIndex}${index}`);\r\n if (timerSection) {\r\n timerSections.push(timerSection);\r\n const isTimerActive = timerSection.dataset.timerActive === 'true';\r\n if (isTimerActive) {\r\n const spacer = timerSection.firstElementChild as HTMLElement | null;\r\n // Read the inline style target height instead of clientHeight so that\r\n // an in-progress CSS transition does not yield an intermediate value.\r\n const targetHeight = parseFloat(spacer?.style.height || '0') || 0;\r\n maxActiveTimerHeight = Math.max(maxActiveTimerHeight, targetHeight);\r\n }\r\n }\r\n });\r\n\r\n timerSections.forEach((timerSection) => {\r\n const isTimerActive = timerSection.dataset.timerActive === 'true';\r\n timerSection.style.transition = 'height 0.3s ease';\r\n timerSection.style.height = isTimerActive ? '0px' : `${maxActiveTimerHeight}px`;\r\n });\r\n };\r\n\r\n getElementMaximumHeight('headingV3' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('descriptionV3' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('titleV3' + `${tabIndex}`, cardsLength);\r\n setTimerSectionHeight();\r\n getElementMaximumHeight('detailsectionv3' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('product-configv3' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('gift-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('benefits-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('order-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('price-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('benefits-price-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('contract-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('exclusive-benefits-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('discountedpricetoggle-section' + `${tabIndex}`, cardsLength);\r\n};\r\n\r\nconst setMobileSummarySession = (\r\n promoId: string,\r\n uniqueProductData: any,\r\n pretopostvalues?: any,\r\n showPrice?: any,\r\n product?: any,\r\n pegaIntegration?: any\r\n) => {\r\n const productPrice = uniqueProductData;\r\n const base: number = productPrice?.[0]?.prices?.[0]?.value ?? 0;\r\n const discount = productPrice?.[0]?.derivedPrice?.[0]?.value ?? 0;\r\n const contractDuration = productPrice?.[0]?.promotionInfo?.[0]?.contractDuration ?? 0;\r\n const campaignDuration = productPrice?.[0]?.promotionInfo?.[0]?.campaignDuration ?? 0;\r\n const pretopostvalue = pretopostvalues ?? '';\r\n //PEGA Integration\r\n const discountRef = pegaIntegration && uniqueProductData?.[0]?.promotionInfo?.[0]?.id;\r\n const discountVersion = pegaIntegration && uniqueProductData?.[0]?.promotionInfo?.[0]?.version;\r\n const clientDiscountInfo = pegaIntegration\r\n ? {\r\n discountRef: discountRef,\r\n discountType: 'DISCOUNT'\r\n }\r\n : null;\r\n const note = [];\r\n note?.push({\r\n author: 'offerType',\r\n text: 'ATL'\r\n });\r\n note?.push({\r\n author: 'externalPromotionName',\r\n text: discountRef\r\n });\r\n note?.push({\r\n author: 'offerVersion',\r\n text: discountVersion\r\n });\r\n\r\n const extraNotes = pegaIntegration ? note : null;\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const flow = urlParams.get('flow');\r\n const sessionObj: any = {\r\n mobileSubscription: productPrice?.[0]?.id ?? '',\r\n mobileSubscriptionPrice: discount > 0 ? discount : base,\r\n mobileSubscriptionPromo: promoId,\r\n subGroup: 'MOBILE',\r\n duration: Number(campaignDuration > 0 ? campaignDuration : contractDuration),\r\n basePrice: base,\r\n withoutPromo: false,\r\n pretopostvalue: pretopostvalue,\r\n upBenefit:\r\n showPrice.mob_benefit_category == 'MULTIMOBILE' || showPrice.mob_benefit_category == 'FMC',\r\n ultimateBundlePromo: product?.ultimateBundlePromotion ?? '',\r\n clientDiscountInfo: clientDiscountInfo,\r\n extraNotes: extraNotes,\r\n isOttFlow: flow === 'ott' ? true : false\r\n };\r\n\r\n typeof window !== undefined &&\r\n sessionStorage.setItem('one-ecommerce-mobileSummary', JSON.stringify(sessionObj));\r\n};\r\n\r\nexport const combineWithSmartPhone = (\r\n showPrice: any,\r\n storyContent: any,\r\n uniqueProductData: any,\r\n responseData?: any,\r\n product?: any,\r\n pegaIntegration?: boolean\r\n) => {\r\n const pretopostvalues = {\r\n msisdn: responseData?.msisdn ?? '',\r\n ratePlan: responseData?.ratePlan ?? '',\r\n ratePlanType: responseData?.ratePlanType ?? '',\r\n productId: responseData ? showPrice?.id : ''\r\n };\r\n const promoId = showPrice?.promoID ? showPrice?.promoID : DEFAULT_MOBILEPOSTPAID_BUNDLE;\r\n let Params = '';\r\n Params = `?componentCode=&productType=subscription&segmentCode=RC&prefPromo=${\r\n promoId ?? ''\r\n }&productCode=${showPrice?.id ?? ''}`;\r\n window.location.href = storyContent?.addSmartPhone?.[0]?.buttonLink?.cached_url + Params;\r\n setMobileSummarySession(\r\n promoId,\r\n uniqueProductData,\r\n responseData && pretopostvalues,\r\n showPrice,\r\n product,\r\n pegaIntegration\r\n );\r\n trackNewDatalayerEvent(\r\n GAEVENT,\r\n COMBINEDEVICE,\r\n getEcomCartInfo(uniqueProductData, '', LINETABLEDEVICE)\r\n );\r\n trackEligibleItem(ADDTOCART, uniqueProductData, '', LINETABLEDEVICE);\r\n};\r\n\r\nconst setFixnetSummarySession = (\r\n promoId: string,\r\n uniqueProductData: any,\r\n showPrice?: any,\r\n product?: any,\r\n pegaIntegration?: any,\r\n productName?: string,\r\n recommendAccessory?: boolean | undefined\r\n) => {\r\n const productPrice = uniqueProductData;\r\n const base: number = productPrice?.[0]?.prices?.[0]?.value ?? 0;\r\n const discount = productPrice?.[0]?.derivedPrice?.[0]?.value ?? 0;\r\n const contractDuration =\r\n productPrice?.[0]?.promotionInfo?.[0]?.contractDuration ?? showPrice?.contractDuration ?? 0;\r\n const campaignDuration = productPrice?.[0]?.promotionInfo?.[0]?.campaignDuration ?? 0;\r\n\r\n //PEGA Integration\r\n const discountRef = pegaIntegration && uniqueProductData?.[0]?.promotionInfo?.[0]?.id;\r\n const discountVersion = pegaIntegration && uniqueProductData?.[0]?.promotionInfo?.[0]?.version;\r\n const clientDiscountInfo = pegaIntegration\r\n ? {\r\n discountRef: discountRef,\r\n discountType: 'DISCOUNT'\r\n }\r\n : null;\r\n const note = [];\r\n note?.push({\r\n author: 'offerType',\r\n text: 'ATL'\r\n });\r\n note?.push({\r\n author: 'externalPromotionName',\r\n text: discountRef\r\n });\r\n note?.push({\r\n author: 'offerVersion',\r\n text: discountVersion\r\n });\r\n\r\n const extraNotes = pegaIntegration ? note : null;\r\n\r\n const sessionObj: any = {\r\n internetSubscription: productName ?? '',\r\n internetSubscriptionId: productPrice?.[0]?.id ?? '',\r\n internetSubscriptionPrice: discount > 0 ? discount : base,\r\n internetSubscriptionPromo: promoId,\r\n subGroup: 'INTERNET',\r\n duration: Number(campaignDuration > 0 ? campaignDuration : contractDuration),\r\n basePrice: base,\r\n withPromo: discount > 0 ? true : false,\r\n upBenefit:\r\n showPrice.mob_benefit_category == 'MULTIMOBILE' || showPrice.mob_benefit_category == 'FMC',\r\n ultimateBundlePromo: product?.ultimateBundlePromotion ?? '',\r\n clientDiscountInfo: clientDiscountInfo,\r\n extraNotes: extraNotes,\r\n productType: 'subscription',\r\n recommendAccessory: recommendAccessory\r\n };\r\n\r\n typeof window !== undefined &&\r\n sessionStorage.setItem(ONE_ECOMMERCE_INTERNET_SUMMARY, JSON.stringify(sessionObj));\r\n};\r\nexport const combineWithVasOptions = (\r\n showPrice: any,\r\n uniqueProductData: any,\r\n product?: any,\r\n pegaIntegration?: boolean,\r\n productName?: string,\r\n recommendAccessory?: boolean\r\n) => {\r\n const promoId = showPrice?.promoID ? showPrice?.promoID : DEFAULT_MOBILEPOSTPAID_BUNDLE;\r\n\r\n setFixnetSummarySession(\r\n promoId,\r\n uniqueProductData,\r\n showPrice,\r\n product,\r\n pegaIntegration,\r\n productName,\r\n recommendAccessory\r\n );\r\n trackNewDatalayerEvent(\r\n GAEVENT,\r\n COMBINEDEVICE,\r\n getEcomCartInfo(uniqueProductData, '', LINETABLEDEVICE)\r\n );\r\n trackEligibleItem(ADDTOCART, uniqueProductData, '', LINETABLEDEVICE);\r\n};\r\n\r\nexport const fetchServiceOptions = (entitlement: any, isMobileFlow: boolean) => {\r\n let service: any;\r\n if (!isMobileFlow) {\r\n service = (entitlement || []).filter((product: any) => product?.enableTV === true);\r\n }\r\n return service;\r\n};\r\n\r\nexport const fetchPrice = (\r\n product: any,\r\n isMobileFlow: boolean,\r\n pageType?: string,\r\n isConfigurator?: boolean,\r\n tvOptions?: any[],\r\n pegaIntegration?: boolean\r\n): any => {\r\n const showPrice: any = {\r\n base: '',\r\n onetimePrice: '',\r\n discount: [],\r\n contractDuration: '',\r\n int_fmc: 0,\r\n mob_fmc: 0,\r\n mob_benefit_category: '',\r\n id: '',\r\n promoID: '',\r\n loyaltyPrice: ''\r\n };\r\n let tvOptionsBasePrice = 0;\r\n let tvOptionsDiscountPrice = 0;\r\n let tvOptionsBaseToDiscount = 0;\r\n\r\n Array.isArray(product) &&\r\n product?.map((item: any) => {\r\n showPrice['id'] = item?.id ?? '';\r\n item?.prices?.map((basePrice: any) => {\r\n if (basePrice?.priceType?.toLowerCase() === 'recurring') {\r\n if (tvOptions && tvOptions?.length > 0) {\r\n tvOptions?.forEach((opt: any) => {\r\n if (opt?.beneficiaryPrice > 0) {\r\n tvOptionsDiscountPrice += parseFloat(opt?.beneficiaryPrice);\r\n } else if (opt?.derivedPrice > 0) {\r\n tvOptionsDiscountPrice += parseFloat(opt?.derivedPrice);\r\n } else {\r\n tvOptionsBaseToDiscount += parseFloat(opt?.recurringPrice);\r\n }\r\n if (opt?.recurringPrice > 0) {\r\n tvOptionsBasePrice += parseFloat(opt?.recurringPrice);\r\n }\r\n });\r\n //If one of the options in the list has a discount, other options base price is stored to sum it up in the end\r\n if (tvOptionsDiscountPrice > 0) {\r\n tvOptionsDiscountPrice += tvOptionsBaseToDiscount;\r\n }\r\n showPrice['base'] = JSON.stringify(\r\n parseFloat(basePrice?.value) +\r\n (tvOptionsDiscountPrice > 0 ? tvOptionsDiscountPrice : tvOptionsBasePrice)\r\n );\r\n } else {\r\n showPrice['base'] = basePrice?.value;\r\n }\r\n } else if (basePrice?.priceType?.toLowerCase() === 'one time')\r\n showPrice['onetimePrice'] = basePrice?.value;\r\n });\r\n item?.derivedPrice?.map((discountPrice: any) => {\r\n const cycle = { cycleStart: '', cycleEnd: '', value: '' };\r\n cycle['cycleStart'] =\r\n pegaIntegration && !product?.[0]?.isBundle && product?.[0]?.contractDuration\r\n ? 1\r\n : discountPrice?.cycle?.cycleStart;\r\n cycle['cycleEnd'] =\r\n pegaIntegration && !product?.[0]?.isBundle && product?.[0]?.contractDuration\r\n ? pegaIntegration && !product?.[0]?.isBundle && product?.[0]?.contractDuration\r\n : discountPrice?.cycle?.cycleEnd;\r\n cycle['value'] = discountPrice?.value;\r\n if (tvOptions && tvOptions?.length > 0) {\r\n if (tvOptionsDiscountPrice > 0) {\r\n cycle['value'] = JSON.stringify(\r\n parseFloat(discountPrice?.value) + tvOptionsDiscountPrice\r\n );\r\n } else {\r\n cycle['value'] = JSON.stringify(parseFloat(discountPrice?.value) + tvOptionsBasePrice);\r\n }\r\n }\r\n showPrice['discount'].push(cycle);\r\n });\r\n // Calculating loyalty price introduced with DC portfolio\r\n if (item?.promotionInfo?.[0]?.relatedPromo?.length > 0) {\r\n item?.promotionInfo?.[0]?.relatedPromo?.map((promo: any) => {\r\n if (promo?.type === 'LOYALTY_DISCOUNT') {\r\n showPrice['loyaltyPrice'] = promo?.discount;\r\n }\r\n });\r\n }\r\n });\r\n\r\n product?.[0]?.bundledOffers?.forEach((item: any) => {\r\n item?.prices?.forEach((productDetails: any) => {\r\n if (productDetails?.priceAlteration?.length > 0) {\r\n productDetails?.priceAlteration?.forEach((price: any) => {\r\n if (price?.priceCategory == 'INTERNET_FMC') {\r\n showPrice['int_fmc'] += Number(price?.value);\r\n } else if (price?.priceCategory == 'MULTIMOBILE' || price?.priceCategory == 'FMC') {\r\n showPrice['mob_fmc'] += Number(price?.value);\r\n showPrice['mob_benefit_category'] = price?.priceCategory;\r\n }\r\n });\r\n }\r\n });\r\n if (item?.contractDuration) {\r\n showPrice['contractDuration'] = item?.contractDuration; // for bundled products contract duration is taken from bundled offers\r\n }\r\n if (item?.promotionInfo?.[0]?.id && !pegaIntegration) {\r\n showPrice['promoID'] = item?.promotionInfo?.[0]?.id;\r\n }\r\n });\r\n if (!product?.[0]?.isBundle) {\r\n showPrice['contractDuration'] = product?.[0]?.contractDuration; // for other products\r\n if (!pegaIntegration) {\r\n showPrice['promoID'] = product?.[0]?.promotionInfo?.[0]?.id;\r\n }\r\n }\r\n let int_fmc = 0;\r\n product?.[0]?.prices?.map((productDetails: any) => {\r\n if (productDetails?.priceAlteration?.length > 0) {\r\n productDetails?.priceAlteration?.map((price: any) => {\r\n if (price?.priceCategory == 'INTERNET_FMC') {\r\n int_fmc += Number(price?.value);\r\n } else if (price?.priceCategory == 'MULTIMOBILE' || price?.priceCategory == 'FMC') {\r\n showPrice['mob_fmc'] += Number(price?.value);\r\n showPrice['mob_benefit_category'] = price?.priceCategory;\r\n }\r\n });\r\n }\r\n });\r\n if (!showPrice?.contractDuration && !isMobileFlow) {\r\n showPrice['contractDuration'] = '12';\r\n }\r\n {\r\n showPrice['int_fmc'] = isConfigurator ? int_fmc : showPrice['int_fmc'];\r\n }\r\n if (pageType == '4P') {\r\n let bundleContractDuration = '0';\r\n product?.[0]?.bundledOffers?.map((offerData: any) => {\r\n if (offerData?.contractDuration) {\r\n bundleContractDuration =\r\n Number(bundleContractDuration) > Number(offerData?.contractDuration)\r\n ? bundleContractDuration\r\n : offerData?.contractDuration;\r\n }\r\n });\r\n showPrice['contractDuration'] = bundleContractDuration;\r\n }\r\n return showPrice;\r\n};\r\n\r\n//function for creating different array for 3 selections\r\nexport const fetchFilteredProducts = (productList: any, toggleState: any) => {\r\n //need to centralize for comman solution\r\n // Filter productList based on gigaSpeed toggle - US #363853\r\n let filteredList = productList;\r\n\r\n filteredList = productList.filter((item: any) => {\r\n const gigaSpeedValue = item?.gigaSpeed?.toLowerCase();\r\n if (toggleState?.gigaSpeed) {\r\n return gigaSpeedValue != 'hide';\r\n } else {\r\n return gigaSpeedValue != 'show';\r\n }\r\n });\r\n\r\n let mainArray = filteredList;\r\n const numberOfArray = 3;\r\n let res1 = [];\r\n let res2 = [];\r\n let res3 = [];\r\n for (let item of mainArray) {\r\n const multiIndex = item?.productIndex?.includes(',');\r\n const updatedMultiIndex = multiIndex && item?.productIndex?.split(',');\r\n if (multiIndex) {\r\n for (let mIndex of updatedMultiIndex) {\r\n for (let i = 0; i < numberOfArray; i++) {\r\n if (Number(mIndex) === i) {\r\n i === 0 ? res1.push(item) : i === 1 ? res2.push(item) : res3.push(item);\r\n }\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < numberOfArray; i++) {\r\n if (Number(item?.productIndex) === i) {\r\n i === 0 ? res1.push(item) : i === 1 ? res2.push(item) : res3.push(item);\r\n }\r\n }\r\n }\r\n }\r\n const displayContent =\r\n toggleState?.TV && toggleState?.Netflix ? res3 : toggleState?.TV ? res2 : res1;\r\n return displayContent;\r\n};\r\nexport const fetchOttItems = (ottCartData: any) => {\r\n return (ottCartData?.products || [])?.map((products: any) => ({\r\n itemType: products?.type ?? '',\r\n promotionId: products?.promo ?? '',\r\n items: [\r\n {\r\n itemType: products?.type === TV_SERVICE_OPTION ? TV_SERVICE_OPTION : RATEPLAN,\r\n id: products?.id ?? ''\r\n }\r\n ]\r\n }));\r\n};\r\n\r\n// ─── Shogun shared-offer cache ────────────────────────────────────────────────\r\n\r\ninterface ShogunOfferCacheEntry {\r\n gloxTokenId: string;\r\n results: any[] | null;\r\n promise: Promise<any[]> | null;\r\n}\r\n\r\nlet shogunOfferSharedCache: ShogunOfferCacheEntry | null = null;\r\n\r\n/**\r\n * Returns true when the shared cache already holds resolved results for the\r\n * given token. Callers can use this to skip triggering a loading state.\r\n */\r\nexport const isShogunOfferResolved = (gloxTokenId: string): boolean =>\r\n shogunOfferSharedCache?.gloxTokenId === gloxTokenId &&\r\n shogunOfferSharedCache.results !== null;\r\n\r\n/**\r\n * Shared-promise manager for the Shogun offer API.\r\n *\r\n * Because the Shogun flow sends no product payload (only gloxTokenId) the\r\n * response is identical for every StaticProductContainer on the page.\r\n * This function ensures exactly one network request is made:\r\n * - If results are already resolved → returns Promise.resolve(results)\r\n * - If a fetch is in-flight → returns the same promise\r\n * - First caller → creates the fetch and stores the promise\r\n *\r\n * On failure the promise rejects — the caller is responsible for surfacing\r\n * the error (e.g. showing the telesales/error popup). The failure is NOT\r\n * cached, so a retry (e.g. tab switch) will trigger a fresh request.\r\n */\r\nexport const getShogunSharedOffer = (\r\n gloxTokenId: string,\r\n uniqueId: string,\r\n offerEndpoint: string\r\n): Promise<any[]> => {\r\n // Already resolved\r\n if (isShogunOfferResolved(gloxTokenId)) {\r\n return Promise.resolve(shogunOfferSharedCache!.results!);\r\n }\r\n\r\n // In-flight\r\n if (\r\n shogunOfferSharedCache?.gloxTokenId === gloxTokenId &&\r\n shogunOfferSharedCache.promise !== null\r\n ) {\r\n return shogunOfferSharedCache.promise;\r\n }\r\n\r\n // First caller — start the real fetch\r\n const fetchPromise: Promise<any[]> = fetchShogunOfferData(gloxTokenId, uniqueId, offerEndpoint)\r\n .then((resp: any) => {\r\n const results: any[] = resp?.[uniqueId] ?? [];\r\n if (shogunOfferSharedCache?.gloxTokenId === gloxTokenId) {\r\n shogunOfferSharedCache.results = results;\r\n shogunOfferSharedCache.promise = null;\r\n }\r\n return results;\r\n })\r\n .catch((err: any) => {\r\n // Clear the cache entry so the next call retries the API.\r\n if (shogunOfferSharedCache?.gloxTokenId === gloxTokenId) {\r\n shogunOfferSharedCache = null;\r\n }\r\n throw err;\r\n });\r\n\r\n shogunOfferSharedCache = { gloxTokenId, results: null, promise: fetchPromise };\r\n return fetchPromise;\r\n};\r\n\r\n\r\n/**\r\n * Filters and sorts the Storyblok product list to match only the products\r\n * returned by the Shogun offer API, preserving the API response order.\r\n */\r\nexport const filterShogunProducts = (\r\n availableProducts: any[],\r\n shogunProductIds: string[]\r\n): any[] => {\r\n const filtered = availableProducts.filter((product: any) => {\r\n const productId = product?.products?.[0]?.reference?.content?.product?.[0]?.productId;\r\n return shogunProductIds.includes(productId);\r\n });\r\n\r\n filtered.sort((a: any, b: any) => {\r\n const aId = a?.products?.[0]?.reference?.content?.product?.[0]?.productId;\r\n const bId = b?.products?.[0]?.reference?.content?.product?.[0]?.productId;\r\n return shogunProductIds.indexOf(aId) - shogunProductIds.indexOf(bId);\r\n });\r\n\r\n return filtered;\r\n};\r\n"],"names":["isTimerActive","startTime","endTime","now","Date","start","calculateDateTime","replace","end","Number","isNaN","getTime","_a","getTimeUntilNextTimerEvent","startTimeMs","endTimeMs","Math","max","fetchStaticProductIds","productList","productId","bundle4PProduct","tvOptionIds","pricesToggleState","map","data","productRequest","id","promoIds","productData","_e","_d","_c","_b","products","reference","content","product","promotionData","_k","_j","_h","_g","_f","promotion","promoDescription","promotionId","timer","_l","timerIsActive","timerPromotionId","_s","_r","_q","_p","_o","_m","defaultPromotionId","DEFAULT_MOBILEPOSTPAID_BUNDLE","_t","push","_u","mobilePromotionData","_z","_y","_x","_w","_v","mobilePromotion","_0","fetchPegaProducts","pegaCustomerInterest","placements","customerInterest","tabCaption","l","toUpperCase","atlOffers","offerValidations","key","type","value","pegaRequestOfferCount","toString","filter","Boolean","checkGiftOrCashback","showGift","cashbackAvailable","promotionInfo","offer","hardwareGift","cashBack","staticCreateCart","setShowLoader","cartEndPoint","giftItem","uniqueProductData","mainContent","showPrice","isMobileFlow","radioValue","eligibleBundle","address","setShowLinecheck","showLinecheck","lineCheckCallBack","enableP2P","P2PData","tvOptions","discountRef","discountVersion","rewardsInfo","vcType","getLocalStorageWithExpiry","VCTYPE","Object","keys","length","createCartV2","promoID","productContainer","isQoQaFlow","voucher","then","res","Cookies","remove","path","set","trackEligibleItem","ADDTOCART","LINETABLEPRODUCT","window","location","href","summaryPageUrl","cached_url","catch","err","console","log","finally","linecheckId","get","DEFAULT_WIRELINE_BUNDLE","undefined","LINETABLE","productUrl","checkLinkWithLang","productBasedCheckoutUrl","recommendAccessory","isBundle","bundledOffers","item","productType","toLowerCase","sessionObj","flow","sessionStorage","setItem","ONE_ECOMMERCE_SUMMARY","JSON","stringify","finalURL","enableTVStreamingOptionsStepper","vasStepperURL","multiItemPageRedirectionUrl","enableLinecheckOverlay","findHeight","tabIndex","cardsLength","getElementMaximumHeight","maxActiveTimerHeight","timerSections","Array","forEach","_","index","timerSection","document","getElementById","dataset","timerActive","spacer","firstElementChild","targetHeight","parseFloat","style","height","transition","setTimerSectionHeight","combineWithSmartPhone","storyContent","responseData","pegaIntegration","pretopostvalues","msisdn","ratePlan","ratePlanType","promoId","Params","addSmartPhone","buttonLink","productPrice","base","prices","discount","derivedPrice","contractDuration","campaignDuration","pretopostvalue","version","clientDiscountInfo","discountType","note","author","text","extraNotes","URLSearchParams","search","mobileSubscription","mobileSubscriptionPrice","mobileSubscriptionPromo","subGroup","duration","basePrice","withoutPromo","upBenefit","mob_benefit_category","ultimateBundlePromo","ultimateBundlePromotion","isOttFlow","setMobileSummarySession","trackNewDatalayerEvent","GAEVENT","COMBINEDEVICE","getEcomCartInfo","LINETABLEDEVICE","combineWithVasOptions","productName","internetSubscription","internetSubscriptionId","internetSubscriptionPrice","internetSubscriptionPromo","withPromo","_1","ONE_ECOMMERCE_INTERNET_SUMMARY","setFixnetSummarySession","fetchServiceOptions","entitlement","service","enableTV","fetchPrice","pageType","isConfigurator","onetimePrice","int_fmc","mob_fmc","loyaltyPrice","tvOptionsBasePrice","tvOptionsDiscountPrice","tvOptionsBaseToDiscount","isArray","priceType","opt","beneficiaryPrice","recurringPrice","discountPrice","cycle","cycleStart","cycleEnd","relatedPromo","promo","productDetails","priceAlteration","price","priceCategory","bundleContractDuration","offerData","fetchFilteredProducts","toggleState","filteredList","gigaSpeedValue","gigaSpeed","mainArray","res1","res2","res3","multiIndex","productIndex","includes","updatedMultiIndex","split","mIndex","i","TV","Netflix","fetchOttItems","ottCartData","itemType","items","TV_SERVICE_OPTION","RATEPLAN","shogunOfferSharedCache","isShogunOfferResolved","gloxTokenId","results","getShogunSharedOffer","uniqueId","offerEndpoint","Promise","resolve","promise","fetchPromise","fetchShogunOfferData","resp","filterShogunProducts","availableProducts","shogunProductIds","filtered","sort","a","b","aId","bId","indexOf"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Product.utils.js","sources":["../../../../src/components/StaticLineTable/Product.utils.ts"],"sourcesContent":["import Cookies from 'js-cookie';\r\nimport { SetStateAction } from 'react';\r\nimport {\r\n DEFAULT_MOBILEPOSTPAID_BUNDLE,\r\n DEFAULT_WIRELINE_BUNDLE,\r\n ONE_ECOMMERCE_INTERNET_SUMMARY,\r\n ONE_ECOMMERCE_SUMMARY,\r\n RATEPLAN,\r\n TV_SERVICE_OPTION,\r\n VCTYPE\r\n} from '../../utils/constants';\r\nimport { createCartV2, fetchShogunOfferData } from '../../services/LineTableService';\r\nimport {\r\n checkLinkWithLang,\r\n getElementMaximumHeight,\r\n getLocalStorageWithExpiry,\r\n returnPriceByType\r\n} from '../../utils/utils';\r\nimport { trackNewDatalayerEvent } from '../../utils/AnalyticsUtils';\r\nimport {\r\n ADDTOCART,\r\n COMBINEDEVICE,\r\n GAEVENT,\r\n LINETABLE,\r\n LINETABLEDEVICE,\r\n LINETABLEPRODUCT\r\n} from '../../Analytics/AnalyticsConstants';\r\nimport { getEcomCartInfo, trackEligibleItem } from '../../models/Analytics/items';\r\nimport { AtlOffer, OfferValidation, PegaProductRequestBase } from '../lineTable/lineTable.types';\r\nimport { calculateDateTime } from './StaticLineTabelTimer/util';\r\n\r\nexport const isTimerActive = (startTime: string, endTime: string): boolean => {\r\n try {\r\n const now = new Date();\r\n const start = calculateDateTime(new Date(startTime.replace(/-/g, '/')));\r\n const end = calculateDateTime(new Date(endTime.replace(/-/g, '/')));\r\n\r\n if (Number.isNaN(start.getTime()) || Number.isNaN(end.getTime())) {\r\n return false;\r\n }\r\n\r\n return now >= start && now < end;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\nexport const getTimeUntilNextTimerEvent = (startTime: string, endTime: string): number => {\r\n try {\r\n const start = calculateDateTime(new Date(startTime.replace(/-/g, '/')));\r\n const end = calculateDateTime(new Date(endTime.replace(/-/g, '/')));\r\n\r\n if (Number.isNaN(start.getTime()) || Number.isNaN(end.getTime())) {\r\n return 0;\r\n }\r\n\r\n const now = new Date().getTime();\r\n const startTimeMs = start.getTime();\r\n const endTimeMs = end.getTime();\r\n\r\n // Next transition is start when timer is upcoming, otherwise end when active.\r\n if (now < startTimeMs) {\r\n return Math.max(0, startTimeMs - now);\r\n }\r\n if (now >= startTimeMs && now < endTimeMs) {\r\n return Math.max(0, endTimeMs - now);\r\n }\r\n\r\n return 0;\r\n } catch {\r\n return 0;\r\n }\r\n};\r\n\r\nexport const fetchStaticProductIds = (\r\n productList: any,\r\n productId: any,\r\n bundle4PProduct?: boolean,\r\n tvOptionIds?: any,\r\n //US_31295\r\n pricesToggleState?: any\r\n): any => {\r\n let enableStream = false;\r\n let promotionId = '';\r\n productList?.map((data: any) => {\r\n const productRequest: any = {\r\n id: '',\r\n promoIds: []\r\n };\r\n\r\n const productData = data?.products?.[0]?.reference?.content?.product?.[0];\r\n const promotionData = data?.promotion?.[0]?.reference?.content?.promoDescription?.[0];\r\n promotionId = promotionData?.promotionId;\r\n productRequest['id'] = productData?.productId;\r\n const timer = data?.timer?.[0];\r\n const timerIsActive = timer ? isTimerActive(timer.startTime, timer.endTime) : false;\r\n const timerPromotionId =\r\n timer?.promotion?.[0]?.reference?.content?.promoDescription?.[0]?.promotionId;\r\n const defaultPromotionId =\r\n pricesToggleState && pricesToggleState === true && promotionData?.promotionId === ''\r\n ? DEFAULT_MOBILEPOSTPAID_BUNDLE\r\n : promotionData?.promotionId;\r\n\r\n //US_31295 - add default promo only when timer is not active and timer has no promo\r\n if (timerIsActive && timerPromotionId) {\r\n productRequest?.promoIds?.push(timerPromotionId);\r\n } else {\r\n productRequest?.promoIds?.push(defaultPromotionId);\r\n }\r\n\r\n //for 4P product\r\n if (bundle4PProduct) {\r\n const mobilePromotionData =\r\n data?.mobilePromotion?.[0]?.reference?.content?.promoDescription?.[0];\r\n productRequest?.promoIds?.push(mobilePromotionData?.promotionId);\r\n }\r\n\r\n productId?.push(productRequest);\r\n });\r\n if (enableStream) {\r\n tvOptionIds?.map((option: any) => {\r\n const tvOptionObj: any = {\r\n id: '',\r\n promoIds: []\r\n };\r\n tvOptionObj['id'] = option?.text;\r\n tvOptionObj?.promoIds?.push(promotionId);\r\n\r\n productId?.push(tvOptionObj);\r\n });\r\n }\r\n};\r\n\r\nexport const fetchPegaProducts = (\r\n content: any,\r\n pegaCustomerInterest?: string,\r\n placements?: string\r\n): PegaProductRequestBase => {\r\n // const url = window?.location?.pathname?.split('/') ?? [];\r\n // const pathname = url[url.length - 1];\r\n //set customerInterest as content?.tabCaption capitalize inital letter and after space and then remove spaces - from Other plans into OtherPlans\r\n const customerInterest = content?.tabCaption\r\n ?.replace(/\\b\\w/g, (l: string) => l.toUpperCase())\r\n .replace(/\\s+/g, '');\r\n\r\n const offerValidations = [\r\n {\r\n key: 'Segment',\r\n type: 'CustomerType',\r\n value: 'Residential'\r\n },\r\n {\r\n key: 'OrderType',\r\n type: 'CustomerInterest',\r\n value: 'New'\r\n },\r\n {\r\n key: 'CurrentPage',\r\n type: 'Context',\r\n value: 'mobile-subscription' //pathname ?? ''\r\n },\r\n {\r\n key: 'Category',\r\n type: 'CustomerInterest',\r\n value: customerInterest ?? ''\r\n },\r\n {\r\n key: 'RequestedOfferCount',\r\n type: 'Context',\r\n value: content?.pegaRequestOfferCount?.toString() ?? '3'\r\n },\r\n pegaCustomerInterest\r\n ? {\r\n key: 'Tag',\r\n type: 'CustomerInterest',\r\n value: pegaCustomerInterest\r\n }\r\n : null\r\n ].filter(Boolean) as OfferValidation[];\r\n\r\n const atlOffers: AtlOffer = {\r\n placements,\r\n offerValidations\r\n };\r\n\r\n const pegaProducts: PegaProductRequestBase = {\r\n atlOffers: [atlOffers]\r\n };\r\n\r\n return pegaProducts;\r\n};\r\n\r\nexport const checkGiftOrCashback = (data: any): any => {\r\n let showGift = false;\r\n let cashbackAvailable = false;\r\n data?.map((product: any) => {\r\n product?.promotionInfo?.map((offer: any) => {\r\n if (offer?.hardwareGift) showGift = true;\r\n if (offer?.cashBack) cashbackAvailable = true;\r\n });\r\n });\r\n return { showGift, cashbackAvailable };\r\n};\r\n\r\nexport const staticCreateCart = (\r\n setShowLoader: { (value: SetStateAction<boolean>): void; (arg0: boolean): void },\r\n cartEndPoint: string,\r\n giftItem: any,\r\n uniqueProductData: any,\r\n mainContent: any,\r\n showPrice: any,\r\n isMobileFlow: boolean,\r\n radioValue: any,\r\n eligibleBundle: any,\r\n address: any,\r\n setShowLinecheck: any,\r\n showLinecheck: any,\r\n lineCheckCallBack: any,\r\n enableP2P: any,\r\n P2PData: any,\r\n content: any,\r\n tvOptions?: any,\r\n discountRef?: string,\r\n discountVersion?: string,\r\n // Shogun/rewards (loyalty) flow — forwarded verbatim to createCartV2 so it\r\n // can append the pointsBurnt note at the item level (RATEPLAN for MOBILE,\r\n // internet item for FIXNET).\r\n rewardsInfo?: { pointsBurnt?: string | number }\r\n): any => {\r\n if (isMobileFlow) {\r\n setShowLoader(true);\r\n const vcType: { voucher: string; voucherType: string } = getLocalStorageWithExpiry(VCTYPE);\r\n Object.keys(uniqueProductData)?.length !== 0 &&\r\n createCartV2(\r\n uniqueProductData,\r\n '',\r\n showPrice?.promoID ? showPrice?.promoID : DEFAULT_MOBILEPOSTPAID_BUNDLE,\r\n cartEndPoint,\r\n 'mobile',\r\n giftItem,\r\n enableP2P,\r\n P2PData,\r\n mainContent?.productContainer?.[0]?.isQoQaFlow,\r\n vcType?.voucher,\r\n null,\r\n null,\r\n discountRef,\r\n discountVersion,\r\n rewardsInfo\r\n )\r\n .then((res: any) => {\r\n Cookies.remove('one-commerce-cartId', { path: '/' });\r\n // saving newly created cartid in the cookies.\r\n Cookies.set('one-commerce-cartId', res?.id, { path: '/' });\r\n Cookies.set('cartProduct', showPrice?.id, { path: '/' });\r\n trackEligibleItem(ADDTOCART, uniqueProductData, '', LINETABLEPRODUCT);\r\n window.location.href = mainContent?.summaryPageUrl?.cached_url;\r\n })\r\n .catch((err) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err);\r\n setShowLoader(false);\r\n })\r\n .finally(() => {\r\n setShowLoader(false);\r\n });\r\n } else {\r\n const linecheckId: any =\r\n typeof window !== 'undefined' && Cookies.get('one-commerce-linecheckcorrelationid');\r\n if (!eligibleBundle || !address || !linecheckId) {\r\n mainContent?.enableLinecheckOverlay ? setShowLinecheck(!showLinecheck) : lineCheckCallBack();\r\n } else {\r\n setShowLoader(true);\r\n uniqueProductData.length !== 0 &&\r\n createCartV2(\r\n uniqueProductData,\r\n radioValue,\r\n showPrice?.promoID ? showPrice?.promoID : DEFAULT_WIRELINE_BUNDLE,\r\n cartEndPoint,\r\n 'fixnet',\r\n giftItem,\r\n '',\r\n '',\r\n false,\r\n '',\r\n '',\r\n tvOptions,\r\n undefined,\r\n undefined,\r\n rewardsInfo\r\n )\r\n .then((res: any) => {\r\n typeof window !== 'undefined' && Cookies.remove('one-commerce-cartId', { path: '/' });\r\n // saving newly created cartid in the cookies.\r\n typeof window !== 'undefined' &&\r\n Cookies.set('one-commerce-cartId', res?.id, { path: '/' });\r\n typeof window !== 'undefined' &&\r\n Cookies.set('cartProduct', showPrice?.id, { path: '/' });\r\n typeof window !== 'undefined' && Cookies.remove('landline');\r\n trackEligibleItem(ADDTOCART, uniqueProductData, '', LINETABLE);\r\n const productUrl = checkLinkWithLang(content?.productBasedCheckoutUrl?.cached_url);\r\n let recommendAccessory = false;\r\n /**Check if bundle or Internet and add it to cart request*/\r\n if (uniqueProductData[0]?.isBundle) {\r\n uniqueProductData[0]?.bundledOffers?.map((item: any) => {\r\n if (\r\n item?.productType?.toLowerCase() === 'internet' ||\r\n item?.productType?.toLowerCase() == 'tv'\r\n ) {\r\n if (item?.recommendAccessory) {\r\n recommendAccessory = item?.recommendAccessory;\r\n }\r\n }\r\n // setting to false incase of Mobile product Type as it is currently out of scope\r\n if (item?.productType?.toLowerCase() === 'mobile') {\r\n recommendAccessory = false;\r\n return;\r\n }\r\n });\r\n } else {\r\n /**Add standlone product such as internet to cart request*/\r\n if (uniqueProductData?.[0]?.recommendAccessory) {\r\n recommendAccessory = uniqueProductData?.[0]?.recommendAccessory;\r\n }\r\n }\r\n //setting the session to identify internet flow for mia for win\r\n if (recommendAccessory) {\r\n const sessionObj = { flow: 'WIN' };\r\n sessionStorage.setItem(ONE_ECOMMERCE_SUMMARY, JSON.stringify(sessionObj));\r\n }\r\n\r\n const finalURL = productUrl\r\n ? productUrl\r\n : content?.enableTVStreamingOptionsStepper && mainContent?.vasStepperURL?.cached_url\r\n ? mainContent?.vasStepperURL?.cached_url\r\n : recommendAccessory && mainContent?.multiItemPageRedirectionUrl?.cached_url\r\n ? mainContent?.multiItemPageRedirectionUrl?.cached_url\r\n : mainContent?.summaryPageUrl?.cached_url;\r\n\r\n window.location.href = finalURL;\r\n })\r\n .catch((err: any) => {\r\n // eslint-disable-next-line no-console\r\n console.log(err);\r\n })\r\n .finally(() => {\r\n setShowLoader(false);\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const findHeight = (tabIndex: number, cardsLength: number) => {\r\n const setTimerSectionHeight = () => {\r\n let maxActiveTimerHeight = 0;\r\n const timerSections: HTMLElement[] = [];\r\n\r\n [...Array(cardsLength)].forEach((_, index) => {\r\n const timerSection = document.getElementById(`timer-section${tabIndex}${index}`);\r\n if (timerSection) {\r\n timerSections.push(timerSection);\r\n const isTimerActive = timerSection.dataset.timerActive === 'true';\r\n if (isTimerActive) {\r\n const spacer = timerSection.firstElementChild as HTMLElement | null;\r\n // Read the inline style target height instead of clientHeight so that\r\n // an in-progress CSS transition does not yield an intermediate value.\r\n const targetHeight = parseFloat(spacer?.style.height || '0') || 0;\r\n maxActiveTimerHeight = Math.max(maxActiveTimerHeight, targetHeight);\r\n }\r\n }\r\n });\r\n\r\n timerSections.forEach((timerSection) => {\r\n const isTimerActive = timerSection.dataset.timerActive === 'true';\r\n timerSection.style.transition = 'height 0.3s ease';\r\n timerSection.style.height = isTimerActive ? '0px' : `${maxActiveTimerHeight}px`;\r\n });\r\n };\r\n\r\n getElementMaximumHeight('headingV3' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('descriptionV3' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('titleV3' + `${tabIndex}`, cardsLength);\r\n setTimerSectionHeight();\r\n getElementMaximumHeight('detailsectionv3' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('product-configv3' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('gift-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('benefits-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('order-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('price-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('benefits-price-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('contract-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('exclusive-benefits-section' + `${tabIndex}`, cardsLength);\r\n getElementMaximumHeight('discountedpricetoggle-section' + `${tabIndex}`, cardsLength);\r\n};\r\n\r\nconst setMobileSummarySession = (\r\n promoId: string,\r\n uniqueProductData: any,\r\n pretopostvalues?: any,\r\n showPrice?: any,\r\n product?: any,\r\n pegaIntegration?: any\r\n) => {\r\n const productPrice = uniqueProductData;\r\n const base: number = productPrice?.[0]?.prices?.[0]?.value ?? 0;\r\n const discount = productPrice?.[0]?.derivedPrice?.[0]?.value ?? 0;\r\n const contractDuration = productPrice?.[0]?.promotionInfo?.[0]?.contractDuration ?? 0;\r\n const campaignDuration = productPrice?.[0]?.promotionInfo?.[0]?.campaignDuration ?? 0;\r\n const pretopostvalue = pretopostvalues ?? '';\r\n //PEGA Integration\r\n const discountRef = pegaIntegration && uniqueProductData?.[0]?.promotionInfo?.[0]?.id;\r\n const discountVersion = pegaIntegration && uniqueProductData?.[0]?.promotionInfo?.[0]?.version;\r\n const clientDiscountInfo = pegaIntegration\r\n ? {\r\n discountRef: discountRef,\r\n discountType: 'DISCOUNT'\r\n }\r\n : null;\r\n const note = [];\r\n note?.push({\r\n author: 'offerType',\r\n text: 'ATL'\r\n });\r\n note?.push({\r\n author: 'externalPromotionName',\r\n text: discountRef\r\n });\r\n note?.push({\r\n author: 'offerVersion',\r\n text: discountVersion\r\n });\r\n\r\n const extraNotes = pegaIntegration ? note : null;\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const flow = urlParams.get('flow');\r\n const sessionObj: any = {\r\n mobileSubscription: productPrice?.[0]?.id ?? '',\r\n mobileSubscriptionPrice: discount > 0 ? discount : base,\r\n mobileSubscriptionPromo: promoId,\r\n subGroup: 'MOBILE',\r\n duration: Number(campaignDuration > 0 ? campaignDuration : contractDuration),\r\n basePrice: base,\r\n withoutPromo: false,\r\n pretopostvalue: pretopostvalue,\r\n upBenefit:\r\n showPrice.mob_benefit_category == 'MULTIMOBILE' || showPrice.mob_benefit_category == 'FMC',\r\n ultimateBundlePromo: product?.ultimateBundlePromotion ?? '',\r\n clientDiscountInfo: clientDiscountInfo,\r\n extraNotes: extraNotes,\r\n isOttFlow: flow === 'ott' ? true : false\r\n };\r\n\r\n typeof window !== undefined &&\r\n sessionStorage.setItem('one-ecommerce-mobileSummary', JSON.stringify(sessionObj));\r\n};\r\n\r\nexport const combineWithSmartPhone = (\r\n showPrice: any,\r\n storyContent: any,\r\n uniqueProductData: any,\r\n responseData?: any,\r\n product?: any,\r\n pegaIntegration?: boolean\r\n) => {\r\n const pretopostvalues = {\r\n msisdn: responseData?.msisdn ?? '',\r\n ratePlan: responseData?.ratePlan ?? '',\r\n ratePlanType: responseData?.ratePlanType ?? '',\r\n productId: responseData ? showPrice?.id : ''\r\n };\r\n const promoId = showPrice?.promoID ? showPrice?.promoID : DEFAULT_MOBILEPOSTPAID_BUNDLE;\r\n let Params = '';\r\n Params = `?componentCode=&productType=subscription&segmentCode=RC&prefPromo=${\r\n promoId ?? ''\r\n }&productCode=${showPrice?.id ?? ''}`;\r\n window.location.href = storyContent?.addSmartPhone?.[0]?.buttonLink?.cached_url + Params;\r\n setMobileSummarySession(\r\n promoId,\r\n uniqueProductData,\r\n responseData && pretopostvalues,\r\n showPrice,\r\n product,\r\n pegaIntegration\r\n );\r\n trackNewDatalayerEvent(\r\n GAEVENT,\r\n COMBINEDEVICE,\r\n getEcomCartInfo(uniqueProductData, '', LINETABLEDEVICE)\r\n );\r\n trackEligibleItem(ADDTOCART, uniqueProductData, '', LINETABLEDEVICE);\r\n};\r\n\r\nconst setFixnetSummarySession = (\r\n promoId: string,\r\n uniqueProductData: any,\r\n showPrice?: any,\r\n product?: any,\r\n pegaIntegration?: any,\r\n productName?: string,\r\n recommendAccessory?: boolean | undefined\r\n) => {\r\n const productPrice = uniqueProductData;\r\n const base: number = productPrice?.[0]?.prices?.[0]?.value ?? 0;\r\n const discount = productPrice?.[0]?.derivedPrice?.[0]?.value ?? 0;\r\n const contractDuration =\r\n productPrice?.[0]?.promotionInfo?.[0]?.contractDuration ?? showPrice?.contractDuration ?? 0;\r\n const campaignDuration = productPrice?.[0]?.promotionInfo?.[0]?.campaignDuration ?? 0;\r\n\r\n //PEGA Integration\r\n const discountRef = pegaIntegration && uniqueProductData?.[0]?.promotionInfo?.[0]?.id;\r\n const discountVersion = pegaIntegration && uniqueProductData?.[0]?.promotionInfo?.[0]?.version;\r\n const clientDiscountInfo = pegaIntegration\r\n ? {\r\n discountRef: discountRef,\r\n discountType: 'DISCOUNT'\r\n }\r\n : null;\r\n const note = [];\r\n note?.push({\r\n author: 'offerType',\r\n text: 'ATL'\r\n });\r\n note?.push({\r\n author: 'externalPromotionName',\r\n text: discountRef\r\n });\r\n note?.push({\r\n author: 'offerVersion',\r\n text: discountVersion\r\n });\r\n\r\n const extraNotes = pegaIntegration ? note : null;\r\n\r\n const sessionObj: any = {\r\n internetSubscription: productName ?? '',\r\n internetSubscriptionId: productPrice?.[0]?.id ?? '',\r\n internetSubscriptionPrice: discount > 0 ? discount : base,\r\n internetSubscriptionPromo: promoId,\r\n subGroup: 'INTERNET',\r\n duration: Number(campaignDuration > 0 ? campaignDuration : contractDuration),\r\n basePrice: base,\r\n withPromo: discount > 0 ? true : false,\r\n upBenefit:\r\n showPrice.mob_benefit_category == 'MULTIMOBILE' || showPrice.mob_benefit_category == 'FMC',\r\n ultimateBundlePromo: product?.ultimateBundlePromotion ?? '',\r\n clientDiscountInfo: clientDiscountInfo,\r\n extraNotes: extraNotes,\r\n productType: 'subscription',\r\n recommendAccessory: recommendAccessory\r\n };\r\n\r\n typeof window !== undefined &&\r\n sessionStorage.setItem(ONE_ECOMMERCE_INTERNET_SUMMARY, JSON.stringify(sessionObj));\r\n};\r\nexport const combineWithVasOptions = (\r\n showPrice: any,\r\n uniqueProductData: any,\r\n product?: any,\r\n pegaIntegration?: boolean,\r\n productName?: string,\r\n recommendAccessory?: boolean\r\n) => {\r\n const promoId = showPrice?.promoID ? showPrice?.promoID : DEFAULT_MOBILEPOSTPAID_BUNDLE;\r\n\r\n setFixnetSummarySession(\r\n promoId,\r\n uniqueProductData,\r\n showPrice,\r\n product,\r\n pegaIntegration,\r\n productName,\r\n recommendAccessory\r\n );\r\n trackNewDatalayerEvent(\r\n GAEVENT,\r\n COMBINEDEVICE,\r\n getEcomCartInfo(uniqueProductData, '', LINETABLEDEVICE)\r\n );\r\n trackEligibleItem(ADDTOCART, uniqueProductData, '', LINETABLEDEVICE);\r\n};\r\n\r\nexport const fetchServiceOptions = (entitlement: any, isMobileFlow: boolean) => {\r\n let service: any;\r\n if (!isMobileFlow) {\r\n service = (entitlement || []).filter((product: any) => product?.enableTV === true);\r\n }\r\n return service;\r\n};\r\n\r\nexport const fetchPrice = (\r\n product: any,\r\n isMobileFlow: boolean,\r\n pageType?: string,\r\n isConfigurator?: boolean,\r\n tvOptions?: any[],\r\n pegaIntegration?: boolean\r\n): any => {\r\n const showPrice: any = {\r\n base: '',\r\n onetimePrice: '',\r\n discount: [],\r\n contractDuration: '',\r\n int_fmc: 0,\r\n mob_fmc: 0,\r\n mob_benefit_category: '',\r\n id: '',\r\n promoID: '',\r\n loyaltyPrice: ''\r\n };\r\n let tvOptionsBasePrice = 0;\r\n let tvOptionsDiscountPrice = 0;\r\n let tvOptionsBaseToDiscount = 0;\r\n\r\n Array.isArray(product) &&\r\n product?.map((item: any) => {\r\n showPrice['id'] = item?.id ?? '';\r\n item?.prices?.map((basePrice: any) => {\r\n if (basePrice?.priceType?.toLowerCase() === 'recurring') {\r\n if (tvOptions && tvOptions?.length > 0) {\r\n tvOptions?.forEach((opt: any) => {\r\n if (opt?.beneficiaryPrice > 0) {\r\n tvOptionsDiscountPrice += parseFloat(opt?.beneficiaryPrice);\r\n } else if (opt?.derivedPrice > 0) {\r\n tvOptionsDiscountPrice += parseFloat(opt?.derivedPrice);\r\n } else {\r\n tvOptionsBaseToDiscount += parseFloat(opt?.recurringPrice);\r\n }\r\n if (opt?.recurringPrice > 0) {\r\n tvOptionsBasePrice += parseFloat(opt?.recurringPrice);\r\n }\r\n });\r\n //If one of the options in the list has a discount, other options base price is stored to sum it up in the end\r\n if (tvOptionsDiscountPrice > 0) {\r\n tvOptionsDiscountPrice += tvOptionsBaseToDiscount;\r\n }\r\n showPrice['base'] = JSON.stringify(\r\n parseFloat(basePrice?.value) +\r\n (tvOptionsDiscountPrice > 0 ? tvOptionsDiscountPrice : tvOptionsBasePrice)\r\n );\r\n } else {\r\n showPrice['base'] = basePrice?.value;\r\n }\r\n } else if (basePrice?.priceType?.toLowerCase() === 'one time')\r\n showPrice['onetimePrice'] = basePrice?.value;\r\n });\r\n item?.derivedPrice?.map((discountPrice: any) => {\r\n const cycle = { cycleStart: '', cycleEnd: '', value: '' };\r\n cycle['cycleStart'] =\r\n pegaIntegration && !product?.[0]?.isBundle && product?.[0]?.contractDuration\r\n ? 1\r\n : discountPrice?.cycle?.cycleStart;\r\n cycle['cycleEnd'] =\r\n pegaIntegration && !product?.[0]?.isBundle && product?.[0]?.contractDuration\r\n ? pegaIntegration && !product?.[0]?.isBundle && product?.[0]?.contractDuration\r\n : discountPrice?.cycle?.cycleEnd;\r\n cycle['value'] = discountPrice?.value;\r\n if (tvOptions && tvOptions?.length > 0) {\r\n if (tvOptionsDiscountPrice > 0) {\r\n cycle['value'] = JSON.stringify(\r\n parseFloat(discountPrice?.value) + tvOptionsDiscountPrice\r\n );\r\n } else {\r\n cycle['value'] = JSON.stringify(parseFloat(discountPrice?.value) + tvOptionsBasePrice);\r\n }\r\n }\r\n showPrice['discount'].push(cycle);\r\n });\r\n // Calculating loyalty price introduced with DC portfolio\r\n if (item?.promotionInfo?.[0]?.relatedPromo?.length > 0) {\r\n item?.promotionInfo?.[0]?.relatedPromo?.map((promo: any) => {\r\n if (promo?.type === 'LOYALTY_DISCOUNT') {\r\n showPrice['loyaltyPrice'] = promo?.discount;\r\n }\r\n });\r\n }\r\n });\r\n\r\n product?.[0]?.bundledOffers?.forEach((item: any) => {\r\n item?.prices?.forEach((productDetails: any) => {\r\n if (productDetails?.priceAlteration?.length > 0) {\r\n productDetails?.priceAlteration?.forEach((price: any) => {\r\n if (price?.priceCategory == 'INTERNET_FMC') {\r\n showPrice['int_fmc'] += Number(price?.value);\r\n } else if (\r\n price?.priceCategory == 'MULTIMOBILE' ||\r\n price?.priceCategory == 'MULTIMOBILE_REWARD' ||\r\n price?.priceCategory == 'FMC'\r\n ) {\r\n showPrice['mob_fmc'] += Number(price?.value);\r\n showPrice['mob_benefit_category'] = price?.priceCategory;\r\n }\r\n });\r\n }\r\n });\r\n if (item?.contractDuration) {\r\n showPrice['contractDuration'] = item?.contractDuration; // for bundled products contract duration is taken from bundled offers\r\n }\r\n if (item?.promotionInfo?.[0]?.id && !pegaIntegration) {\r\n showPrice['promoID'] = item?.promotionInfo?.[0]?.id;\r\n }\r\n });\r\n if (!product?.[0]?.isBundle) {\r\n showPrice['contractDuration'] = product?.[0]?.contractDuration; // for other products\r\n if (!pegaIntegration) {\r\n showPrice['promoID'] = product?.[0]?.promotionInfo?.[0]?.id;\r\n }\r\n }\r\n let int_fmc = 0;\r\n product?.[0]?.prices?.map((productDetails: any) => {\r\n if (productDetails?.priceAlteration?.length > 0) {\r\n productDetails?.priceAlteration?.map((price: any) => {\r\n if (price?.priceCategory == 'INTERNET_FMC') {\r\n int_fmc += Number(price?.value);\r\n } else if (\r\n price?.priceCategory == 'MULTIMOBILE' ||\r\n price?.priceCategory == 'MULTIMOBILE_REWARD' ||\r\n price?.priceCategory == 'FMC'\r\n ) {\r\n showPrice['mob_fmc'] += Number(price?.value);\r\n showPrice['mob_benefit_category'] = price?.priceCategory;\r\n }\r\n });\r\n }\r\n });\r\n if (!showPrice?.contractDuration && !isMobileFlow) {\r\n showPrice['contractDuration'] = '12';\r\n }\r\n {\r\n showPrice['int_fmc'] = isConfigurator ? int_fmc : showPrice['int_fmc'];\r\n }\r\n if (pageType == '4P') {\r\n let bundleContractDuration = '0';\r\n product?.[0]?.bundledOffers?.map((offerData: any) => {\r\n if (offerData?.contractDuration) {\r\n bundleContractDuration =\r\n Number(bundleContractDuration) > Number(offerData?.contractDuration)\r\n ? bundleContractDuration\r\n : offerData?.contractDuration;\r\n }\r\n });\r\n showPrice['contractDuration'] = bundleContractDuration;\r\n }\r\n return showPrice;\r\n};\r\n\r\n//function for creating different array for 3 selections\r\nexport const fetchFilteredProducts = (productList: any, toggleState: any) => {\r\n //need to centralize for comman solution\r\n // Filter productList based on gigaSpeed toggle - US #363853\r\n let filteredList = productList;\r\n\r\n filteredList = productList.filter((item: any) => {\r\n const gigaSpeedValue = item?.gigaSpeed?.toLowerCase();\r\n if (toggleState?.gigaSpeed) {\r\n return gigaSpeedValue != 'hide';\r\n } else {\r\n return gigaSpeedValue != 'show';\r\n }\r\n });\r\n\r\n let mainArray = filteredList;\r\n const numberOfArray = 3;\r\n let res1 = [];\r\n let res2 = [];\r\n let res3 = [];\r\n for (let item of mainArray) {\r\n const multiIndex = item?.productIndex?.includes(',');\r\n const updatedMultiIndex = multiIndex && item?.productIndex?.split(',');\r\n if (multiIndex) {\r\n for (let mIndex of updatedMultiIndex) {\r\n for (let i = 0; i < numberOfArray; i++) {\r\n if (Number(mIndex) === i) {\r\n i === 0 ? res1.push(item) : i === 1 ? res2.push(item) : res3.push(item);\r\n }\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < numberOfArray; i++) {\r\n if (Number(item?.productIndex) === i) {\r\n i === 0 ? res1.push(item) : i === 1 ? res2.push(item) : res3.push(item);\r\n }\r\n }\r\n }\r\n }\r\n const displayContent =\r\n toggleState?.TV && toggleState?.Netflix ? res3 : toggleState?.TV ? res2 : res1;\r\n return displayContent;\r\n};\r\nexport const fetchOttItems = (ottCartData: any) => {\r\n return (ottCartData?.products || [])?.map((products: any) => ({\r\n itemType: products?.type ?? '',\r\n promotionId: products?.promo ?? '',\r\n items: [\r\n {\r\n itemType: products?.type === TV_SERVICE_OPTION ? TV_SERVICE_OPTION : RATEPLAN,\r\n id: products?.id ?? ''\r\n }\r\n ]\r\n }));\r\n};\r\n\r\n// ─── Shogun shared-offer cache ────────────────────────────────────────────────\r\n\r\ninterface ShogunOfferCacheEntry {\r\n gloxTokenId: string;\r\n results: any[] | null;\r\n promise: Promise<any[]> | null;\r\n}\r\n\r\nlet shogunOfferSharedCache: ShogunOfferCacheEntry | null = null;\r\n\r\n/**\r\n * Returns true when the shared cache already holds resolved results for the\r\n * given token. Callers can use this to skip triggering a loading state.\r\n */\r\nexport const isShogunOfferResolved = (gloxTokenId: string): boolean =>\r\n shogunOfferSharedCache?.gloxTokenId === gloxTokenId &&\r\n shogunOfferSharedCache.results !== null;\r\n\r\n/**\r\n * Shared-promise manager for the Shogun offer API.\r\n *\r\n * Because the Shogun flow sends no product payload (only gloxTokenId) the\r\n * response is identical for every StaticProductContainer on the page.\r\n * This function ensures exactly one network request is made:\r\n * - If results are already resolved → returns Promise.resolve(results)\r\n * - If a fetch is in-flight → returns the same promise\r\n * - First caller → creates the fetch and stores the promise\r\n *\r\n * On failure the promise rejects — the caller is responsible for surfacing\r\n * the error (e.g. showing the telesales/error popup). The failure is NOT\r\n * cached, so a retry (e.g. tab switch) will trigger a fresh request.\r\n */\r\nexport const getShogunSharedOffer = (\r\n gloxTokenId: string,\r\n uniqueId: string,\r\n offerEndpoint: string\r\n): Promise<any[]> => {\r\n // Already resolved\r\n if (isShogunOfferResolved(gloxTokenId)) {\r\n return Promise.resolve(shogunOfferSharedCache!.results!);\r\n }\r\n\r\n // In-flight\r\n if (\r\n shogunOfferSharedCache?.gloxTokenId === gloxTokenId &&\r\n shogunOfferSharedCache.promise !== null\r\n ) {\r\n return shogunOfferSharedCache.promise;\r\n }\r\n\r\n // First caller — start the real fetch\r\n const fetchPromise: Promise<any[]> = fetchShogunOfferData(gloxTokenId, uniqueId, offerEndpoint)\r\n .then((resp: any) => {\r\n const results: any[] = resp?.[uniqueId] ?? [];\r\n if (shogunOfferSharedCache?.gloxTokenId === gloxTokenId) {\r\n shogunOfferSharedCache.results = results;\r\n shogunOfferSharedCache.promise = null;\r\n }\r\n return results;\r\n })\r\n .catch((err: any) => {\r\n // Clear the cache entry so the next call retries the API.\r\n if (shogunOfferSharedCache?.gloxTokenId === gloxTokenId) {\r\n shogunOfferSharedCache = null;\r\n }\r\n throw err;\r\n });\r\n\r\n shogunOfferSharedCache = { gloxTokenId, results: null, promise: fetchPromise };\r\n return fetchPromise;\r\n};\r\n\r\n\r\n/**\r\n * Filters and sorts the Storyblok product list to match only the products\r\n * returned by the Shogun offer API, preserving the API response order.\r\n */\r\nexport const filterShogunProducts = (\r\n availableProducts: any[],\r\n shogunProductIds: string[]\r\n): any[] => {\r\n const filtered = availableProducts.filter((product: any) => {\r\n const productId = product?.products?.[0]?.reference?.content?.product?.[0]?.productId;\r\n return shogunProductIds.includes(productId);\r\n });\r\n\r\n filtered.sort((a: any, b: any) => {\r\n const aId = a?.products?.[0]?.reference?.content?.product?.[0]?.productId;\r\n const bId = b?.products?.[0]?.reference?.content?.product?.[0]?.productId;\r\n return shogunProductIds.indexOf(aId) - shogunProductIds.indexOf(bId);\r\n });\r\n\r\n return filtered;\r\n};\r\n"],"names":["isTimerActive","startTime","endTime","now","Date","start","calculateDateTime","replace","end","Number","isNaN","getTime","_a","getTimeUntilNextTimerEvent","startTimeMs","endTimeMs","Math","max","fetchStaticProductIds","productList","productId","bundle4PProduct","tvOptionIds","pricesToggleState","map","data","productRequest","id","promoIds","productData","_e","_d","_c","_b","products","reference","content","product","promotionData","_k","_j","_h","_g","_f","promotion","promoDescription","promotionId","timer","_l","timerIsActive","timerPromotionId","_s","_r","_q","_p","_o","_m","defaultPromotionId","DEFAULT_MOBILEPOSTPAID_BUNDLE","_t","push","_u","mobilePromotionData","_z","_y","_x","_w","_v","mobilePromotion","_0","fetchPegaProducts","pegaCustomerInterest","placements","customerInterest","tabCaption","l","toUpperCase","atlOffers","offerValidations","key","type","value","pegaRequestOfferCount","toString","filter","Boolean","checkGiftOrCashback","showGift","cashbackAvailable","promotionInfo","offer","hardwareGift","cashBack","staticCreateCart","setShowLoader","cartEndPoint","giftItem","uniqueProductData","mainContent","showPrice","isMobileFlow","radioValue","eligibleBundle","address","setShowLinecheck","showLinecheck","lineCheckCallBack","enableP2P","P2PData","tvOptions","discountRef","discountVersion","rewardsInfo","vcType","getLocalStorageWithExpiry","VCTYPE","Object","keys","length","createCartV2","promoID","productContainer","isQoQaFlow","voucher","then","res","Cookies","remove","path","set","trackEligibleItem","ADDTOCART","LINETABLEPRODUCT","window","location","href","summaryPageUrl","cached_url","catch","err","console","log","finally","linecheckId","get","DEFAULT_WIRELINE_BUNDLE","undefined","LINETABLE","productUrl","checkLinkWithLang","productBasedCheckoutUrl","recommendAccessory","isBundle","bundledOffers","item","productType","toLowerCase","sessionObj","flow","sessionStorage","setItem","ONE_ECOMMERCE_SUMMARY","JSON","stringify","finalURL","enableTVStreamingOptionsStepper","vasStepperURL","multiItemPageRedirectionUrl","enableLinecheckOverlay","findHeight","tabIndex","cardsLength","getElementMaximumHeight","maxActiveTimerHeight","timerSections","Array","forEach","_","index","timerSection","document","getElementById","dataset","timerActive","spacer","firstElementChild","targetHeight","parseFloat","style","height","transition","setTimerSectionHeight","combineWithSmartPhone","storyContent","responseData","pegaIntegration","pretopostvalues","msisdn","ratePlan","ratePlanType","promoId","Params","addSmartPhone","buttonLink","productPrice","base","prices","discount","derivedPrice","contractDuration","campaignDuration","pretopostvalue","version","clientDiscountInfo","discountType","note","author","text","extraNotes","URLSearchParams","search","mobileSubscription","mobileSubscriptionPrice","mobileSubscriptionPromo","subGroup","duration","basePrice","withoutPromo","upBenefit","mob_benefit_category","ultimateBundlePromo","ultimateBundlePromotion","isOttFlow","setMobileSummarySession","trackNewDatalayerEvent","GAEVENT","COMBINEDEVICE","getEcomCartInfo","LINETABLEDEVICE","combineWithVasOptions","productName","internetSubscription","internetSubscriptionId","internetSubscriptionPrice","internetSubscriptionPromo","withPromo","_1","ONE_ECOMMERCE_INTERNET_SUMMARY","setFixnetSummarySession","fetchServiceOptions","entitlement","service","enableTV","fetchPrice","pageType","isConfigurator","onetimePrice","int_fmc","mob_fmc","loyaltyPrice","tvOptionsBasePrice","tvOptionsDiscountPrice","tvOptionsBaseToDiscount","isArray","priceType","opt","beneficiaryPrice","recurringPrice","discountPrice","cycle","cycleStart","cycleEnd","relatedPromo","promo","productDetails","priceAlteration","price","priceCategory","bundleContractDuration","offerData","fetchFilteredProducts","toggleState","filteredList","gigaSpeedValue","gigaSpeed","mainArray","res1","res2","res3","multiIndex","productIndex","includes","updatedMultiIndex","split","mIndex","i","TV","Netflix","fetchOttItems","ottCartData","itemType","items","TV_SERVICE_OPTION","RATEPLAN","shogunOfferSharedCache","isShogunOfferResolved","gloxTokenId","results","getShogunSharedOffer","uniqueId","offerEndpoint","Promise","resolve","promise","fetchPromise","fetchShogunOfferData","resp","filterShogunProducts","availableProducts","shogunProductIds","filtered","sort","a","b","aId","bId","indexOf"],"mappings":"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"}
|