UNPKG

@tycoonsystems/tycoon-modules

Version:
1 lines 5.59 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 MessagingStyles from"./Messaging.module.scss";import WatchPageStyles from"@tycoonsystems/tycoon-modules/streaming/watch/WatchPage.module.scss";import menuStyle from"@tycoonsystems/tycoon-modules/menu/Menu.module.scss";import{joinDirectMessage,initializeDirectMessages,logMessageRead}from"@tycoonsystems/tycoon-modules/utility/socket";import dynamic from"next/dynamic";const Messaging=dynamic(()=>import("/layout/messaging/Messaging"),{ssr:!1,loading:()=>React.createElement("p",null)}),Module=r=>{const[e,t]=React.useState(!1),[a,s]=React.useState(!1),[n,o]=React.useState("general"),[i,c]=React.useState({attempt:0}),[l,g]=React.useState(null),[d,m]=React.useState(0),[u,p]=React.useState(null);var[,,]=React.useState(!1),[,,]=React.useState(null);const _=React.useRef();var h=React.useRef();React.useEffect(()=>{e?e&&r._loggedIn?.identifier&&(u||f()):t(!0)},[e,r?._loggedIn?.identifier,i?.attempt,u]),React.useEffect(()=>{let e=[setInterval(()=>{r._LocalEventEmitter.dispatch("messaging_internal",{dispatch:"attempt_initialize"})},5e3)];return()=>{e.forEach(clearInterval)}},[]);const f=()=>{(0==i?.attempt||!i?.time||i?.time<(new Date).getTime()-1e4&&i.attempt<3)&&r?._socket&&(initializeDirectMessages(r._socket,r._loggedIn,r.dborigin,i?.attempt??1),c(Object.assign(i,{time:(new Date).getTime(),attempt:i.attempt+1})))},v=(t,a)=>{if(0===t[1]?.length||t?.[1]?.[a-1]?.author===r._loggedIn.identifier)return!0;for(let e=a-1;e<t[1].length;e++)if(t?.[1]?.[e]&&t[1][e]?.read==r._loggedIn.identifier)return!0;return!1},y=e=>{var a,t;console.log("Set Conversations",e,r?._loggedIn),(a=e)?.log&&r?._loggedIn?.identifier&&(t=structuredClone(a),a.read||(a.read={}),console.log(a),Object.entries(t.log).map(e=>{console.log("M",e[1]);var t=structuredClone(e[1]).reverse().findIndex(e=>Object.prototype.hasOwnProperty.call(e,"content"))??0,t=e[1].length-t,t=v(e,t);a.read[e[0]]=t})),e=a,p(e)},R=e=>{!e&&a&&L(),s(e)},b=e=>{e&&setTimeout(()=>{r._LocalEventEmitter.dispatch("messaging_internal",{dispatch:"log_read"})},250),g(e)};r._LocalEventEmitter.unsubscribe("messaging_internal"),r._LocalEventEmitter.subscribe("messaging_internal",e=>{var t,a;if(e)if("open_directmessage"===e?.dispatch)r?._loggedIn?.identifier&&(R(!0),S("message"),t=[r._loggedIn.identifier,e?.chatWith],a=e?.room??null,joinDirectMessage(r._socket,r._loggedIn,r.dborigin,t,a,1));else if("force_instantiate"===e?.dispatch)e?.room&&(b(null),m(d+1),setTimeout(()=>{b(e.room),m(d+1),setTimeout(()=>{r._LocalEventEmitter.dispatch("receive_chat_direct_message",e.log),r._LocalEventEmitter.dispatch("messaging_internal",{dispatch:"update_conversations",log:e?.log}),r._LocalEventEmitter.dispatch("chat_event_listener",{dispatch:"force_initialize",room:e.room}),setTimeout(()=>{r._LocalEventEmitter.dispatch("messaging_internal",{dispatch:"force_rerender",room:e.room})},250)},250)},250));else if("force_rerender"===e?.dispatch)m(d+1),e?.room&&g(e.room);else if("instantiate_all_direct_messages"===e?.dispatch)e?.payload&&e?.payload?.log&&e?.payload?.records&&y({log:e.payload.log,records:e.payload.records});else if("attempt_initialize"===e?.dispatch)f();else if("update_conversations"===e?.dispatch){console.log("Update conversations",e,u);const s=structuredClone(u);s?.log&&e?.log&&(Object.entries(e.log).map(e=>{s.log[e[0]]=e[1]}),console.log(s),y(s))}else"log_read"===e?.dispatch&&(console.log("Log read",l,u),u?.read?.[l+"-chat-"+r?.dborigin]||logMessageRead(r._socket,r._loggedIn,r.dborigin,l,1,"direct_message"))});var E=e=>{e=e?.userps?.find(e=>e.id!==r?._loggedIn?.identifier);return e?.icon?e:{icon:null}};const S=e=>{o(e)};var M=React.useCallback(e=>{e=e?.currentTarget?.getAttribute("modif");e&&(u?.records[e]?(R(!0),S("message"),r._LocalEventEmitter.dispatch("messaging_internal",{dispatch:"force_instantiate",room:e,log:u?.log[e]})):r._LocalEventEmitter.dispatch("messaging_internal",{dispatch:"open_directmessage",room:e}))});const L=()=>{var e;l&&(logMessageRead(r._socket,r._loggedIn,r.dborigin,l,1,"direct_message"),(e=structuredClone(u))?.read?.[l+"-chat-"+r.dborigin]||(e.read[l+"-chat-"+r.dborigin]=!0,p(e)))};var I=React.useCallback(e=>{L(),setTimeout(()=>{S("general"),b(null)},1)}),O=React.useCallback(e=>{e=e?.currentTarget?.getAttribute("modif");if(e)"open"===e?R(!0):"close"===e&&(R(!1),b(null),S("general"));else{if(a)return R(!1),b(null),S("general");R(!0)}}),C=React.useCallback(e=>{_?.current?.classList?.contains("messageSearchBarActive")||(_.current.classList.add("messageSearchBarActive"),_.current.classList.add(menuStyle.searchBarActive))}),k=React.useCallback(e=>{_?.current?.classList?.contains("searchBarActive")&&(_.current.classList.remove("searchBarActive"),_.current.classList.remove(menuStyle.searchBarActive))}),T=React.useCallback(e=>{console.log(e)}),j=l&&u?.records?.[l+"-chat-"+r?.dborigin]&&a?E(u?.records?.[l+"-chat-"+r?.dborigin]):{};return console.log(l,u),React.createElement(React.Fragment,null,React.createElement(Messaging,_extends({},r,{MessagingStyles:MessagingStyles,WatchPageStyles:WatchPageStyles,messagingOpen:a,toggleOpenMessaging:O,menuStyle:menuStyle,handleOnFocus:C,handleOnBlur:k,onKeyDown:T,searchBarRef:_,searchRef:h,useRoom:l,currentWindow:n,goback:I,messageType:"direct_message",chatState:!0,allConversations:u,resolveOtherUser:E,handleSetCurrentChat:M,currentOtherUser:j})))};export default Module;