UNPKG

@tycoonsystems/tycoon-modules

Version:
1 lines 6.51 kB
function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a,s=arguments[t];for(a in s)Object.prototype.hasOwnProperty.call(s,a)&&(e[a]=s[a])}return e}).apply(this,arguments)}import React from"react";import{useRouter}from"next/router";import apiReq from"@tycoonsystems/tycoon-modules/utility/api/apiReq";import{v4 as uuidv4}from"uuid";import{setAndPlay}from"@tycoonsystems/tycoon-modules/video/player/utility";import{initializePlayer,disposePlayer}from"@tycoonsystems/tycoon-modules/streaming/watch/runtime/initialize";import{checkiOS,debounce,resolveNestedProperty}from"@tycoonsystems/tycoon-modules/util";import Upload from"@tycoonsystems/tycoon-modules/video/upload/class/Upload";import{fetchVideos}from"@tycoonsystems/tycoon-modules/video/upload/tools";import dynamic from"next/dynamic";const UploadVideo=dynamic(()=>import("/layout/upload/UploadVideo"),{ssr:!1,loading:()=>React.createElement("p",null)}),ASSOCIATE_RECORDS=["product","video","article"],ASSOCIATION_METHODS=["authorize","related"],Module=c=>{useRouter();const[e,t]=React.useState(null),[a,s]=React.useState(!1),[n,o]=React.useState(null),[l,i]=React.useState(null),[r,d]=React.useState(null),[u,p]=React.useState(!1),[m,R]=React.useState(!1),[g,y]=React.useState(!1),[f,M]=React.useState(!1),[S,h]=React.useState(null),[v,L]=React.useState(20),[k,N]=React.useState(!1);var[q,F]=React.useState(ASSOCIATE_RECORDS[0]);const[E,H]=React.useState(10);var[j,$]=React.useState(ASSOCIATION_METHODS[0]);const[A,b]=React.useState([]),[B,O]=React.useState(null),[P,_]=React.useState(!1),[W,Y]=React.useState({message:""}),[C,G]=React.useState({action:"page_loaded",trying:"play_video",src:""}),I=React.useRef(),T=React.useRef();var J=React.useRef(),K=React.useRef();React.useEffect(()=>{var e;a||(e=uuidv4(),o(e),s(!0))},[a,n,g]),c._LocalEventEmitter.unsubscribe(n),c._LocalEventEmitter.subscribe(n,e=>{var t;e&&("fetchVideos"===e.dispatch?v<100&&(t=v+20,L(t),D(0,t)):"initializeVideosHandler"===e.dispatch&&X())});const Q=React.useCallback(debounce(e=>{e?.target&&e.target.scrollLeft+e.target.offsetWidth>e.target.scrollWidth-300&&!f&&c._LocalEventEmitter.dispatch(n,{dispatch:"fetchVideos"})},500),[v,f,S]),X=()=>{T?.current&&!k&&(N(!0),T.current.addEventListener("scroll",Q))},D=(React.useEffect(()=>{!c._loggedIn||f||S||(D(0,v),z(ASSOCIATE_RECORDS[0],E))},[c?._loggedIn,f,v]),async(e,t)=>{e=await fetchVideos(c,e,t,M,f,n);e&&h(e)});var Z=React.useCallback(e=>{t(null)});const w=(e,t)=>{var a=t??l;const s=checkiOS()?"hls":"mpd";if(t&&t[s]){const o=c.cdn.static+"/video/"+a[s];I.current?setAndPlay(o,s,I.current):setTimeout(()=>{setAndPlay(o,s,I.current)},5e3)}},U=r=>{let e=r;r instanceof Upload?i(r):(e=new Upload(c._loggedIn.identifier,r),i(e)),e.player||(e.player=I),r?.id&&r.id,d(e.getInstance()),setTimeout(()=>{e?.usePayload&&Object.entries(e.usePayload).map(t=>{var a,s,o=document.querySelector(`[selectelement="${n}-${t[0]}"]`);if(o){let e=resolveNestedProperty(r,t[1].path);"date"===t[1].type&&(t=new Date(Number(e)))&&(a=(t.getMonth()+1).toString(),s=t.getDate().toString(),e=`${t.getFullYear()}-${a.padStart(2,"0")}-`+s.padStart(2,"0")),o.value=e}})},150)},V=(e,t,a="player-"+n,s)=>{var o,r,i;U(e),l?.updatedFields&&!t&&(l.updatedFields={}),n&&(!g||s?(t=w,o=e,a=a,s=s,i=checkiOS()?"hls":"mpd",o&&o[i]&&(i=c.cdn.static+"/video/"+o[i],(r={...C}).src=i,G(r),i={type:"upload"},s&&(i.force=!0),I.current=initializePlayer(c,o,C,a?"player-"+n:null,i,I,[],null,null,y,t))):w(I.current,e))};c._LocalEventEmitter.unsubscribe("uploadUpdate"),c._LocalEventEmitter.subscribe("uploadUpdate",e=>{e?.message&&(-1<["Ready to watch","Began processing video"].indexOf(e.message)&&D(0,v),Y({message:e.message})),(e?.record?.id&&l?.getInstance()?.id&&e.record.id===l.getInstance().id||-1<["Video queued for processing","Began processing video"].indexOf(e.message))&&V(e.record)}),c._LocalEventEmitter.unsubscribe("uploadProgressUpdate"),c._LocalEventEmitter.subscribe("uploadProgressUpdate",e=>{console.log("Upload Progress",e),e?.totalProgress&&(P||_(!0),O(e.totalProgress),.99<=e.totalProgress)&&setTimeout(()=>{_(!1),setTimeout(()=>{O(null)},2500)},5e3)});var ee=React.useCallback(e=>{if(e?.currentTarget?.getAttribute("item")){const t=e.currentTarget.getAttribute("item");if(t){const a=S.find(e=>e.id===t);a&&new Promise((e,t)=>{e(R(!0))}).then(()=>{V(a)})}}}),te=React.useCallback(e=>{R(!1),U(null),l?.updatedFields&&(l.updatedFields={}),p(!1)},[l]);React.useEffect(()=>{!m&&I?.current?.pause&&I.current.pause()},[m,I?.current]);const x=async(e,t)=>{let a;var s=[...S],t=t??l;return e&&("publish"===e?a=await t.setPublish(c,!0):"unpublish"===e?a=await t.setPublish(c,!1):"private"===e?a=await t.setPrivate(c,!0):"unprivate"===e?a=await t.setPrivate(c,!1):"update"===e&&(a=await t.setUpdate(c))),a?.id&&(U(a),-1<(e=s.findIndex(e=>e.id===a.id))&&(s[e]=a),h(s)),{video:a,videos:s}};var ae=React.useCallback(e=>{e=e?.currentTarget?.getAttribute("modif");x(e)},[l]);const z=async(e,t)=>{var a=e+"Req",e=(H(t),"product"===e||"article"===e?"created":"creation"),t=await apiReq("/fetch/fetchhandler",{handlerArgs:[{[a]:[{author:c?._loggedIn.identifier,limit:t,offset:0,sortField:e,sort:"desc"}]}]});"success"===t?.status&&t?.data?.fetchedData&&t.data.fetchedData[0]&&t.data.fetchedData[0][a]&&t.data.fetchedData[0][a][0]&&(e=t.data.fetchedData[0][a][0],b(e))};console.log(c,l,g,C,S,A);var se=0<S?.length?S:Array(20).fill().map(()=>{});return React.createElement("div",null,React.createElement(UploadVideo,_extends({},c,{ASSOCIATE_RECORDS:ASSOCIATE_RECORDS,ASSOCIATION_METHODS:ASSOCIATION_METHODS,handleClearError:Z,setPageError:t,pageError:e,setProcessing:p,processing:u,uploadTranscodeProgress:B,showingTranscodeProgress:P,handlingMeta:m,setHandlingMetaProxy:e=>{R(e),g||setTimeout(()=>{I.current=initializePlayer(c,null,C,"player-"+n,{type:"upload"},I,[],null,null,y,null)},250)},setVideoDocumentProxy:U,fetchBusy:f,useVideos:se,videosContainerRef:T,loadVideo:ee,status:W,componentId:n,initialized:g,setInitialized:y,videoDocumentRasterized:r,clipStartRef:J,clipDescriptionRef:K,currentAssociation:q,currentAssociationMethod:j,associateRecords:A,videoDocument:l,handlePublish:ae,handleStartUpload:te,setVideoDocumentRasterized:d,setCurrentAssociation:F,setCurrentAssociationMethod:$,getAssociateAttributes:z,currentAssociationLimit:E,setAssociateRecords:b,loadRecord:V,handleDisposePlayer:e=>{disposePlayer(e??"player-"+n),y(!1)},publish:x,noAds:!0,isAuthorized:!0})))};export default Module;