@tycoonsystems/tycoon-modules
Version:
www.tv.tycoon.systems/documentation
1 lines • 4.37 kB
JavaScript
import React from"react";import Link from"next/link";import{v4 as uuidv4}from"uuid";import Tooltip from"@mui/material/Tooltip";import AdminStyles from"./Admin.module.scss";import{logout}from"@tycoonsystems/tycoon-modules/utility/onboarding/SignIn";import{fetchPost}from"@tycoonsystems/tycoon-modules/utility/fetch";const moduleName="StreamAdmin",Module=a=>{const[t,n]=React.useState(!1),[,l]=React.useState(null),[e,s]=React.useState(null),[i,r]=React.useState(null),[m,c]=React.useState(0),[o,u]=React.useState(0),d=(a._LocalEventEmitter.unsubscribe(moduleName),a._LocalEventEmitter.subscribe(moduleName,e=>{e&&"loadDefault"===e.dispatch&&d()}),React.useEffect(()=>{var e;t||(e=uuidv4(),l(e),d(),n(!0))},[t]),async()=>{var e={domainKey:a.domainKey,hash:a._loggedIn.hash,identifier:a._loggedIn.identifier,askStreamOffset:50*o,canStreamOffset:50*m},e=await fetchPost(a.apiUrl+"/a/streampage",null,null,e);return!!e&&(e.hasOwnProperty("status")?"disauthenticated"==e.status?(logout(),"disauthenticated"):"failed"!=e.status&&("success"==e.status?(e.askStream&&r(e.askStream),e.canStream&&s(e.canStream),e):void 0):void 0)}),f=React.useCallback(e=>{var t=e.currentTarget.getAttribute("modif"),e=e.currentTarget.getAttribute("userid");t&&e&&S(e,t)}),S=async(e,t)=>{e={domainKey:a.domainKey,hash:a._loggedIn.hash,identifier:a._loggedIn.identifier,useId:e,modif:t,askStreamOffset:50*o,canStreamOffset:50*m},t=await fetchPost(a.apiUrl+"/a/changestreamauth",null,null,e);return!!t&&(t.hasOwnProperty("status")?"disauthenticated"==t.status?(logout(),"disauthenticated"):"failed"!=t.status&&("success"==t.status?(t.askStream&&r(t.askStream),t.canStream&&s(t.canStream),t):void 0):void 0)},h=React.useCallback(e=>{var t=e.currentTarget.getAttribute("scope");t&&(e=e.currentTarget.getAttribute("i"),console.log(e),"askStreamOffset"===t?u(Number(e)):"canStreamOffset"===t&&c(Number(e)),setTimeout(()=>{a._LocalEventEmitter.dispatch(moduleName,{dispatch:"loadDefault"})},250))});var g=[o-2,o-1,o,o+1,o+2],y=[m-2,m-1,m,m+1,m+2];return React.createElement("div",{className:`${a.className} ${moduleName}_Container`},React.createElement("h3",null,"Stream"),React.createElement("div",{className:moduleName+"_InternalContainer"},React.createElement("section",null,React.createElement(Tooltip,{title:"The Users below have asked to Stream on "+(a.siteTitle??"your Platform"),placement:"bottom"},React.createElement("h4",null,"Asking")),React.createElement("div",{className:""+AdminStyles.listContainer,style:{maxHeight:"65vh"}},i?.map?i.map((e,t)=>React.createElement("div",{className:""+AdminStyles.itemContainer,key:t},React.createElement(Link,{href:"/p?u="+(e.username??e.id),className:"menuLinkSelector",style:{position:"relative",alignSelf:"center"}},React.createElement("div",null,e.username??e.id)),React.createElement("button",{modif:"authorize_streamer",userid:""+e.id,onClick:f},"Allow"))):null),React.createElement("ul",{className:"PaginationContainer"},g.map((e,t)=>-1<e?React.createElement("li",{className:e==o?"ActivePage":"",scope:"askStreamOffset",key:t,i:e,onClick:h},e+1):null))),React.createElement("section",null,React.createElement(Tooltip,{title:"The Users below currently have access to Stream on "+(a.siteTitle??"your Platform"),placement:"bottom"},React.createElement("h4",null,"Streamers")),React.createElement("div",{className:""+AdminStyles.listContainer,style:{maxHeight:"65vh"}},e?.map?e.map((e,t)=>React.createElement("div",{className:""+AdminStyles.itemContainer,key:t},React.createElement(Link,{href:"/p?u="+(e.username??e.id),className:"menuLinkSelector",style:{position:"relative",alignSelf:"center"}},React.createElement("div",null,e.username??e.id)),React.createElement("button",{modif:"disable_streamer",userid:""+e.id,onClick:f},"Disable"))):null),React.createElement("ul",{className:"PaginationContainer"},y.map((e,t)=>-1<e?React.createElement("li",{className:e==m?"ActivePage":"",scope:"canStreamOffset",key:t,i:e,onClick:h},e+1):null))),React.createElement("section",null,React.createElement("h4",null,"Platform Stream Status"),React.createElement("div",{className:"gradient_style_bg_3",style:{fontSize:".9rem",fontWeight:700,width:"fit-content",padding:"0.125rem 5rem"}},"LIVE"),React.createElement("div",{style:{fontSize:".75rem",marginTop:".25rem"}},"Contact admin@tycoon.systems for any current Livestreaming Issues"))))};export default Module;