@clickview/exchange 0.63.0 → 0.64.0-rc.0
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.
- package/dist/.vite/manifest.json +662 -633
- package/dist/bundles.json +1 -1
- package/dist/css/DuPOYFVx.chunk.css +1 -0
- package/dist/en.json +1 -1
- package/dist/scripts/0WVIsJXw.chunk.js +2 -0
- package/dist/scripts/0WVIsJXw.chunk.js.map +1 -0
- package/dist/scripts/{CoK2sqzN2.chunk.js → B0BkP9zj2.chunk.js} +2 -2
- package/dist/scripts/{CoK2sqzN2.chunk.js.map → B0BkP9zj2.chunk.js.map} +1 -1
- package/dist/scripts/{dkfSCDWH2.chunk.js → B0CItJhp2.chunk.js} +2 -2
- package/dist/scripts/{dkfSCDWH2.chunk.js.map → B0CItJhp2.chunk.js.map} +1 -1
- package/dist/scripts/B0NqlFZf.chunk.js +2 -0
- package/dist/scripts/B0NqlFZf.chunk.js.map +1 -0
- package/dist/scripts/B1i9atik.chunk.js.map +1 -1
- package/dist/scripts/{CYFRcx63.chunk.js → B3S7B746.chunk.js} +2 -2
- package/dist/scripts/{CYFRcx63.chunk.js.map → B3S7B746.chunk.js.map} +1 -1
- package/dist/scripts/{BnbM9YhY.chunk.js → B5B9BCxo.chunk.js} +2 -2
- package/dist/scripts/{BnbM9YhY.chunk.js.map → B5B9BCxo.chunk.js.map} +1 -1
- package/dist/scripts/{C3K3VtRR2.chunk.js → BKYpYiMb2.chunk.js} +2 -2
- package/dist/scripts/{C3K3VtRR2.chunk.js.map → BKYpYiMb2.chunk.js.map} +1 -1
- package/dist/scripts/{D3Jgk2dT.chunk.js → BLXI9pzb.chunk.js} +3 -3
- package/dist/scripts/{D3Jgk2dT.chunk.js.map → BLXI9pzb.chunk.js.map} +1 -1
- package/dist/scripts/{CDXcKno52.chunk.js → BLrooXWI2.chunk.js} +2 -2
- package/dist/scripts/{CDXcKno52.chunk.js.map → BLrooXWI2.chunk.js.map} +1 -1
- package/dist/scripts/{-x9MMtVv.chunk.js → BQVqfJL8.chunk.js} +2 -2
- package/dist/scripts/{-x9MMtVv.chunk.js.map → BQVqfJL8.chunk.js.map} +1 -1
- package/dist/scripts/{jErHNuXU2.chunk.js → BU2ULxCS2.chunk.js} +2 -2
- package/dist/scripts/{jErHNuXU2.chunk.js.map → BU2ULxCS2.chunk.js.map} +1 -1
- package/dist/scripts/{B6EmIhMh.chunk.js → BU_B6gyd.chunk.js} +2 -2
- package/dist/scripts/{B6EmIhMh.chunk.js.map → BU_B6gyd.chunk.js.map} +1 -1
- package/dist/scripts/{DHV6S1fA2.chunk.js → BbaX1lfI2.chunk.js} +2 -2
- package/dist/scripts/{DHV6S1fA2.chunk.js.map → BbaX1lfI2.chunk.js.map} +1 -1
- package/dist/scripts/{D6EZoO4S2.chunk.js → Bbaycd7V.chunk.js} +2 -2
- package/dist/scripts/Bbaycd7V.chunk.js.map +1 -0
- package/dist/scripts/{CeeAb-HT2.chunk.js → BgLWPZ7H2.chunk.js} +2 -2
- package/dist/scripts/{CeeAb-HT2.chunk.js.map → BgLWPZ7H2.chunk.js.map} +1 -1
- package/dist/scripts/{CjNkj1Q92.chunk.js → Bj6lJgAv2.chunk.js} +1 -1
- package/dist/scripts/{CjNkj1Q92.chunk.js.map → Bj6lJgAv2.chunk.js.map} +1 -1
- package/dist/scripts/{Da2KHzN02.chunk.js → BoWMmXN02.chunk.js} +2 -2
- package/dist/scripts/{Da2KHzN02.chunk.js.map → BoWMmXN02.chunk.js.map} +1 -1
- package/dist/scripts/{mkasrghR2.chunk.js → BpzuiXcd2.chunk.js} +2 -2
- package/dist/scripts/{mkasrghR2.chunk.js.map → BpzuiXcd2.chunk.js.map} +1 -1
- package/dist/scripts/{BEyI0jsC2.chunk.js → Bswd1QrZ2.chunk.js} +2 -2
- package/dist/scripts/{BEyI0jsC2.chunk.js.map → Bswd1QrZ2.chunk.js.map} +1 -1
- package/dist/scripts/{BaXT2aKo2.chunk.js → ByC5ZDQ-2.chunk.js} +2 -2
- package/dist/scripts/{BaXT2aKo2.chunk.js.map → ByC5ZDQ-2.chunk.js.map} +1 -1
- package/dist/scripts/{D-ivDlyL.chunk.js → C-jHArp-.chunk.js} +2 -2
- package/dist/scripts/{D-ivDlyL.chunk.js.map → C-jHArp-.chunk.js.map} +1 -1
- package/dist/scripts/{BrEvIvRP.chunk.js → C3cl5FmM.chunk.js} +2 -2
- package/dist/scripts/{BrEvIvRP.chunk.js.map → C3cl5FmM.chunk.js.map} +1 -1
- package/dist/scripts/{c2oA1XgG.chunk.js → C4hd6q9D.chunk.js} +2 -2
- package/dist/scripts/{c2oA1XgG.chunk.js.map → C4hd6q9D.chunk.js.map} +1 -1
- package/dist/scripts/{DsolW3Wd2.chunk.js → C8dtRvC52.chunk.js} +2 -2
- package/dist/scripts/{DsolW3Wd2.chunk.js.map → C8dtRvC52.chunk.js.map} +1 -1
- package/dist/scripts/{BmEexpMP2.chunk.js → C8lms6Rf2.chunk.js} +1 -1
- package/dist/scripts/{BmEexpMP2.chunk.js.map → C8lms6Rf2.chunk.js.map} +1 -1
- package/dist/scripts/{s776Po8a2.chunk.js → C9AjegY32.chunk.js} +2 -2
- package/dist/scripts/{s776Po8a2.chunk.js.map → C9AjegY32.chunk.js.map} +1 -1
- package/dist/scripts/{DgSFdSfV.chunk.js → CBwR65WF.chunk.js} +2 -2
- package/dist/scripts/{DgSFdSfV.chunk.js.map → CBwR65WF.chunk.js.map} +1 -1
- package/dist/scripts/{D36Shrdb2.chunk.js → CEOaf0tK2.chunk.js} +2 -2
- package/dist/scripts/{D36Shrdb2.chunk.js.map → CEOaf0tK2.chunk.js.map} +1 -1
- package/dist/scripts/CFdu6aud.chunk.js +2 -0
- package/dist/scripts/CFdu6aud.chunk.js.map +1 -0
- package/dist/scripts/{CYfnBEtT2.chunk.js → CHojcsxD2.chunk.js} +1 -1
- package/dist/scripts/{CYfnBEtT2.chunk.js.map → CHojcsxD2.chunk.js.map} +1 -1
- package/dist/scripts/{BibFbDqs.chunk.js → CIxLO-TM.chunk.js} +2 -2
- package/dist/scripts/{BibFbDqs.chunk.js.map → CIxLO-TM.chunk.js.map} +1 -1
- package/dist/scripts/{CAQAUQMB.chunk.js → CLTKXoqB.chunk.js} +2 -2
- package/dist/scripts/{CAQAUQMB.chunk.js.map → CLTKXoqB.chunk.js.map} +1 -1
- package/dist/scripts/{DGy73Ett2.chunk.js → CNuGo1LQ2.chunk.js} +2 -2
- package/dist/scripts/{DGy73Ett2.chunk.js.map → CNuGo1LQ2.chunk.js.map} +1 -1
- package/dist/scripts/{DsA2RTbF.chunk.js → CQKpvTZY.chunk.js} +2 -2
- package/dist/scripts/{DsA2RTbF.chunk.js.map → CQKpvTZY.chunk.js.map} +1 -1
- package/dist/scripts/{CL9-CkqC2.chunk.js → CRAcJqQV2.chunk.js} +2 -2
- package/dist/scripts/{CL9-CkqC2.chunk.js.map → CRAcJqQV2.chunk.js.map} +1 -1
- package/dist/scripts/{C1guWVFU2.chunk.js → CSB18s8X2.chunk.js} +2 -2
- package/dist/scripts/{C1guWVFU2.chunk.js.map → CSB18s8X2.chunk.js.map} +1 -1
- package/dist/scripts/CWZvMFYz.chunk.js +2 -0
- package/dist/scripts/CWZvMFYz.chunk.js.map +1 -0
- package/dist/scripts/{4oWF2EyV2.chunk.js → CZrMa6z92.chunk.js} +2 -2
- package/dist/scripts/{4oWF2EyV2.chunk.js.map → CZrMa6z92.chunk.js.map} +1 -1
- package/dist/scripts/{CAJOpkKZ.chunk.js → CfCxi56P.chunk.js} +2 -2
- package/dist/scripts/{CAJOpkKZ.chunk.js.map → CfCxi56P.chunk.js.map} +1 -1
- package/dist/scripts/{B0jhFNam2.chunk.js → Chib9pDe2.chunk.js} +3 -3
- package/dist/scripts/{B0jhFNam2.chunk.js.map → Chib9pDe2.chunk.js.map} +1 -1
- package/dist/scripts/{DUCTNoXj.chunk.js → CiEI8sTG.chunk.js} +2 -2
- package/dist/scripts/{DUCTNoXj.chunk.js.map → CiEI8sTG.chunk.js.map} +1 -1
- package/dist/scripts/{CAoPaL8M.chunk.js → CmIbuK_d.chunk.js} +2 -2
- package/dist/scripts/{CAoPaL8M.chunk.js.map → CmIbuK_d.chunk.js.map} +1 -1
- package/dist/scripts/{BTsePUCN2.chunk.js → CsQ6WMM92.chunk.js} +2 -2
- package/dist/scripts/{BTsePUCN2.chunk.js.map → CsQ6WMM92.chunk.js.map} +1 -1
- package/dist/scripts/{BHzUOyzG.chunk.js → Cxq38DxA.chunk.js} +2 -2
- package/dist/scripts/{BHzUOyzG.chunk.js.map → Cxq38DxA.chunk.js.map} +1 -1
- package/dist/scripts/{Cllrumah2.chunk.js → D0TX42le2.chunk.js} +2 -2
- package/dist/scripts/{Cllrumah2.chunk.js.map → D0TX42le2.chunk.js.map} +1 -1
- package/dist/scripts/{B7sWLg9v2.chunk.js → D8x02prV2.chunk.js} +2 -2
- package/dist/scripts/{B7sWLg9v2.chunk.js.map → D8x02prV2.chunk.js.map} +1 -1
- package/dist/scripts/{CCvXN2-C.chunk.js → DAQxdC_x.chunk.js} +2 -2
- package/dist/scripts/{CCvXN2-C.chunk.js.map → DAQxdC_x.chunk.js.map} +1 -1
- package/dist/scripts/{DOuiFwIH2.chunk.js → DGBrggmU2.chunk.js} +2 -2
- package/dist/scripts/{DOuiFwIH2.chunk.js.map → DGBrggmU2.chunk.js.map} +1 -1
- package/dist/scripts/{CSbvS-Cl.chunk.js → DI6eYZuV.chunk.js} +2 -2
- package/dist/scripts/{CSbvS-Cl.chunk.js.map → DI6eYZuV.chunk.js.map} +1 -1
- package/dist/scripts/DIsOuUSO2.chunk.js +2 -0
- package/dist/scripts/DIsOuUSO2.chunk.js.map +1 -0
- package/dist/scripts/{B3tq0EFi2.chunk.js → DN_CuUia2.chunk.js} +2 -2
- package/dist/scripts/{B3tq0EFi2.chunk.js.map → DN_CuUia2.chunk.js.map} +1 -1
- package/dist/scripts/{DRZvc_n5.chunk.js → DT626M1P.chunk.js} +3 -3
- package/dist/scripts/{DRZvc_n5.chunk.js.map → DT626M1P.chunk.js.map} +1 -1
- package/dist/scripts/DWVn5hOy2.chunk.js +2 -0
- package/dist/scripts/DWVn5hOy2.chunk.js.map +1 -0
- package/dist/scripts/DZ85IleM.chunk.js +2 -0
- package/dist/scripts/DZ85IleM.chunk.js.map +1 -0
- package/dist/scripts/{CsrTrVKj.chunk.js → DarQpJDR.chunk.js} +2 -2
- package/dist/scripts/{CsrTrVKj.chunk.js.map → DarQpJDR.chunk.js.map} +1 -1
- package/dist/scripts/{CGLWqKaa.chunk.js → DfWNECxe.chunk.js} +2 -2
- package/dist/scripts/{CGLWqKaa.chunk.js.map → DfWNECxe.chunk.js.map} +1 -1
- package/dist/scripts/{BEgLlK2Z2.chunk.js → Dfi_iXFg2.chunk.js} +2 -2
- package/dist/scripts/{BEgLlK2Z2.chunk.js.map → Dfi_iXFg2.chunk.js.map} +1 -1
- package/dist/scripts/{8vJGuJF-2.chunk.js → DjMOZfNJ2.chunk.js} +2 -2
- package/dist/scripts/{8vJGuJF-2.chunk.js.map → DjMOZfNJ2.chunk.js.map} +1 -1
- package/dist/scripts/{DGRBUJ6T2.chunk.js → DjUmgrOk2.chunk.js} +2 -2
- package/dist/scripts/{DGRBUJ6T2.chunk.js.map → DjUmgrOk2.chunk.js.map} +1 -1
- package/dist/scripts/DjdW7gMz.chunk.js +2 -0
- package/dist/scripts/DjdW7gMz.chunk.js.map +1 -0
- package/dist/scripts/{CAOBwDbU.chunk.js → DksIM59B.chunk.js} +2 -2
- package/dist/scripts/{CAOBwDbU.chunk.js.map → DksIM59B.chunk.js.map} +1 -1
- package/dist/scripts/{aXgcldgY.chunk.js → DpARg1IG.chunk.js} +2 -2
- package/dist/scripts/{aXgcldgY.chunk.js.map → DpARg1IG.chunk.js.map} +1 -1
- package/dist/scripts/{DM0JzOpR2.chunk.js → ErGRzsV12.chunk.js} +2 -2
- package/dist/scripts/{DM0JzOpR2.chunk.js.map → ErGRzsV12.chunk.js.map} +1 -1
- package/dist/scripts/{UK8sD-oL.chunk.js → GSm09vBX.chunk.js} +2 -2
- package/dist/scripts/{UK8sD-oL.chunk.js.map → GSm09vBX.chunk.js.map} +1 -1
- package/dist/scripts/{DDO16-at.chunk.js → HkF7AIye.chunk.js} +2 -2
- package/dist/scripts/{DDO16-at.chunk.js.map → HkF7AIye.chunk.js.map} +1 -1
- package/dist/scripts/{BI2S4EFA.chunk.js → I1XD6JKC.chunk.js} +2 -2
- package/dist/scripts/{BI2S4EFA.chunk.js.map → I1XD6JKC.chunk.js.map} +1 -1
- package/dist/scripts/MGxL1vUn.chunk.js +2 -0
- package/dist/scripts/MGxL1vUn.chunk.js.map +1 -0
- package/dist/scripts/{CBQgY9MD2.chunk.js → Tj-NqZ4q2.chunk.js} +1 -1
- package/dist/scripts/{CBQgY9MD2.chunk.js.map → Tj-NqZ4q2.chunk.js.map} +1 -1
- package/dist/scripts/{app-lnmpv5W4.js → app-fNhmX-xT.js} +4 -4
- package/dist/scripts/app-fNhmX-xT.js.map +1 -0
- package/dist/scripts/{Bu37Hprb2.chunk.js → fyOxYVvI2.chunk.js} +1 -1
- package/dist/scripts/{Bu37Hprb2.chunk.js.map → fyOxYVvI2.chunk.js.map} +1 -1
- package/dist/scripts/{Dsmr6Wly.chunk.js → gsffdqjU.chunk.js} +2 -2
- package/dist/scripts/{Dsmr6Wly.chunk.js.map → gsffdqjU.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/5Z0rGCy2.chunk.js +0 -2
- package/dist/scripts/5Z0rGCy2.chunk.js.map +0 -1
- package/dist/scripts/BjzONPz9.chunk.js +0 -2
- package/dist/scripts/BjzONPz9.chunk.js.map +0 -1
- package/dist/scripts/BuSq2beZ2.chunk.js +0 -2
- package/dist/scripts/BuSq2beZ2.chunk.js.map +0 -1
- package/dist/scripts/CHQN7xOX.chunk.js +0 -2
- package/dist/scripts/CHQN7xOX.chunk.js.map +0 -1
- package/dist/scripts/CuE3TVwa.chunk.js +0 -2
- package/dist/scripts/CuE3TVwa.chunk.js.map +0 -1
- package/dist/scripts/D6EZoO4S2.chunk.js.map +0 -1
- package/dist/scripts/D_PyfoSL.chunk.js +0 -2
- package/dist/scripts/D_PyfoSL.chunk.js.map +0 -1
- package/dist/scripts/DklryBsJ.chunk.js +0 -2
- package/dist/scripts/DklryBsJ.chunk.js.map +0 -1
- package/dist/scripts/app-lnmpv5W4.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as e,D as t}from"./B1i9atik.chunk.js";import{l as n}from"./TJBzqR6k.chunk.js";import{t as r}from"./CzvVp9iC.chunk.js";import{t as i}from"./DRTfS6nN.chunk.js";import{t as a}from"./DKbUI-vj.chunk.js";import{I as o,M as s,U as c}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{C as e,D as t}from"./B1i9atik.chunk.js";import{l as n}from"./TJBzqR6k.chunk.js";import{t as r}from"./CzvVp9iC.chunk.js";import{t as i}from"./DRTfS6nN.chunk.js";import{t as a}from"./DKbUI-vj.chunk.js";import{I as o,M as s,U as c}from"./app-fNhmX-xT.js";import{t as l}from"./CZrMa6z92.chunk.js";import{t as u}from"./DWVn5hOy2.chunk.js";import{t as d}from"./DjUmgrOk2.chunk.js";t();var f=e(),p=`tv.adFreeRequest`,m=r.encloseNamespace(p);function h(e){let t=n(a.currentUser()),r=n(u.region(e.region)),h=n(u.program(e.id)),g=n(t.data&&r.data&&u.adFreeCredits(t.data.id,t.data.customerId,r.data.code));d(r,!0),l(h.statusCode);let _=t.hasCompleted&&r.hasCompleted&&h.hasCompleted&&g.hasCompleted,v=g.data.maxAvailableCredit-g.data.userRequests;return(0,f.jsxs)(c,{title:m(`title`),closePopup:e.closePopup,showLoadingSpinner:!_,children:[_&&(0,f.jsxs)(`div`,{className:`text-center`,children:[(0,f.jsx)(`img`,{src:i.General.PAPER_PLANE,className:`img-fluid w-50 mb-3`,draggable:!1}),(0,f.jsx)(`h2`,{className:`h4 mb-2`,children:(0,f.jsx)(o,{namespace:p,phrase:`requestSent`})}),(0,f.jsx)(`div`,{className:`bg-dark rounded-pill text-white d-inline-block fw-semibold border border-dark py-0 px-2 mb-2`,children:(0,f.jsx)(o,{namespace:p,phrase:`remaining`,options:{smartCount:v}})}),(0,f.jsxs)(`div`,{className:`pb-1`,children:[(0,f.jsx)(`p`,{className:`mb-2`,children:(0,f.jsx)(o,{namespace:p,phrase:`requestDaily`,options:{dailyLimit:g.data.maxAvailableCredit}})}),(0,f.jsx)(`p`,{className:`mb-3`,children:(0,f.jsx)(o,{namespace:p,phrase:`requestHours`,options:{dailyLimit:g.data.maxAvailableCredit}})})]})]}),(0,f.jsx)(s,{children:(0,f.jsx)(s.Cancel,{text:m(`close`),onClick:e.closePopup,variant:`link`})})]})}export{h as TvAdFreeRequestView};
|
|
2
|
+
//# sourceMappingURL=D0TX42le2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"D0TX42le2.chunk.js","names":[],"sources":["../../src/apps/tv/views/tv-ad-free-request/TvAdFreeRequestView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleDialogError } from 'libs/shared/hooks/UseHandleDialogError';\nimport { CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useHandleRegionError } from 'apps/tv/hooks/useHandleRegionError';\nimport { AdFreeCredits } from 'apps/tv/interfaces/models/AdFreeCredits';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nconst namespace = 'tv.adFreeRequest';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface TvAdFreeRequestViewProps extends PopupViewProps {\n id: string;\n region: string;\n}\n\nexport function TvAdFreeRequestView(props: TvAdFreeRequestViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(props.region));\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(props.id));\n const adFreeCredits = Flight.useBasicFetch<AdFreeCredits>(\n currentUser.data &&\n region.data &&\n TvRequests.adFreeCredits(\n currentUser.data.id,\n currentUser.data.customerId,\n region.data.code\n )\n );\n\n useHandleRegionError(region, true);\n useHandleDialogError(program.statusCode);\n\n const hasLoaded = (\n currentUser.hasCompleted &&\n region.hasCompleted &&\n program.hasCompleted &&\n adFreeCredits.hasCompleted\n );\n\n const remainingRequests = adFreeCredits.data.maxAvailableCredit - adFreeCredits.data.userRequests;\n\n return (\n <Popup\n title={getPhrase('title')}\n closePopup={props.closePopup}\n showLoadingSpinner={!hasLoaded}\n >\n {hasLoaded &&\n <div className='text-center'>\n <img src={ImageUrls.General.PAPER_PLANE} className='img-fluid w-50 mb-3' draggable={false} />\n <h2 className='h4 mb-2'><Text namespace={namespace} phrase='requestSent' /></h2>\n <div className='bg-dark rounded-pill text-white d-inline-block fw-semibold border border-dark py-0 px-2 mb-2'>\n <Text namespace={namespace} phrase='remaining' options={{ smartCount: remainingRequests }} />\n </div>\n <div className='pb-1'>\n <p className='mb-2'>\n <Text namespace={namespace} phrase='requestDaily' options={{ dailyLimit: adFreeCredits.data.maxAvailableCredit }} />\n </p>\n <p className='mb-3'>\n <Text namespace={namespace} phrase='requestHours' options={{ dailyLimit: adFreeCredits.data.maxAvailableCredit }} />\n </p>\n </div>\n </div>\n }\n\n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase('close')}\n onClick={props.closePopup}\n variant='link'\n />\n </PopupButtons>\n </Popup>\n );\n}\n"],"mappings":"4YAoBM,EAAY,mBACZ,EAAY,EAAgB,iBAAiB,EAAU,CAO7D,SAAgB,EAAoB,EAA8C,CAChF,IAAM,EAAc,EAAkC,EAAa,aAAa,CAAC,CAC3E,EAAS,EAA+B,EAAW,OAAO,EAAM,OAAO,CAAC,CACxE,EAAU,EAAgC,EAAW,QAAQ,EAAM,GAAG,CAAC,CACvE,EAAgB,EACpB,EAAY,MACZ,EAAO,MACP,EAAW,cACT,EAAY,KAAK,GACjB,EAAY,KAAK,WACjB,EAAO,KAAK,KACb,CACF,CAED,EAAqB,EAAQ,GAAK,CAClC,EAAqB,EAAQ,WAAW,CAExC,IAAM,EACJ,EAAY,cACZ,EAAO,cACP,EAAQ,cACR,EAAc,aAGV,EAAoB,EAAc,KAAK,mBAAqB,EAAc,KAAK,aAErF,OACE,EAAA,EAAA,MAAC,EAAD,CACE,MAAO,EAAU,QAAQ,CACzB,WAAY,EAAM,WAClB,mBAAoB,CAAC,WAHvB,CAKG,IACC,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,uBAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,IAAK,EAAU,QAAQ,YAAa,UAAU,sBAAsB,UAAW,GAAS,CAAA,EAC7F,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,oBAAU,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,cAAgB,CAAA,CAAK,CAAA,EAChF,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,yGACb,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,YAAY,QAAS,CAAE,WAAY,EAAmB,CAAI,CAAA,CACzF,CAAA,EACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gBAAf,EACE,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,iBACX,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,eAAe,QAAS,CAAE,WAAY,EAAc,KAAK,mBAAoB,CAAI,CAAA,CAClH,CAAA,EACJ,EAAA,EAAA,KAAC,IAAD,CAAG,UAAU,iBACX,EAAA,EAAA,KAAC,EAAD,CAAiB,YAAW,OAAO,eAAe,QAAS,CAAE,WAAY,EAAc,KAAK,mBAAoB,CAAI,CAAA,CAClH,CAAA,CACA,GACF,IAGR,EAAA,EAAA,KAAC,EAAD,CAAA,UACE,EAAA,EAAA,KAAC,EAAa,OAAd,CACE,KAAM,EAAU,QAAQ,CACxB,QAAS,EAAM,WACf,QAAQ,OACR,CAAA,CACW,CAAA,CACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as e,D as t}from"./B1i9atik.chunk.js";import{t as n}from"./YhCzLJGK.chunk.js";import{t as r}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{C as e,D as t}from"./B1i9atik.chunk.js";import{t as n}from"./YhCzLJGK.chunk.js";import{t as r}from"./C8lms6Rf2.chunk.js";var i={programTimeBadge:`_programTimeBadge_2h19o_1`,small:`_small_2h19o_5`,hover:`_hover_2h19o_8`};t();var a=e();function o(e){let t=e.program.timeZone||e.program.region.timeZone,o=r(e.program.startTime,t),s=r(e.program.stopTime,t);return(0,a.jsx)(`div`,{className:`${i.programTimeBadge} ${e.small?`${i.small} align-items-end`:`align-items-center`} ${e.hover?i.hover:``} ${e.className||``} d-flex bg-white text-nowrap border border-dark rounded-pill px-2`,children:(0,a.jsxs)(`span`,{children:[e.showDate&&`${n.format(o,`D MMM`)} @ `,n.format(o,`hh:mma`),e.showEndTime&&` - ${n.format(s,`hh:mma`)}`]})})}export{o as t};
|
|
2
|
+
//# sourceMappingURL=D8x02prV2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"D8x02prV2.chunk.js","names":[],"sources":["../../src/apps/tv/components/tv-program-time-badge/tv-program-time-badge.module.scss","../../src/apps/tv/components/tv-program-time-badge/TvProgramTimeBadge.tsx"],"sourcesContent":[":local {\n .programTimeBadge {\n font-size: 0.875rem;\n height: 1.5rem;\n\n &.small {\n height: 1.25rem;\n }\n\n &.hover:hover {\n background: $light-blue !important;\n border-color: $blue !important;\n }\n }\n}","import React from 'react';\n\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { toLocalTime } from 'apps/tv/utils/toLocalTime';\n\nimport styles from './tv-program-time-badge.module.scss';\n\ninterface TvProgramTimeBadgeProps {\n program: TvProgram;\n small?: boolean;\n showEndTime?: boolean;\n showDate?: boolean;\n hover?: boolean;\n className?: string;\n}\n\nexport function TvProgramTimeBadge(props: TvProgramTimeBadgeProps) {\n const timeZone = props.program.timeZone || props.program.region.timeZone;\n const startTime = toLocalTime(props.program.startTime, timeZone);\n const stopTime = toLocalTime(props.program.stopTime, timeZone);\n\n return (\n <div className={`${styles.programTimeBadge} ${props.small ? `${styles.small} align-items-end` : 'align-items-center'} ${props.hover ? styles.hover : ''} ${props.className || ''} d-flex bg-white text-nowrap border border-dark rounded-pill px-2`}>\n <span>\n {props.showDate && `${DateHelper.format(startTime, 'D MMM')} @ `}\n {DateHelper.format(startTime, 'hh:mma')}\n {props.showEndTime && ` - ${DateHelper.format(stopTime, 'hh:mma')}`}\n </span>\n </div>\n );\n}\n"],"mappings":"iPCkBA,SAAgB,EAAmB,EAAgC,CACjE,IAAM,EAAW,EAAM,QAAQ,UAAY,EAAM,QAAQ,OAAO,SAC1D,EAAY,EAAY,EAAM,QAAQ,UAAW,EAAS,CAC1D,EAAW,EAAY,EAAM,QAAQ,SAAU,EAAS,CAE9D,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,GAAG,EAAO,iBAAiB,GAAG,EAAM,MAAQ,GAAG,EAAO,MAAM,kBAAoB,qBAAqB,GAAG,EAAM,MAAQ,EAAO,MAAQ,GAAG,GAAG,EAAM,WAAa,GAAG,6EAC/K,EAAA,EAAA,MAAC,OAAD,CAAA,SAAA,CACG,EAAM,UAAY,GAAG,EAAW,OAAO,EAAW,QAAQ,CAAC,KAC3D,EAAW,OAAO,EAAW,SAAS,CACtC,EAAM,aAAe,MAAM,EAAW,OAAO,EAAU,SAAS,GAC5D,CAAA,CAAA,CACH,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{y as e}from"./TJBzqR6k.chunk.js";import{t}from"./BG5Aor0J.chunk.js";import{t as n}from"./CrBD6Z4s.chunk.js";import{Q as r,c as i}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{y as e}from"./TJBzqR6k.chunk.js";import{t}from"./BG5Aor0J.chunk.js";import{t as n}from"./CrBD6Z4s.chunk.js";import{Q as r,c as i}from"./app-fNhmX-xT.js";import{t as a}from"./D2DuwJJH2.chunk.js";import{r as o}from"./Bgx2b8dF.chunk.js";var s={exchange(){return{url:n.urlBuilder(`/api/domain/v2/me/libraries`,{type:[`exchange`],maxCategoryDepth:0}),key:`exchange`,normalize:!1,formatData:e=>t.first(e).data}},categories(){return{url:n.urlBuilder(`/api/domain/v2/me/libraries`,{type:[`exchange`],maxCategoryDepth:2}),key:`exchange:categories`,normalize:!1,formatData:e=>t.first(e).children}},folderVideos(e,t,o){let s=r.getVideoSortParam(t),c=(s?`{${s},libraries.typeid:18}`:``)+i.VIDEO_COLLECTION;return{url:n.urlBuilder(`{gateway}/v1/objects/${e}/videos`,{cursor:o,query:c,permissionFilterOption:a.StripMetadata}),key:[`folder`,`videos`,e,o,t].filter(e=>!!e).join(`:`)}},seriesVideos(e,t,a){let o=r.getVideoSortParam(t),s=(o?`{${o},libraries.typeid:18}`:``)+i.VIDEO_COLLECTION;return{url:n.urlBuilder(`{gateway}/v1/collections/${e}/videos`,{query:s,cursor:a}),key:[`series`,`videos`,e,a,t].filter(e=>!!e).join(`:`)}},mostRecentVideos(e,t){let r=`{orderByDesc:timestamp}`+i.VIDEO_COLLECTION;return{url:n.urlBuilder(`{gateway}/v1/collections/${e}/videos`,{query:r,cursor:t}),key:[`mostRecent`,`videos`,e,t].filter(e=>!!e).join(`:`)}},addVideo(t,n){return{key:`add:video:exchange`,url:`{gateway}/v1/users/me/add-videos`,data:{libraryId:t,objectId:n},type:e.POST,invalidationKeys:`videos:${n}:`}},suggestEdit(t,n){return{key:`suggest:an:edit`,url:`{gateway}/v1/videos/${t}/suggest-edit`,data:n,type:e.POST}},search(e,t,r={},i){let a=`search:${e}:${t}:${i}`;a+=Object.keys(r).map(e=>r[e]).join(`;`);let s=Object.assign({},{index:t,cursor:i??void 0,query:e,...r});return{url:n.urlBuilder(`{gateway}/v3/search/exchange`,s),key:a,formatData:e=>{let t=e.totalResults,n=e?.results?.filter(e=>{if(e._index!==`series`&&e._index!==`playlist`)return!0;if(e._index===`playlist`){let n=e;return n.clips?.data?.length||n.interactives?.data?.length||n.videos?.data?.length?!0:(t--,!1)}return e.videos?.data?.length===0?(t--,!1):!0})??[];e.results=n,e.totalResults=t;let r=n[0]?._score;return{...e,results:o.mapMaxScoreToSearchResults(n,r)}}}}};export{s as t};
|
|
2
|
+
//# sourceMappingURL=DAQxdC_x.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DAQxdC_x.chunk.js","names":[],"sources":["../../src/apps/exchange/flight-requests/ExchangeRequests.ts"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { SearchIndices, SearchResultObjectTypes, SearchResults, SearchResultsObject } from 'libs/shared/apps/search/interfaces';\nimport { SharedSearchHelper } from 'libs/shared/apps/search/utils/SharedSearchHelper';\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { Playlist, Series, SuggestEditRequest } from 'libs/shared/interfaces';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nexport const ExchangeRequests = {\n exchange() {\n return {\n url: UrlHelper.urlBuilder('/api/domain/v2/me/libraries', {\n type: ['exchange'],\n maxCategoryDepth: 0\n }),\n key: 'exchange',\n normalize: false,\n formatData: (data: HashObject[]) => {\n return ArrayHelper.first(data).data;\n }\n };\n },\n categories() {\n return {\n url: UrlHelper.urlBuilder('/api/domain/v2/me/libraries', {\n type: ['exchange'],\n maxCategoryDepth: 2\n }),\n key: 'exchange:categories',\n normalize: false,\n formatData: (data: HashObject[]) => {\n return ArrayHelper.first(data).children;\n }\n };\n },\n folderVideos(\n folderId: string,\n sort?: VideoSortType,\n cursor?: string\n ): Flight.Request {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n \n const query = (sortFilter ? `{${sortFilter},libraries.typeid:18}` : '') + SharedWithStatements.VIDEO_COLLECTION;\n\n const url = UrlHelper.urlBuilder(`{gateway}/v1/objects/${folderId}/videos`, {\n cursor,\n query,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n });\n\n const key = [ 'folder', 'videos', folderId, cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url,\n key\n };\n },\n seriesVideos(\n seriesId: string,\n sort?: VideoSortType,\n cursor?: string\n ): Flight.Request {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n\n const query = (sortFilter ? `{${sortFilter},libraries.typeid:18}` : '') + SharedWithStatements.VIDEO_COLLECTION;\n\n const url = UrlHelper.urlBuilder(`{gateway}/v1/collections/${seriesId}/videos`, {\n query,\n cursor\n });\n\n const key = [ 'series', 'videos', seriesId, cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url,\n key\n };\n },\n mostRecentVideos(exchangeId: string, cursor?: string): Flight.Request {\n const query = '{orderByDesc:timestamp}' + SharedWithStatements.VIDEO_COLLECTION;\n \n const url = UrlHelper.urlBuilder(`{gateway}/v1/collections/${exchangeId}/videos`, {\n query,\n cursor\n });\n\n const key = [ 'mostRecent', 'videos', exchangeId, cursor ].filter(k => !!k).join(':');\n\n return {\n url,\n key\n };\n },\n addVideo(\n libraryId: string,\n objectId: string\n ): Flight.Request {\n return {\n key: 'add:video:exchange',\n url: '{gateway}/v1/users/me/add-videos',\n data: {\n libraryId,\n objectId\n },\n type: HttpVerbs.POST,\n invalidationKeys: `videos:${objectId}:`\n };\n },\n\n suggestEdit(id: string, data: SuggestEditRequest): Flight.Request {\n return {\n key: 'suggest:an:edit',\n url: `{gateway}/v1/videos/${id}/suggest-edit`,\n data,\n type: HttpVerbs.POST\n };\n },\n\n search(\n query: string,\n indices: SearchIndices[],\n filters: HashObject = {},\n cursor?: string\n ): Flight.Request {\n let key = `search:${query}:${indices}:${cursor}`;\n\n key += Object.keys(filters).map(filterName => filters[filterName]).join(';');\n\n const params = Object.assign({}, {\n index: indices,\n cursor: cursor ?? undefined,\n query,\n ...filters\n });\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v3/search/exchange', params),\n key,\n formatData: (response: SearchResults<SearchResultObjectTypes>) => {\n /**\n * Until playlists and series are regionalised, search will always return every series/playlist that exists\n * even if the current user doesn't have access to the content inside (which will happen for example when playlists/series)\n * contain all UK library content but is being searched for by an AU user.\n *\n * For some search queries, this may result in search showing a bunch of \"empty\" playlists/series, which sucks.\n * This will filter all empty collections out and decrement the `totalResults` to avoid this and make search a better\n * experience.\n *\n * Ideally this will be removed one day when this regionalisation is no longer an issue.\n */\n let totalResults = response.totalResults;\n\n const results = response?.results?.filter(result => {\n if (result._index !== 'series' && result._index !== 'playlist')\n return true;\n\n if (result._index === 'playlist') {\n const playlist = result as SearchResultsObject<Playlist>;\n\n if (playlist.clips?.data?.length ||\n playlist.interactives?.data?.length ||\n playlist.videos?.data?.length)\n return true;\n\n totalResults--;\n return false;\n }\n\n if ((result as SearchResultsObject<Series>).videos?.data?.length === 0) {\n totalResults--;\n return false;\n }\n\n return true;\n }) ?? [];\n\n response.results = results;\n response.totalResults = totalResults;\n\n // The first search result will always have the highest score value.\n // We store it so that we can access it for subsequent results pages\n const resultMaxScore = results[0]?._score;\n\n return {\n ...response,\n results: SharedSearchHelper.mapMaxScoreToSearchResults(results, resultMaxScore)\n };\n }\n };\n }\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as e,D as t,S as n,b as r,d as i,s as a}from"./B1i9atik.chunk.js";import{l as o,u as s}from"./TJBzqR6k.chunk.js";import{t as c}from"./CzvVp9iC.chunk.js";import{n as l,t as u}from"./Dn3hwC-o.chunk.js";import{i as d,o as f,s as p}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{C as e,D as t,S as n,b as r,d as i,s as a}from"./B1i9atik.chunk.js";import{l as o,u as s}from"./TJBzqR6k.chunk.js";import{t as c}from"./CzvVp9iC.chunk.js";import{n as l,t as u}from"./Dn3hwC-o.chunk.js";import{i as d,o as f,s as p}from"./B3S7B746.chunk.js";import{t as m}from"./CBwR65WF.chunk.js";import{t as h}from"./CrBD6Z4s.chunk.js";import{t as g}from"./DKbUI-vj.chunk.js";import{$ as _,Q as v,c as y,s as b}from"./app-fNhmX-xT.js";import{t as x}from"./Bswd1QrZ2.chunk.js";import{h as S,m as C,t as w}from"./DT626M1P.chunk.js";import{t as T}from"./DAQxdC_x.chunk.js";import{t as E}from"./C-jHArp-.chunk.js";import{t as D}from"./DfWNECxe.chunk.js";import{t as O}from"./CfCxi56P.chunk.js";import{n as k,r as A}from"./CiEI8sTG.chunk.js";import{n as j,r as M,t as N}from"./HkF7AIye.chunk.js";t();var P={sharedSeries:(e,t)=>h.urlBuilder(`/api/objects/${e}`,{query:y.SERIES,shareId:t}),seriesWithVideos:(e,t=3)=>`{gateway}/v1/objects/${e}?query=banner,videos[season,thumbnail,_canBeConsumed]{limit:${t}}`},F={series(e){let t={query:y.SERIES};return{url:h.urlBuilder(`{gateway}/v1/objects/${e}`,t),publicUrl:h.urlBuilder(`/api/objects/${e}`,t),key:`series:${e}`}},sharedSeries(e,t){return{url:P.sharedSeries(e,t),key:`shared:series:${e}:${t}`}},seriesWithVideos(e,t=3){return{url:P.seriesWithVideos(e,t),key:`series:${e}:with:videos:${t}`}},seriesWithThumbnailAndCount(e){return{url:`{gateway}/v1/objects/${e}?query=videos[season,thumbnail,_canBeConsumed,count()]{limit:1}`,key:`series:${e}:thumbnail:count`}},seriesVideos(e,t,n,r){let i=v.getVideoSortParam(n),a=[`series`,e,`videos`,r,n].filter(e=>!!e).join(`:`);return{url:h.urlBuilder(`{gateway}/v1/collections/${e}/videos`,{query:`{${i}}${y.VIDEO_COLLECTION}`,cursor:r}),publicUrl:h.urlBuilder(`/api/objects/collections/${e}/videos`,{query:`{${i}}${b.VIDEO_COLLECTION}`,cursor:r}),key:a}}},I=e();function L(){return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`div`,{className:`partial-loading-background pb-4 mb-3 w-50`}),(0,I.jsx)(`div`,{className:`d-flex align-items-center justify-content-between mb-2`,children:(0,I.jsx)(M,{})}),(0,I.jsx)(`div`,{className:`mx-n2`,children:(0,I.jsx)(d,{})})]})}var R=c.encloseNamespace(`exchange.exchangeSeries`);function z(e){let t=s(),c=x(),h=o(F.series(e.seriesId)),y=o(g.currentUser());m({title:h.data?.name}),O(h);let{commonVideoProps:b}=C(),M=!!y.data&&v.getOrSetSortType(y.data.id,e.sort,_.ProductionYear,`series`),{items:P,hasMore:z,isFetching:B,nextCursor:V}=p(H,U,W);function H(t){return T.seriesVideos(e.seriesId,M,t)}function U(e){return t(H(e))}function W(e,t){if(e===1)return E(t);c.error(R(`error`))}let G=D(`video-list`),K=h.data?[{name:R(`exchangeArchive`),appLink:{application:l.EXCHANGE,action:u.Exchange.INDEX}},{name:h.data.name,active:!0}]:[];return!h.data||B?(0,I.jsx)(L,{}):(0,I.jsxs)(S.Provider,{value:G,children:[(0,I.jsx)(`h1`,{className:`h2`,children:h.data.name}),(0,I.jsxs)(`div`,{className:`d-flex justify-content-between align-items-center`,children:[(0,I.jsx)(j,{breadcrumbs:K}),(0,I.jsx)(N,{variant:`outline-dark`,type:M,getSortAppLink:e=>k(h.data,e),analyticsOptions:{location:i.VideoListHeader,entity:a.Video,actionType:r.Sort,workflowPhase:n.Complete},includeProductionYear:!0})]}),(0,I.jsxs)(`div`,{className:`pb-3`,children:[P?(0,I.jsx)(w,{videos:P,getVideoAppLink:A,presentationAudiences:null,getPreviewQuestionsAppLink:()=>null,hasPermissions:()=>!1,hideVideoGuidance:!0,commonVideoProps:b}):(0,I.jsx)(`div`,{className:`mx-n2`,children:(0,I.jsx)(d,{})}),(z||B)&&(0,I.jsx)(f,{isFetching:B,fetchNext:U,nextCursor:V})]})]})}export{z as ExchangeSeriesView};
|
|
2
|
+
//# sourceMappingURL=DGBrggmU2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DOuiFwIH2.chunk.js","names":[],"sources":["../../../../libs/shared/src/flight-requests/SeriesRequests.ts","../../src/apps/exchange/views/exchange-series/partial-loading/PartialExchangeSeries.tsx","../../src/apps/exchange/views/exchange-series/ExchangeSeriesView.tsx"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nconst endpoints = {\n sharedSeries: (id: string, shareId: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: SharedWithStatements.SERIES,\n shareId\n }),\n seriesWithVideos: (id: string, videoCount: number = 3) => {\n return `{gateway}/v1/objects/${id}?query=banner,videos[season,thumbnail,_canBeConsumed]{limit:${videoCount}}`;\n }\n};\n\nexport const SeriesRequests = {\n series(id: string): Flight.PublicRequest {\n const queryStringObj = { query: SharedWithStatements.SERIES };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, queryStringObj),\n key: `series:${id}`\n };\n },\n sharedSeries(id: string, shareId: string): Flight.Request {\n return {\n url: endpoints.sharedSeries(id, shareId),\n key: `shared:series:${id}:${shareId}`\n };\n },\n seriesWithVideos(id: string, videoCount: number = 3): Flight.Request {\n return {\n url: endpoints.seriesWithVideos(id, videoCount),\n key: `series:${id}:with:videos:${videoCount}`\n };\n },\n seriesWithThumbnailAndCount(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}?query=videos[season,thumbnail,_canBeConsumed,count()]{limit:1}`,\n key: `series:${id}:thumbnail:count`\n };\n },\n seriesVideos(id: string, userId?: string, sort?: VideoSortType, cursor?: string): Flight.PublicRequest {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n\n const key = [ 'series', id, 'videos', cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/collections/${id}/videos`, {\n query: `{${sortFilter}}${SharedWithStatements.VIDEO_COLLECTION}`,\n cursor\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/collections/${id}/videos`, {\n query: `{${sortFilter}}${PublicWithStatement.VIDEO_COLLECTION}`,\n cursor\n }),\n key\n };\n }\n};\n","import React from 'react';\n\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nexport function PartialExchangeSeries() {\n return (\n <>\n <div\n className='partial-loading-background pb-4 mb-3 w-50'\n ></div>\n\n <div className='d-flex align-items-center justify-content-between mb-2'>\n <PartialBreadcrumbs />\n </div>\n \n <div className='mx-n2'>\n <PartialVideoList />\n </div>\n </>\n );\n}\n","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser, Series, Video } from 'libs/shared/interfaces';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\nimport { useCommonVideoProps } from 'apps/exchange/hooks/useCommonVideoProps';\nimport { useGetExchangeActions } from 'apps/exchange/hooks/useGetExchangeActions';\nimport { getSeriesAppLink, getVideoAppLink } from 'apps/exchange/utils/ExchangeUtils';\n\nimport { PartialExchangeSeries } from './partial-loading/PartialExchangeSeries';\n\nconst namespace = 'exchange.exchangeSeries';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ExchangeSeriesViewProps {\n seriesId: string;\n sort: VideoSortType;\n}\n\nexport function ExchangeSeriesView(props: ExchangeSeriesViewProps): JSX.Element {\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.seriesId));\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n useSetPageMetadata({ title: series.data?.name });\n useHandleObjectError(series);\n\n const { commonVideoProps } = useCommonVideoProps();\n\n // Must be before the video fetching, as the getVideosRequest has a closure over the sort\n const sort = !!currentUser.data\n && VideoSortHelper.getOrSetSortType(currentUser.data.id, props.sort, VideoSortType.ProductionYear, 'series');\n\n const {\n items: videos,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<Video>(getVideosRequest, fetchNextVideos, onError);\n\n function getVideosRequest(cursor?: string): Flight.Request {\n return ExchangeRequests.seriesVideos(props.seriesId, sort, cursor);\n }\n\n function fetchNextVideos(cursor?: string): void {\n return fetch(getVideosRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n\n const videoActions = useGetExchangeActions('video-list');\n\n const breadcrumbs = series.data ? [{\n name: getPhrase('exchangeArchive'),\n appLink: {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.INDEX\n }\n }, {\n name: series.data.name,\n active: true\n }] : [];\n\n if (!series.data || isFetching)\n return <PartialExchangeSeries />;\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <h1 className='h2'>{series.data.name}</h1>\n\n <div className='d-flex justify-content-between align-items-center'>\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n\n <VideoSortSelect\n variant='outline-dark'\n type={sort}\n getSortAppLink={sort => getSeriesAppLink(series.data, sort)}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n includeProductionYear\n />\n </div>\n\n <div className='pb-3'>\n {videos ? (\n <VideoList\n videos={videos}\n getVideoAppLink={getVideoAppLink}\n presentationAudiences={null}\n getPreviewQuestionsAppLink={() => null}\n hasPermissions={() => false}\n hideVideoGuidance\n commonVideoProps={commonVideoProps}\n />) : (\n <div className='mx-n2'>\n <PartialVideoList />\n </div>\n )}\n\n {(hasMore || isFetching) && (\n <InfiniteScrollFooter\n isFetching={isFetching}\n fetchNext={fetchNextVideos}\n nextCursor={nextCursor}\n />\n )}\n </div>\n </VideoActionsContext.Provider>\n );\n}\n"],"mappings":"kyBAOA,IAAA,EAAA,4GAMI,wBAAA,EAAA,8DAAA,EAAA,IAIJ,EAAA,kCAII,MAAA,qIAOA,MAAA,iFAMA,MAAA,iGAMA,MAAA,4OAUA,MAAA,sOC7CJ,SAAgB,GAAwB,CACtC,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,MAAD,CACE,UAAU,4CACL,CAAA,EAEP,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,mEACb,EAAA,EAAA,KAAC,EAAD,EAAsB,CAAA,CAClB,CAAA,EAEN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kBACb,EAAA,EAAA,KAAC,EAAD,EAAoB,CAAA,CAChB,CAAA,CACL,CAAA,CAAA,CCiBP,IAAM,EAAY,EAAgB,iBADhB,0BAC2C,CAO7D,SAAgB,EAAmB,EAA6C,CAC9E,IAAM,EAAQ,GAAoB,CAC5B,EAAS,GAAW,CAEpB,EAAS,EAA6B,EAAe,OAAO,EAAM,SAAS,CAAC,CAC5E,EAAc,EAAkC,EAAa,aAAa,CAAC,CAEjF,EAAmB,CAAE,MAAO,EAAO,MAAM,KAAM,CAAC,CAChD,EAAqB,EAAO,CAE5B,GAAM,CAAE,oBAAqB,GAAqB,CAG5C,EAAO,CAAC,CAAC,EAAY,MACtB,EAAgB,iBAAiB,EAAY,KAAK,GAAI,EAAM,KAAM,EAAc,eAAgB,SAAS,CAExG,CACJ,MAAO,EACP,UACA,aACA,cACE,EAAuB,EAAkB,EAAiB,EAAQ,CAEtE,SAAS,EAAiB,EAAiC,CACzD,OAAO,EAAiB,aAAa,EAAM,SAAU,EAAM,EAAO,CAGpE,SAAS,EAAgB,EAAuB,CAC9C,OAAO,EAAM,EAAiB,EAAO,CAAC,CAGxC,SAAS,EAAQ,EAAoB,EAA8B,CACjE,GAAI,IAAe,EACjB,OAAO,EAAgB,EAAW,CAEpC,EAAO,MAAM,EAAU,QAAQ,CAAC,CAGlC,IAAM,EAAe,EAAsB,aAAa,CAElD,EAAc,EAAO,KAAO,CAAC,CACjC,KAAM,EAAU,kBAAkB,CAClC,QAAS,CACP,YAAa,EAAY,SACzB,OAAQ,EAAQ,SAAS,MAC1B,CACF,CAAE,CACD,KAAM,EAAO,KAAK,KAClB,OAAQ,GACT,CAAC,CAAG,EAAE,CAKP,MAHI,CAAC,EAAO,MAAQ,GACX,EAAA,EAAA,KAAC,EAAD,EAAyB,CAAA,EAGhC,EAAA,EAAA,MAAC,EAAoB,SAArB,CAA8B,MAAO,WAArC,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,cAAM,EAAO,KAAK,KAAU,CAAA,EAE1C,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,6DAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAA0B,cAAe,CAAA,EAEzC,EAAA,EAAA,KAAC,EAAD,CACE,QAAQ,eACR,KAAM,EACN,eAAgB,GAAQ,EAAiB,EAAO,KAAM,EAAK,CAC3D,iBAAkB,CAChB,SAAU,EAAgB,gBAC1B,OAAQ,EAAW,MACnB,WAAY,EAAW,KACvB,cAAe,EAAc,SAC9B,CACD,sBAAA,GACA,CAAA,CACE,IAEN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gBAAf,CACG,GACC,EAAA,EAAA,KAAC,EAAD,CACU,SACS,kBACjB,sBAAuB,KACvB,+BAAkC,KAClC,mBAAsB,GACtB,kBAAA,GACkB,mBAClB,CAAA,EACF,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kBACb,EAAA,EAAA,KAAC,EAAD,EAAoB,CAAA,CAChB,CAAA,EAGN,GAAW,KACX,EAAA,EAAA,KAAC,EAAD,CACc,aACZ,UAAW,EACC,aACZ,CAAA,CAEA,GACuB"}
|
|
1
|
+
{"version":3,"file":"DGBrggmU2.chunk.js","names":[],"sources":["../../../../libs/shared/src/flight-requests/SeriesRequests.ts","../../src/apps/exchange/views/exchange-series/partial-loading/PartialExchangeSeries.tsx","../../src/apps/exchange/views/exchange-series/ExchangeSeriesView.tsx"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nconst endpoints = {\n sharedSeries: (id: string, shareId: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: SharedWithStatements.SERIES,\n shareId\n }),\n seriesWithVideos: (id: string, videoCount: number = 3) => {\n return `{gateway}/v1/objects/${id}?query=banner,videos[season,thumbnail,_canBeConsumed]{limit:${videoCount}}`;\n }\n};\n\nexport const SeriesRequests = {\n series(id: string): Flight.PublicRequest {\n const queryStringObj = { query: SharedWithStatements.SERIES };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, queryStringObj),\n key: `series:${id}`\n };\n },\n sharedSeries(id: string, shareId: string): Flight.Request {\n return {\n url: endpoints.sharedSeries(id, shareId),\n key: `shared:series:${id}:${shareId}`\n };\n },\n seriesWithVideos(id: string, videoCount: number = 3): Flight.Request {\n return {\n url: endpoints.seriesWithVideos(id, videoCount),\n key: `series:${id}:with:videos:${videoCount}`\n };\n },\n seriesWithThumbnailAndCount(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}?query=videos[season,thumbnail,_canBeConsumed,count()]{limit:1}`,\n key: `series:${id}:thumbnail:count`\n };\n },\n seriesVideos(id: string, userId?: string, sort?: VideoSortType, cursor?: string): Flight.PublicRequest {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n\n const key = [ 'series', id, 'videos', cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/collections/${id}/videos`, {\n query: `{${sortFilter}}${SharedWithStatements.VIDEO_COLLECTION}`,\n cursor\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/collections/${id}/videos`, {\n query: `{${sortFilter}}${PublicWithStatement.VIDEO_COLLECTION}`,\n cursor\n }),\n key\n };\n }\n};\n","import React from 'react';\n\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nexport function PartialExchangeSeries() {\n return (\n <>\n <div\n className='partial-loading-background pb-4 mb-3 w-50'\n ></div>\n\n <div className='d-flex align-items-center justify-content-between mb-2'>\n <PartialBreadcrumbs />\n </div>\n \n <div className='mx-n2'>\n <PartialVideoList />\n </div>\n </>\n );\n}\n","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser, Series, Video } from 'libs/shared/interfaces';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { ExchangeRequests } from 'apps/exchange/flight-requests/ExchangeRequests';\nimport { useCommonVideoProps } from 'apps/exchange/hooks/useCommonVideoProps';\nimport { useGetExchangeActions } from 'apps/exchange/hooks/useGetExchangeActions';\nimport { getSeriesAppLink, getVideoAppLink } from 'apps/exchange/utils/ExchangeUtils';\n\nimport { PartialExchangeSeries } from './partial-loading/PartialExchangeSeries';\n\nconst namespace = 'exchange.exchangeSeries';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ExchangeSeriesViewProps {\n seriesId: string;\n sort: VideoSortType;\n}\n\nexport function ExchangeSeriesView(props: ExchangeSeriesViewProps): JSX.Element {\n const fetch = Flight.useGetFetch();\n const alerts = useAlerts();\n\n const series = Flight.useBasicFetch<Series>(SeriesRequests.series(props.seriesId));\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n useSetPageMetadata({ title: series.data?.name });\n useHandleObjectError(series);\n\n const { commonVideoProps } = useCommonVideoProps();\n\n // Must be before the video fetching, as the getVideosRequest has a closure over the sort\n const sort = !!currentUser.data\n && VideoSortHelper.getOrSetSortType(currentUser.data.id, props.sort, VideoSortType.ProductionYear, 'series');\n\n const {\n items: videos,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<Video>(getVideosRequest, fetchNextVideos, onError);\n\n function getVideosRequest(cursor?: string): Flight.Request {\n return ExchangeRequests.seriesVideos(props.seriesId, sort, cursor);\n }\n\n function fetchNextVideos(cursor?: string): void {\n return fetch(getVideosRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n\n const videoActions = useGetExchangeActions('video-list');\n\n const breadcrumbs = series.data ? [{\n name: getPhrase('exchangeArchive'),\n appLink: {\n application: AppChannels.EXCHANGE,\n action: Actions.Exchange.INDEX\n }\n }, {\n name: series.data.name,\n active: true\n }] : [];\n\n if (!series.data || isFetching)\n return <PartialExchangeSeries />;\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <h1 className='h2'>{series.data.name}</h1>\n\n <div className='d-flex justify-content-between align-items-center'>\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n\n <VideoSortSelect\n variant='outline-dark'\n type={sort}\n getSortAppLink={sort => getSeriesAppLink(series.data, sort)}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n includeProductionYear\n />\n </div>\n\n <div className='pb-3'>\n {videos ? (\n <VideoList\n videos={videos}\n getVideoAppLink={getVideoAppLink}\n presentationAudiences={null}\n getPreviewQuestionsAppLink={() => null}\n hasPermissions={() => false}\n hideVideoGuidance\n commonVideoProps={commonVideoProps}\n />) : (\n <div className='mx-n2'>\n <PartialVideoList />\n </div>\n )}\n\n {(hasMore || isFetching) && (\n <InfiniteScrollFooter\n isFetching={isFetching}\n fetchNext={fetchNextVideos}\n nextCursor={nextCursor}\n />\n )}\n </div>\n </VideoActionsContext.Provider>\n );\n}\n"],"mappings":"kyBAOA,IAAA,EAAA,4GAMI,wBAAA,EAAA,8DAAA,EAAA,IAIJ,EAAA,kCAII,MAAA,qIAOA,MAAA,iFAMA,MAAA,iGAMA,MAAA,4OAUA,MAAA,sOC7CJ,SAAgB,GAAwB,CACtC,OACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,MAAD,CACE,UAAU,4CACL,CAAA,EAEP,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,mEACb,EAAA,EAAA,KAAC,EAAD,EAAsB,CAAA,CAClB,CAAA,EAEN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kBACb,EAAA,EAAA,KAAC,EAAD,EAAoB,CAAA,CAChB,CAAA,CACL,CAAA,CAAA,CCiBP,IAAM,EAAY,EAAgB,iBADhB,0BAC2C,CAO7D,SAAgB,EAAmB,EAA6C,CAC9E,IAAM,EAAQ,GAAoB,CAC5B,EAAS,GAAW,CAEpB,EAAS,EAA6B,EAAe,OAAO,EAAM,SAAS,CAAC,CAC5E,EAAc,EAAkC,EAAa,aAAa,CAAC,CAEjF,EAAmB,CAAE,MAAO,EAAO,MAAM,KAAM,CAAC,CAChD,EAAqB,EAAO,CAE5B,GAAM,CAAE,oBAAqB,GAAqB,CAG5C,EAAO,CAAC,CAAC,EAAY,MACtB,EAAgB,iBAAiB,EAAY,KAAK,GAAI,EAAM,KAAM,EAAc,eAAgB,SAAS,CAExG,CACJ,MAAO,EACP,UACA,aACA,cACE,EAAuB,EAAkB,EAAiB,EAAQ,CAEtE,SAAS,EAAiB,EAAiC,CACzD,OAAO,EAAiB,aAAa,EAAM,SAAU,EAAM,EAAO,CAGpE,SAAS,EAAgB,EAAuB,CAC9C,OAAO,EAAM,EAAiB,EAAO,CAAC,CAGxC,SAAS,EAAQ,EAAoB,EAA8B,CACjE,GAAI,IAAe,EACjB,OAAO,EAAgB,EAAW,CAEpC,EAAO,MAAM,EAAU,QAAQ,CAAC,CAGlC,IAAM,EAAe,EAAsB,aAAa,CAElD,EAAc,EAAO,KAAO,CAAC,CACjC,KAAM,EAAU,kBAAkB,CAClC,QAAS,CACP,YAAa,EAAY,SACzB,OAAQ,EAAQ,SAAS,MAC1B,CACF,CAAE,CACD,KAAM,EAAO,KAAK,KAClB,OAAQ,GACT,CAAC,CAAG,EAAE,CAKP,MAHI,CAAC,EAAO,MAAQ,GACX,EAAA,EAAA,KAAC,EAAD,EAAyB,CAAA,EAGhC,EAAA,EAAA,MAAC,EAAoB,SAArB,CAA8B,MAAO,WAArC,EACE,EAAA,EAAA,KAAC,KAAD,CAAI,UAAU,cAAM,EAAO,KAAK,KAAU,CAAA,EAE1C,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,6DAAf,EACE,EAAA,EAAA,KAAC,EAAD,CAA0B,cAAe,CAAA,EAEzC,EAAA,EAAA,KAAC,EAAD,CACE,QAAQ,eACR,KAAM,EACN,eAAgB,GAAQ,EAAiB,EAAO,KAAM,EAAK,CAC3D,iBAAkB,CAChB,SAAU,EAAgB,gBAC1B,OAAQ,EAAW,MACnB,WAAY,EAAW,KACvB,cAAe,EAAc,SAC9B,CACD,sBAAA,GACA,CAAA,CACE,IAEN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gBAAf,CACG,GACC,EAAA,EAAA,KAAC,EAAD,CACU,SACS,kBACjB,sBAAuB,KACvB,+BAAkC,KAClC,mBAAsB,GACtB,kBAAA,GACkB,mBAClB,CAAA,EACF,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,kBACb,EAAA,EAAA,KAAC,EAAD,EAAoB,CAAA,CAChB,CAAA,EAGN,GAAW,KACX,EAAA,EAAA,KAAC,EAAD,CACc,aACZ,UAAW,EACC,aACZ,CAAA,CAEA,GACuB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{S as e,b as t,bt as n,d as r,s as i,x as a}from"./B1i9atik.chunk.js";import{l as o}from"./TJBzqR6k.chunk.js";import{t as s}from"./CzvVp9iC.chunk.js";import{n as c,t as l}from"./Dn3hwC-o.chunk.js";import{t as u}from"./CrBD6Z4s.chunk.js";import{Z as d,at as f}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{S as e,b as t,bt as n,d as r,s as i,x as a}from"./B1i9atik.chunk.js";import{l as o}from"./TJBzqR6k.chunk.js";import{t as s}from"./CzvVp9iC.chunk.js";import{n as c,t as l}from"./Dn3hwC-o.chunk.js";import{t as u}from"./CrBD6Z4s.chunk.js";import{Z as d,at as f}from"./app-fNhmX-xT.js";import{n as p}from"./M-OKfIH7.chunk.js";var m=s.encloseNamespace(`tv.addRequests`);function h(s,h,g){let _=o(d.config());return function(o){if(!h)return[];let d=s===`preview`,v={id:o.id,name:o.title},y=d?r.VideoItemPreview:r.VideoListItem;return[{label:d?m(`addVideo`):``,svg:d?void 0:p,tooltip:d?``:m(`addVideo`),className:d?`btn btn-dark me-2 text-nowrap`:`btn`,button:!0,onClick:()=>{n.trigger({application:c.TV,action:l.Tv.ADD,args:[h.code,o.id],params:{currentTime:Math.floor(+g?.currentTime())||void 0}})},analyticsData:v,analyticsOptions:{actionType:t.Click,entity:i.Video,descriptor:a.AddToWorkspace,location:y,workflowPhase:e.Start}},{label:m(`editVideo`),href:u.urlBuilder(`${_.data?.cloudEditorUrl}/tv/${o.globalId}`,{product:f.Exchange}),openInNewTab:!0,analyticsData:v,analyticsOptions:{actionType:t.Click,entity:i.Video,location:y,descriptor:a.EditVideo}}]}}export{h as t};
|
|
2
|
+
//# sourceMappingURL=DI6eYZuV.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DI6eYZuV.chunk.js","names":[],"sources":["../../src/apps/tv/hooks/useGetTvActions.ts"],"sourcesContent":["import { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, UserAction, VideoActionDescriptor, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { PlayerReference } from 'libs/shared/context/player-context/interfaces/PlayerReference';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { AddVideoSvg } from 'libs/shared/images/svg/actions/AddVideoSvg';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\nimport { ExchangeConfig } from 'shared/interfaces/ExchangeConfig';\n\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\n\nconst namespace = 'tv.addRequests';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype Location = 'preview' | 'video-list';\n\nexport function useGetTvActions(location: Location, region: TvRegion, playerRef?: PlayerReference) {\n const config = Flight.useBasicFetch<ExchangeConfig>(ConfigRequests.config());\n \n return function getTvActions(program: TvProgram): ActionOptions[] {\n if (!region)\n return [];\n\n const isPreview = location === 'preview';\n const analyticsData = { id: program.id, name: program.title };\n const locationContext = isPreview ? LocationContext.VideoItemPreview : LocationContext.VideoListItem;\n\n // TODO: Register analytics for all actions\n return [{\n label: isPreview ? getPhrase('addVideo') : '',\n svg: !isPreview ? AddVideoSvg : undefined,\n tooltip: isPreview ? '' : getPhrase('addVideo'),\n className: isPreview ? 'btn btn-dark me-2 text-nowrap' : 'btn',\n button: true,\n onClick: () => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ADD,\n args: [ region.code, program.id ],\n params: {\n currentTime: Math.floor(+playerRef?.currentTime()) || undefined\n }\n });\n },\n analyticsData,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Video,\n descriptor: VideoActionDescriptor.AddToWorkspace,\n location: locationContext,\n workflowPhase: WorkflowPhase.Start\n }\n }, {\n label: getPhrase('editVideo'),\n href: UrlHelper.urlBuilder(\n `${config.data?.cloudEditorUrl}/tv/${program.globalId}`,\n { product: ProductId.Exchange }\n ),\n openInNewTab: true,\n analyticsData,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Video,\n location: locationContext,\n descriptor: VideoActionDescriptor.EditVideo\n }\n }];\n };\n}\n"],"mappings":"yUAqBA,IAAM,EAAY,EAAgB,iBADhB,iBAC2C,CAI7D,SAAgB,EAAgB,EAAoB,EAAkB,EAA6B,CACjG,IAAM,EAAS,EAAqC,EAAe,QAAQ,CAAC,CAE5E,OAAO,SAAsB,EAAqC,CAChE,GAAI,CAAC,EACH,MAAO,EAAE,CAEX,IAAM,EAAY,IAAa,UACzB,EAAgB,CAAE,GAAI,EAAQ,GAAI,KAAM,EAAQ,MAAO,CACvD,EAAkB,EAAY,EAAgB,iBAAmB,EAAgB,cAGvF,MAAO,CAAC,CACN,MAAO,EAAY,EAAU,WAAW,CAAG,GAC3C,IAAM,EAA0B,IAAA,GAAd,EAClB,QAAS,EAAY,GAAK,EAAU,WAAW,CAC/C,UAAW,EAAY,gCAAkC,MACzD,OAAQ,GACR,YAAe,CACb,EAAmB,QAAQ,CACzB,YAAa,EAAY,GACzB,OAAQ,EAAQ,GAAG,IACnB,KAAM,CAAE,EAAO,KAAM,EAAQ,GAAI,CACjC,OAAQ,CACN,YAAa,KAAK,MAAM,CAAC,GAAW,aAAa,CAAC,EAAI,IAAA,GAAA,CAEzD,CAAC,EAEJ,gBACA,iBAAkB,CAChB,WAAY,EAAW,MACvB,OAAQ,EAAW,MACnB,WAAY,EAAsB,eAClC,SAAU,EACV,cAAe,EAAc,OAEhC,CAAE,CACD,MAAO,EAAU,YAAY,CAC7B,KAAM,EAAU,WACd,GAAG,EAAO,MAAM,eAAe,MAAM,EAAQ,WAC7C,CAAE,QAAS,EAAU,SAAU,CAChC,CACD,aAAc,GACd,gBACA,iBAAkB,CAChB,WAAY,EAAW,MACvB,OAAQ,EAAW,MACnB,SAAU,EACV,WAAY,EAAsB,WAErC,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{C as e,D as t}from"./B1i9atik.chunk.js";t();var n=e();function r(e){return(0,n.jsx)(`svg`,{...e,children:(0,n.jsx)(`path`,{d:`m13.026 4.377 8.5 14A1.2 1.2 0 0 1 20.5 20.2h-17a1.2 1.2 0 0 1-1.026-1.823l8.5-14a1.2 1.2 0 0 1 2.052 0M12 5 3.5 19h17zm0 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2m.75-3.677a.69.69 0 0 1-.7.677.69.69 0 0 1-.7-.677V8.677c0-.374.313-.677.7-.677s.7.303.7.677z`,fill:`currentColor`})})}export{r as t};
|
|
2
|
+
//# sourceMappingURL=DIsOuUSO2.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DIsOuUSO2.chunk.js","names":[],"sources":["../../../../libs/shared/src/images/svg/status/WarningOutlineSvg.tsx"],"sourcesContent":["import React from 'react';\n\nexport function WarningOutlineSvg(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg {...props}>\n <path\n d='m13.026 4.377 8.5 14A1.2 1.2 0 0 1 20.5 20.2h-17a1.2 1.2 0 0 1-1.026-1.823l8.5-14a1.2 1.2 0 0 1 2.052 0M12 5 3.5 19h17zm0 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2m.75-3.677a.69.69 0 0 1-.7.677.69.69 0 0 1-.7-.677V8.677c0-.374.313-.677.7-.677s.7.303.7.677z'\n fill='currentColor'\n />\n </svg>\n );\n}\n"],"mappings":"6DAEA,SAAgB,EAAkB,EAAsC,CACtE,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,YACP,EAAA,EAAA,KAAC,OAAD,CACE,EAAE,wPACF,KAAK,eACL,CAAA,CACE,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as e,D as t,S as n,b as r,bt as i,d as a,fn as o,s,t as c,y as l}from"./B1i9atik.chunk.js";import{_ as u}from"./NpQVkKE2.chunk.js";import{d,l as f}from"./TJBzqR6k.chunk.js";import{t as p}from"./CzvVp9iC.chunk.js";import{n as m,t as h}from"./Dn3hwC-o.chunk.js";import{t as g}from"./DRTfS6nN.chunk.js";import{t as _}from"./DKbUI-vj.chunk.js";import{A as v,I as y,J as b,M as x,U as S}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{C as e,D as t,S as n,b as r,bt as i,d as a,fn as o,s,t as c,y as l}from"./B1i9atik.chunk.js";import{_ as u}from"./NpQVkKE2.chunk.js";import{d,l as f}from"./TJBzqR6k.chunk.js";import{t as p}from"./CzvVp9iC.chunk.js";import{n as m,t as h}from"./Dn3hwC-o.chunk.js";import{t as g}from"./DRTfS6nN.chunk.js";import{t as _}from"./DKbUI-vj.chunk.js";import{A as v,I as y,J as b,M as x,U as S}from"./app-fNhmX-xT.js";import{t as C}from"./Bswd1QrZ2.chunk.js";import{t as w}from"./CZrMa6z92.chunk.js";import{n as T,t as E}from"./DWVn5hOy2.chunk.js";var D=o(t()),O={selected:`_selected_ii58d_1`,disabled:`_disabled_ii58d_4`},k=e();function A(e){function t(){e.option?.disabled||e.onSelect(e.option)}let n=`text-center cursor-pointer p-3 border rounded-3 mx-2 user-select-none w-50`;return e.selected&&(n+=` border-info ${O.selected}`),e.option?.disabled&&(n+=` ${O.disabled}`),(0,k.jsxs)(u,{onClick:t,className:n,children:[e.option?.imageUrl&&(0,k.jsx)(`img`,{src:e.option.imageUrl,className:`img-fluid my-3 ${e.option.imageClassName??``}`,draggable:!1}),e.option?.title&&(0,k.jsx)(`h2`,{className:`h3`,children:e.option.title}),e.option?.description&&(0,k.jsx)(`p`,{className:`mb-0`,dangerouslySetInnerHTML:{__html:e.option.description}}),e.children]})}var j=p.encloseNamespace(`tv.addRequests`);function M(e,t){let o=d(),u=C(),p=f(_.currentUser()),g=f(_.workspace()),y=f(E.program(e)),x=f(E.region(t)),S=f(y.data&&p.data&&E.workspaceVideo(y.data.id,p.data.id,p.data.customerId));async function w(){try{await o(E.createAdFreeRequest({programId:y.data.id,regionCode:x.data.code,userId:p.data.id,customerId:p.data.customerId})),u.success({heading:v.Success,message:j(`requestAdFreeSuccess`,{video:y.data.title}),type:b.Success}),i.trigger({application:m.TV,action:h.Tv.AD_FREE_REQUEST,args:[x.data.code,y.data.id]}),c.logUserAction({id:y.data.id,name:y.data.title},{actionType:r.Submit,entity:s.Video,descriptor:l.AdFreeRequest,location:a.Popup,workflowPhase:n.Complete})}catch(e){let t=e.responseJSON?.message;if(t){let e=JSON.parse(t);u.error(j(e.Type,{video:y.data.title}))}else u.error(j(`error`))}}async function T(){if(S.data.exists&&S.data.hasAdFree){i.trigger({application:m.TV,action:h.Tv.ALREADY_ADDED,params:{alreadyAdded:!0}});return}try{let e={id:y.data.id,userId:p.data.id,customerId:p.data.customerId};await o(E.addAdFreeVideo(e,y.data.id)),u.success({heading:v.Success,message:j(`addAdFreeSuccess`,{video:y.data.title}),type:b.Success}),i.trigger({application:m.TV,action:h.Tv.ALREADY_ADDED,args:[x.data.code,y.data.id]}),c.logUserAction({id:y.data.id,name:y.data.title},{actionType:r.Submit,entity:s.Video,descriptor:l.AddAdFreeVideo,location:a.Popup,workflowPhase:n.Complete})}catch{u.error(j(`error`))}}async function D(){if(S.data.exists){i.trigger({application:m.TV,action:h.Tv.ALREADY_ADDED,params:{alreadyAdded:!0}});return}try{let e={userId:p.data.id,customerId:p.data.customerId,globalId:y.data.globalId,libraryId:g.data.id};await o(E.addFullVideo(e,y.data.id)),u.success({heading:v.Success,message:j(`addFullSuccess`,{video:y.data.title}),type:b.Success}),i.trigger({application:m.TV,action:h.Tv.ALREADY_ADDED,args:[x.data.code,y.data.id]}),c.logUserAction({id:y.data.id,name:y.data.title},{actionType:r.Submit,entity:s.Video,descriptor:l.AddFullVideo,location:a.Popup,workflowPhase:n.Complete})}catch{u.error(j(`error`))}}return{requestAdFreeVideo:w,addAdFreeVideo:T,addFullVideo:D}}var N={circle:`_circle_1yxtg_1`},P=`tv.add`,F=p.encloseNamespace(P),I={id:`ad-free`,title:`adFreeTitle`,description:`adFreeDescription`,imageUrl:g.General.MOUNTAINS_FRAMED},L={id:`request-ad-free`,title:`adFreeTitle`,imageUrl:g.General.MOUNTAINS_FRAMED},R={id:`full-video`,title:`fullVideoTitle`,description:`fullVideoDescription`,imageUrl:g.General.ANNOUNCEMENT_FRAMED};function z(e){let t=f(_.currentUser()),n=f(E.program(e.id)),r=f(t.data&&E.adFreeCredits(t.data.id,t.data.customerId,e.region)),{requestAdFreeVideo:a,addAdFreeVideo:o,addFullVideo:s}=M(e.id,e.region);w(n.statusCode);let[c,l]=D.useState(null),u=!Number.isNaN(e.currentTime);function d(){c&&(c.id===R.id&&s(),c.id===I.id&&o(),c.id===L.id&&a())}function p(){if(!u){e.closePopup();return}i.trigger({application:m.TV,action:h.Tv.PREVIEW,args:[e.region,n.data.id],params:{currentTime:e.currentTime}})}let g=r.data&&r.data.userRequests<r.data.maxAvailableCredit,v=r.data&&r.data.maxAvailableCredit-r.data.userRequests;D.useEffect(()=>{r.hasCompleted&&(g||l(R))},[r,g]);let b=t.hasCompleted&&n.hasCompleted&&r.hasCompleted,C=c?.id===L.id&&T.isHolidayPeriod();return(0,k.jsxs)(S,{size:`lg`,title:F(`title`),showLoadingSpinner:!b,closePopup:e.closePopup,children:[b&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`div`,{className:`d-flex mb-3 mx-n2`,children:[n.data.hasAdsFree&&(0,k.jsxs)(A,{option:{id:I.id},onSelect:l,selected:c?.id===I.id,children:[(0,k.jsx)(`img`,{src:I.imageUrl,className:`img-fluid`,draggable:!1}),(0,k.jsx)(`h2`,{className:`h4 mb-1`,children:(0,k.jsx)(y,{namespace:P,phrase:I.title})}),(0,k.jsx)(`p`,{className:`mb-2`,children:(0,k.jsx)(y,{namespace:P,phrase:I.description})})]}),!n.data.hasAdsFree&&(0,k.jsxs)(A,{option:{id:L.id,disabled:!g},onSelect:l,selected:c?.id===L.id,children:[(0,k.jsx)(`img`,{src:L.imageUrl,className:`img-fluid`,draggable:!1}),(0,k.jsxs)(`div`,{className:`d-flex justify-content-center align-items-center mb-1`,children:[(0,k.jsx)(`h2`,{className:`h4 mb-1`,children:(0,k.jsx)(y,{namespace:P,phrase:L.title})}),(0,k.jsx)(`span`,{className:`badge bg-dark rounded-circle ms-2 ${N.circle}`,children:v})]}),(0,k.jsx)(`p`,{className:`mb-2`,children:(0,k.jsx)(y,{namespace:P,phrase:g?`requestAdFreeDescription`:`noRequestsDescription`})})]}),(0,k.jsxs)(A,{option:{id:R.id},onSelect:l,selected:c?.id===R.id,children:[(0,k.jsx)(`img`,{src:R.imageUrl,className:`img-fluid`,draggable:!1}),(0,k.jsx)(`h2`,{className:`h4 mb-1`,children:(0,k.jsx)(y,{namespace:P,phrase:R.title})}),(0,k.jsx)(`p`,{className:`mb-2`,children:(0,k.jsx)(y,{namespace:P,phrase:R.description})})]})]}),C&&(0,k.jsxs)(`div`,{className:`alert alert-warning`,role:`alert`,children:[(0,k.jsx)(`h3`,{className:`h5`,children:(0,k.jsx)(y,{namespace:P,phrase:`adFreeAlertHeading`})}),(0,k.jsx)(`p`,{className:`m-0`,children:(0,k.jsx)(y,{namespace:P,phrase:`adFreeAlertBody`})})]})]}),(0,k.jsxs)(x,{children:[(0,k.jsx)(x.Cancel,{text:F(u?`back`:`close`),onClick:p,variant:`link`}),(0,k.jsx)(x.Submit,{text:F(`continue`),onClick:d,variant:`dark`,disabled:!c})]})]})}export{z as TvAddView};
|
|
2
|
+
//# sourceMappingURL=DN_CuUia2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"B3tq0EFi2.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/choices-popup/components/choices/choices.module.scss","../../../../libs/shared/src/components/choices-popup/components/choices/Choices.tsx","../../src/apps/tv/hooks/useTvAddRequests.ts","../../src/apps/tv/views/tv-add/tv-add.module.scss","../../src/apps/tv/views/tv-add/TvAddView.tsx"],"sourcesContent":[":local {\n .selected {\n background-color: $light-blue;\n }\n\n .disabled {\n background-color: $gray-100;\n filter: grayscale(1);\n }\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport styles from './choices.module.scss';\n\nexport interface ChoicePopupOption {\n id: string;\n title?: string;\n description?: string;\n imageUrl?: string;\n disabled?: boolean;\n imageClassName?: string;\n}\n\ninterface ChoiceProps {\n option?: ChoicePopupOption;\n selected: boolean | ((selectedChoice: boolean) => boolean);\n onSelect: (option: ChoicePopupOption) => void;\n}\n\nexport function Choice(props: React.PropsWithChildren<ChoiceProps>): React.ReactElement {\n function onSelect(): void {\n if (props.option?.disabled)\n return;\n\n props.onSelect(props.option);\n }\n\n let className = 'text-center cursor-pointer p-3 border rounded-3 mx-2 user-select-none w-50';\n\n if (props.selected)\n className += ` border-info ${styles.selected}`;\n\n if (props.option?.disabled)\n className += ` ${styles.disabled}`;\n\n return (\n <DivButton onClick={onSelect} className={className}>\n {props.option?.imageUrl && <img src={props.option.imageUrl} className={`img-fluid my-3 ${props.option.imageClassName ?? ''}`} draggable={false} />}\n {props.option?.title && <h2 className='h3'>{props.option.title}</h2>}\n {props.option?.description && <p className='mb-0' dangerouslySetInnerHTML={{ __html: props.option.description }}></p>}\n {props.children}\n </DivButton>\n );\n}\n\ninterface ChoicesProps {\n options: [ChoicePopupOption, ChoicePopupOption];\n selection: ChoicePopupOption | null;\n selectOption: (option: ChoicePopupOption) => void;\n}\n\nexport function Choices(props: ChoicesProps): React.ReactElement {\n return (\n <div className='d-flex mb-3 mx-n2'>\n {props.options.map(o => (\n <Choice\n key={o.id}\n option={o}\n selected={props.selection?.id === o.id}\n onSelect={props.selectOption}\n />\n ))}\n </div>\n );\n}\n","import { Core } from 'libs/common/backbone/index';\nimport { AlertType } from 'libs/common/backbone/services/BaseAlertService';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, TvDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, Library } from 'libs/shared/interfaces';\n\nimport { DefaultAlertHeading } from 'shared/constants/DefaultAlertHeading';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvWorkspaceVideoResponse } from 'apps/tv/interfaces/responses/TvWorkspaceVideoResponse';\n\nconst namespace = 'tv.addRequests';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useTvAddRequests(programId: string, regionCode: string) {\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const workspace = Flight.useBasicFetch<Library>(UserRequests.workspace());\n\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(programId));\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(regionCode));\n const workspaceVideo = Flight.useBasicFetch<TvWorkspaceVideoResponse>(\n program.data && currentUser.data &&\n TvRequests.workspaceVideo(\n program.data.id,\n currentUser.data.id,\n currentUser.data.customerId\n )\n );\n \n async function requestAdFreeVideo(): Promise<void> {\n try {\n await fetchAsync(TvRequests.createAdFreeRequest({\n programId: program.data.id,\n regionCode: region.data.code,\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId\n }));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('requestAdFreeSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.AD_FREE_REQUEST,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AdFreeRequest,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch (error) {\n const errorMessage = error.responseJSON?.message;\n if (errorMessage) {\n const parsedErrorMessage = JSON.parse(errorMessage);\n alerts.error(getPhrase(parsedErrorMessage.Type, { video: program.data.title }));\n } else {\n alerts.error(getPhrase('error'));\n }\n }\n }\n\n async function addAdFreeVideo() {\n if (workspaceVideo.data.exists && workspaceVideo.data.hasAdFree) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n params: { alreadyAdded: true }\n });\n return;\n }\n\n try {\n const data = {\n id: program.data.id,\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId\n };\n await fetchAsync(TvRequests.addAdFreeVideo(data, program.data.id));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('addAdFreeSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AddAdFreeVideo,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n async function addFullVideo() {\n if (workspaceVideo.data.exists) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n params: { alreadyAdded: true }\n });\n return;\n }\n\n try {\n const data = {\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId,\n globalId: program.data.globalId,\n libraryId: workspace.data.id\n };\n await fetchAsync(TvRequests.addFullVideo(data, program.data.id));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('addFullSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AddFullVideo,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n return { requestAdFreeVideo, addAdFreeVideo, addFullVideo };\n}\n",":local {\n .circle {\n min-height: map-get($spacers, 3);\n min-width: map-get($spacers, 3);\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Choice, ChoicePopupOption } from 'libs/shared/components/choices-popup/components/choices/Choices';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleDialogError } from 'libs/shared/hooks/UseHandleDialogError';\nimport { CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useTvAddRequests } from 'apps/tv/hooks/useTvAddRequests';\nimport { AdFreeCredits } from 'apps/tv/interfaces/models/AdFreeCredits';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvUtils } from 'apps/tv/utils/TvUtils';\n\nimport styles from './tv-add.module.scss';\n\nconst namespace = 'tv.add';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst AD_FREE = {\n id: 'ad-free',\n title: 'adFreeTitle',\n description: 'adFreeDescription',\n imageUrl: ImageUrls.General.MOUNTAINS_FRAMED\n};\n\nconst REQUEST_AD_FREE = {\n id: 'request-ad-free',\n title: 'adFreeTitle',\n imageUrl: ImageUrls.General.MOUNTAINS_FRAMED\n};\n\nconst FULL_VIDEO = {\n id: 'full-video',\n title: 'fullVideoTitle',\n description: 'fullVideoDescription',\n imageUrl: ImageUrls.General.ANNOUNCEMENT_FRAMED\n};\n\ninterface TvAddViewProps extends PopupViewProps {\n id: string;\n region: string;\n currentTime: number;\n}\n\nexport function TvAddView(props: TvAddViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(props.id));\n const adFreeCredits = Flight.useBasicFetch<AdFreeCredits>(\n currentUser.data &&\n TvRequests.adFreeCredits(\n currentUser.data.id,\n currentUser.data.customerId,\n props.region\n )\n );\n\n const { requestAdFreeVideo, addAdFreeVideo, addFullVideo } = useTvAddRequests(props.id, props.region);\n\n useHandleDialogError(program.statusCode);\n\n const [ selectedChoice, setSelectedChoice ] = React.useState<ChoicePopupOption>(null);\n\n const isFromPreview = !Number.isNaN(props.currentTime);\n\n function onClickContinue(): void {\n if (!selectedChoice)\n return;\n\n if (selectedChoice.id === FULL_VIDEO.id) {\n addFullVideo();\n }\n \n if (selectedChoice.id === AD_FREE.id) {\n addAdFreeVideo();\n }\n\n if (selectedChoice.id === REQUEST_AD_FREE.id) {\n requestAdFreeVideo();\n }\n }\n\n function onClickBack(): void {\n if (!isFromPreview) {\n props.closePopup();\n return;\n }\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ props.region, program.data.id ],\n params: {\n currentTime: props.currentTime\n }\n });\n }\n\n const hasEnoughCredits = adFreeCredits.data &&\n (adFreeCredits.data.userRequests < adFreeCredits.data.maxAvailableCredit);\n const requestsRemaining = adFreeCredits.data &&\n (adFreeCredits.data.maxAvailableCredit - adFreeCredits.data.userRequests);\n\n React.useEffect(() => {\n if (!adFreeCredits.hasCompleted)\n return;\n \n if (hasEnoughCredits)\n return;\n\n setSelectedChoice(FULL_VIDEO);\n }, [ adFreeCredits, hasEnoughCredits ]);\n\n const hasLoaded = (\n currentUser.hasCompleted &&\n program.hasCompleted &&\n adFreeCredits.hasCompleted\n );\n\n const showAdFreeAlert = selectedChoice?.id === REQUEST_AD_FREE.id && TvUtils.isHolidayPeriod();\n\n return (\n <Popup\n size='lg'\n title={getPhrase('title')}\n showLoadingSpinner={!hasLoaded}\n closePopup={props.closePopup}\n >\n {hasLoaded &&\n <>\n <div className='d-flex mb-3 mx-n2'>\n {program.data.hasAdsFree &&\n <Choice\n option={{ id: AD_FREE.id }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === AD_FREE.id}\n >\n <img src={AD_FREE.imageUrl} className='img-fluid' draggable={false} />\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={AD_FREE.title} /></h2>\n <p className='mb-2'><Text namespace={namespace} phrase={AD_FREE.description} /></p>\n </Choice>\n }\n \n {!program.data.hasAdsFree &&\n <Choice\n option={{ id: REQUEST_AD_FREE.id, disabled: !hasEnoughCredits }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === REQUEST_AD_FREE.id}\n >\n <img src={REQUEST_AD_FREE.imageUrl} className='img-fluid' draggable={false} />\n <div className='d-flex justify-content-center align-items-center mb-1'>\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={REQUEST_AD_FREE.title} /></h2>\n <span className={`badge bg-dark rounded-circle ms-2 ${styles.circle}`}>{requestsRemaining}</span>\n </div>\n <p className='mb-2'><Text namespace={namespace} phrase={hasEnoughCredits ? 'requestAdFreeDescription' : 'noRequestsDescription'} /></p>\n </Choice>\n }\n\n <Choice\n option={{ id: FULL_VIDEO.id }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === FULL_VIDEO.id}\n >\n <img src={FULL_VIDEO.imageUrl} className='img-fluid' draggable={false} />\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={FULL_VIDEO.title} /></h2>\n <p className='mb-2'><Text namespace={namespace} phrase={FULL_VIDEO.description} /></p>\n </Choice>\n </div>\n\n {showAdFreeAlert &&\n <div className='alert alert-warning' role='alert'>\n <h3 className='h5'>\n <Text namespace={namespace} phrase='adFreeAlertHeading' />\n </h3>\n <p className='m-0'>\n <Text namespace={namespace} phrase='adFreeAlertBody' />\n </p>\n </div>\n }\n </>\n }\n \n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase(isFromPreview ? 'back' : 'close')}\n onClick={onClickBack}\n variant='link'\n />\n <PopupButtons.Submit\n text={getPhrase('continue')}\n onClick={onClickContinue}\n variant='dark'\n disabled={!selectedChoice}\n />\n </PopupButtons>\n </Popup>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DN_CuUia2.chunk.js","names":[],"sources":["../../../../libs/shared/src/components/choices-popup/components/choices/choices.module.scss","../../../../libs/shared/src/components/choices-popup/components/choices/Choices.tsx","../../src/apps/tv/hooks/useTvAddRequests.ts","../../src/apps/tv/views/tv-add/tv-add.module.scss","../../src/apps/tv/views/tv-add/TvAddView.tsx"],"sourcesContent":[":local {\n .selected {\n background-color: $light-blue;\n }\n\n .disabled {\n background-color: $gray-100;\n filter: grayscale(1);\n }\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport styles from './choices.module.scss';\n\nexport interface ChoicePopupOption {\n id: string;\n title?: string;\n description?: string;\n imageUrl?: string;\n disabled?: boolean;\n imageClassName?: string;\n}\n\ninterface ChoiceProps {\n option?: ChoicePopupOption;\n selected: boolean | ((selectedChoice: boolean) => boolean);\n onSelect: (option: ChoicePopupOption) => void;\n}\n\nexport function Choice(props: React.PropsWithChildren<ChoiceProps>): React.ReactElement {\n function onSelect(): void {\n if (props.option?.disabled)\n return;\n\n props.onSelect(props.option);\n }\n\n let className = 'text-center cursor-pointer p-3 border rounded-3 mx-2 user-select-none w-50';\n\n if (props.selected)\n className += ` border-info ${styles.selected}`;\n\n if (props.option?.disabled)\n className += ` ${styles.disabled}`;\n\n return (\n <DivButton onClick={onSelect} className={className}>\n {props.option?.imageUrl && <img src={props.option.imageUrl} className={`img-fluid my-3 ${props.option.imageClassName ?? ''}`} draggable={false} />}\n {props.option?.title && <h2 className='h3'>{props.option.title}</h2>}\n {props.option?.description && <p className='mb-0' dangerouslySetInnerHTML={{ __html: props.option.description }}></p>}\n {props.children}\n </DivButton>\n );\n}\n\ninterface ChoicesProps {\n options: [ChoicePopupOption, ChoicePopupOption];\n selection: ChoicePopupOption | null;\n selectOption: (option: ChoicePopupOption) => void;\n}\n\nexport function Choices(props: ChoicesProps): React.ReactElement {\n return (\n <div className='d-flex mb-3 mx-n2'>\n {props.options.map(o => (\n <Choice\n key={o.id}\n option={o}\n selected={props.selection?.id === o.id}\n onSelect={props.selectOption}\n />\n ))}\n </div>\n );\n}\n","import { Core } from 'libs/common/backbone/index';\nimport { AlertType } from 'libs/common/backbone/services/BaseAlertService';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, TvDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, Library } from 'libs/shared/interfaces';\n\nimport { DefaultAlertHeading } from 'shared/constants/DefaultAlertHeading';\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvRegion } from 'apps/tv/interfaces/models/TvRegion';\nimport { TvWorkspaceVideoResponse } from 'apps/tv/interfaces/responses/TvWorkspaceVideoResponse';\n\nconst namespace = 'tv.addRequests';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useTvAddRequests(programId: string, regionCode: string) {\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const workspace = Flight.useBasicFetch<Library>(UserRequests.workspace());\n\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(programId));\n const region = Flight.useBasicFetch<TvRegion>(TvRequests.region(regionCode));\n const workspaceVideo = Flight.useBasicFetch<TvWorkspaceVideoResponse>(\n program.data && currentUser.data &&\n TvRequests.workspaceVideo(\n program.data.id,\n currentUser.data.id,\n currentUser.data.customerId\n )\n );\n \n async function requestAdFreeVideo(): Promise<void> {\n try {\n await fetchAsync(TvRequests.createAdFreeRequest({\n programId: program.data.id,\n regionCode: region.data.code,\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId\n }));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('requestAdFreeSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.AD_FREE_REQUEST,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AdFreeRequest,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch (error) {\n const errorMessage = error.responseJSON?.message;\n if (errorMessage) {\n const parsedErrorMessage = JSON.parse(errorMessage);\n alerts.error(getPhrase(parsedErrorMessage.Type, { video: program.data.title }));\n } else {\n alerts.error(getPhrase('error'));\n }\n }\n }\n\n async function addAdFreeVideo() {\n if (workspaceVideo.data.exists && workspaceVideo.data.hasAdFree) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n params: { alreadyAdded: true }\n });\n return;\n }\n\n try {\n const data = {\n id: program.data.id,\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId\n };\n await fetchAsync(TvRequests.addAdFreeVideo(data, program.data.id));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('addAdFreeSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AddAdFreeVideo,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n async function addFullVideo() {\n if (workspaceVideo.data.exists) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n params: { alreadyAdded: true }\n });\n return;\n }\n\n try {\n const data = {\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId,\n globalId: program.data.globalId,\n libraryId: workspace.data.id\n };\n await fetchAsync(TvRequests.addFullVideo(data, program.data.id));\n\n alerts.success({\n heading: DefaultAlertHeading.Success,\n message: getPhrase('addFullSuccess', { video: program.data.title }),\n type: AlertType.Success\n });\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.ALREADY_ADDED,\n args: [ region.data.code, program.data.id ]\n });\n\n AnalyticsHelper.logUserAction(\n { id: program.data.id, name: program.data.title },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Video,\n descriptor: TvDescriptor.AddFullVideo,\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n return { requestAdFreeVideo, addAdFreeVideo, addFullVideo };\n}\n",":local {\n .circle {\n min-height: map-get($spacers, 3);\n min-width: map-get($spacers, 3);\n }\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Choice, ChoicePopupOption } from 'libs/shared/components/choices-popup/components/choices/Choices';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleDialogError } from 'libs/shared/hooks/UseHandleDialogError';\nimport { CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/ExchangeActions';\nimport { AppChannels } from 'shared/constants/ExchangeRadioChannels';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { TvRequests } from 'apps/tv/flight-requests/TvRequests';\nimport { useTvAddRequests } from 'apps/tv/hooks/useTvAddRequests';\nimport { AdFreeCredits } from 'apps/tv/interfaces/models/AdFreeCredits';\nimport { TvProgram } from 'apps/tv/interfaces/models/TvProgram';\nimport { TvUtils } from 'apps/tv/utils/TvUtils';\n\nimport styles from './tv-add.module.scss';\n\nconst namespace = 'tv.add';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst AD_FREE = {\n id: 'ad-free',\n title: 'adFreeTitle',\n description: 'adFreeDescription',\n imageUrl: ImageUrls.General.MOUNTAINS_FRAMED\n};\n\nconst REQUEST_AD_FREE = {\n id: 'request-ad-free',\n title: 'adFreeTitle',\n imageUrl: ImageUrls.General.MOUNTAINS_FRAMED\n};\n\nconst FULL_VIDEO = {\n id: 'full-video',\n title: 'fullVideoTitle',\n description: 'fullVideoDescription',\n imageUrl: ImageUrls.General.ANNOUNCEMENT_FRAMED\n};\n\ninterface TvAddViewProps extends PopupViewProps {\n id: string;\n region: string;\n currentTime: number;\n}\n\nexport function TvAddView(props: TvAddViewProps): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const program = Flight.useBasicFetch<TvProgram>(TvRequests.program(props.id));\n const adFreeCredits = Flight.useBasicFetch<AdFreeCredits>(\n currentUser.data &&\n TvRequests.adFreeCredits(\n currentUser.data.id,\n currentUser.data.customerId,\n props.region\n )\n );\n\n const { requestAdFreeVideo, addAdFreeVideo, addFullVideo } = useTvAddRequests(props.id, props.region);\n\n useHandleDialogError(program.statusCode);\n\n const [ selectedChoice, setSelectedChoice ] = React.useState<ChoicePopupOption>(null);\n\n const isFromPreview = !Number.isNaN(props.currentTime);\n\n function onClickContinue(): void {\n if (!selectedChoice)\n return;\n\n if (selectedChoice.id === FULL_VIDEO.id) {\n addFullVideo();\n }\n \n if (selectedChoice.id === AD_FREE.id) {\n addAdFreeVideo();\n }\n\n if (selectedChoice.id === REQUEST_AD_FREE.id) {\n requestAdFreeVideo();\n }\n }\n\n function onClickBack(): void {\n if (!isFromPreview) {\n props.closePopup();\n return;\n }\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.TV,\n action: Actions.Tv.PREVIEW,\n args: [ props.region, program.data.id ],\n params: {\n currentTime: props.currentTime\n }\n });\n }\n\n const hasEnoughCredits = adFreeCredits.data &&\n (adFreeCredits.data.userRequests < adFreeCredits.data.maxAvailableCredit);\n const requestsRemaining = adFreeCredits.data &&\n (adFreeCredits.data.maxAvailableCredit - adFreeCredits.data.userRequests);\n\n React.useEffect(() => {\n if (!adFreeCredits.hasCompleted)\n return;\n \n if (hasEnoughCredits)\n return;\n\n setSelectedChoice(FULL_VIDEO);\n }, [ adFreeCredits, hasEnoughCredits ]);\n\n const hasLoaded = (\n currentUser.hasCompleted &&\n program.hasCompleted &&\n adFreeCredits.hasCompleted\n );\n\n const showAdFreeAlert = selectedChoice?.id === REQUEST_AD_FREE.id && TvUtils.isHolidayPeriod();\n\n return (\n <Popup\n size='lg'\n title={getPhrase('title')}\n showLoadingSpinner={!hasLoaded}\n closePopup={props.closePopup}\n >\n {hasLoaded &&\n <>\n <div className='d-flex mb-3 mx-n2'>\n {program.data.hasAdsFree &&\n <Choice\n option={{ id: AD_FREE.id }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === AD_FREE.id}\n >\n <img src={AD_FREE.imageUrl} className='img-fluid' draggable={false} />\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={AD_FREE.title} /></h2>\n <p className='mb-2'><Text namespace={namespace} phrase={AD_FREE.description} /></p>\n </Choice>\n }\n \n {!program.data.hasAdsFree &&\n <Choice\n option={{ id: REQUEST_AD_FREE.id, disabled: !hasEnoughCredits }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === REQUEST_AD_FREE.id}\n >\n <img src={REQUEST_AD_FREE.imageUrl} className='img-fluid' draggable={false} />\n <div className='d-flex justify-content-center align-items-center mb-1'>\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={REQUEST_AD_FREE.title} /></h2>\n <span className={`badge bg-dark rounded-circle ms-2 ${styles.circle}`}>{requestsRemaining}</span>\n </div>\n <p className='mb-2'><Text namespace={namespace} phrase={hasEnoughCredits ? 'requestAdFreeDescription' : 'noRequestsDescription'} /></p>\n </Choice>\n }\n\n <Choice\n option={{ id: FULL_VIDEO.id }}\n onSelect={setSelectedChoice}\n selected={selectedChoice?.id === FULL_VIDEO.id}\n >\n <img src={FULL_VIDEO.imageUrl} className='img-fluid' draggable={false} />\n <h2 className='h4 mb-1'><Text namespace={namespace} phrase={FULL_VIDEO.title} /></h2>\n <p className='mb-2'><Text namespace={namespace} phrase={FULL_VIDEO.description} /></p>\n </Choice>\n </div>\n\n {showAdFreeAlert &&\n <div className='alert alert-warning' role='alert'>\n <h3 className='h5'>\n <Text namespace={namespace} phrase='adFreeAlertHeading' />\n </h3>\n <p className='m-0'>\n <Text namespace={namespace} phrase='adFreeAlertBody' />\n </p>\n </div>\n }\n </>\n }\n \n <PopupButtons>\n <PopupButtons.Cancel\n text={getPhrase(isFromPreview ? 'back' : 'close')}\n onClick={onClickBack}\n variant='link'\n />\n <PopupButtons.Submit\n text={getPhrase('continue')}\n onClick={onClickContinue}\n variant='dark'\n disabled={!selectedChoice}\n />\n </PopupButtons>\n </Popup>\n );\n}\n"],"mappings":"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"}
|