import React, { useContext, useEffect, useRef, useState } from 'react'; import { Switch, Redirect, Route } from 'react-router-dom'; import PrivateRoute from '../../helpers/privateRoute'; import NavbarTop from '../navbar/JKNavbarTop'; import NavbarVertical from '../navbar/JKNavbarVertical'; import Footer from '../footer/JKFooter'; import { toast } from 'react-toastify'; import AppContext from '../../context/Context'; import { getPageName } from '../../helpers/utils'; import useScript from '../../hooks/useScript'; import { useDispatch, useSelector } from 'react-redux'; import { addMessage } from '../../store/features/textMessagesSlice'; import { add as addNotification } from '../../store/features/notificationSlice'; import { useLobbyChat } from '../sessions/JKLobbyChatContext'; import { useAuth } from '../../context/UserAuth'; import { truncate } from '../../helpers/utils'; //import HomePage from '../page/JKHomePage'; import JKPeopleFilter from '../page/JKPeopleFilter'; import JKMyFriends from '../page/JKMyFriends'; import JKNotifications from '../page/JKNotifications'; import JKMessageModal from '../profile/JKMessageModal'; import JKAppLaunch from '../page/JKAppLaunch'; import JKMusicSessions from '../page/JKMusicSessions'; import JKNewMusicSession from '../page/JKNewMusicSession'; import JKMusicSessionsLobby from '../page/JKMusicSessionsLobby'; import JKMusicSessionsHistory from '../page/JKMusicSessionsHistory'; import JKEditProfile from '../page/JKEditProfile'; import JKEditAccount from '../page/JKEditAccount'; import JKAccountSubscription from '../page/JKAccountSubscription'; import JKPaymentHistory from '../page/JKPaymentHistory'; import JKPaymentMethod from '../page/JKPaymentMethod'; import JKAccountPreferences from '../page/JKAccountPreferences'; import JKAffiliateProgram from '../affiliate/JKAffiliateProgram'; import JKAffiliatePayee from '../affiliate/JKAffiliatePayee'; import JKAffiliateLinks from '../affiliate/JKAffiliateLinks'; import JKAffiliateSignups from '../affiliate/JKAffiliateSignups'; import JKAffiliateEarnings from '../affiliate/JKAffiliateEarnings'; import JKAffiliateAgreement from '../affiliate/JKAffiliateAgreement'; import JKJamTracksFilter from '../jamtracks/JKJamTracksFilter'; import JKShoppingCart from '../shopping-cart/JKShoppingCart'; import JKCheckout from '../shopping-cart/JKCheckout'; import JKCheckoutSuccess from '../shopping-cart/JKCheckoutSuccess'; import JKMyJamTracks from '../jamtracks/JKMyJamTracks'; import JKJamTrackShow from '../jamtracks/JKJamTrackShow'; import JKPayPalConfirmation from '../shopping-cart/JKPayPalConfirmation'; import JKUnsubscribe from '../public/JKUnsubscribe'; import JKConfirmEmailChange from '../public/JKConfirmEmailChange'; //import loadable from '@loadable/component'; //const DashboardRoutes = loadable(() => import('../../layouts/JKDashboardRoutes')); //const PublicRoutes = loadable(() => import('../../layouts/JKPublicRoutes')) const Msg = ({ closeToast, toastProps, title }) => (
); function JKDashboardMain() { const { isFluid, isVertical, navbarStyle } = useContext(AppContext); const isKanban = getPageName('kanban'); const { isAuthenticated, currentUser, setCurrentUser, logout } = useAuth(); const scriptLoaded = useRef(false); const [showMessageModal, setShowMessageModal] = useState(false); const [messageUser, setMessageUser] = useState(null); const { setMessages: setChatMessages, lobbyChatOffset, setLobbyChatOffset, fetchLobbyMessages, lobbyChatLimit, goToBottom } = useLobbyChat(); // useEffect(() => { // DashboardRoutes.preload(); // PublicRoutes.preload(); // }, []); const [visibilityState, setVisibilityState] = useState('visible'); useEffect(() => { setVisibilityState(document.visibilityState); // if(currentUser){ // postInteraction(document.visibilityState); // } }, [document.visibilityState]); const dispatch = useDispatch(); // const postInteraction = visibilityState => { // const options = { // client: INTERACTION_CLIENT, // screen: INTERACTION_SCREEN, // user_id: currentUser.id, // }; // if (visibilityState === 'visible') { // options.action = INTERACTION_PAGE_ENTER; // } else { // options.action = INTERACTION_PAGE_EXIT; // } // postUserAppInteraction(options) // .then(response => { // console.log('User app interactions updated', response); // }) // .catch(error => { // console.log('Error updating user app interactions', error); // }); // }; const initJKScripts = () => { if (scriptLoaded.current) { return; } const app = window.JK.JamKazam(); const jamServer = new window.JK.JamServer(app, function (event_type) { console.log('EVENT_TYPE', event_type); }); jamServer.initialize(); window.JK.initJamClient(app); const clientInit = new window.JK.ClientInit(); clientInit.init(); app.initialize(); window.JK.JamServer.connect() // singleton here defined in JamServer.js .done(function () { console.log('Jamserver connected...'); //_initAfterConnect(true); }) .fail(function () { console.log('Jamserver connection error...'); //_initAfterConnect(false); }); registerTextMessageCallback(); registerFriendRequest(); registerFriendRequestAccepted(); registerChatMessageCallback(); registerSubscriptionCallback(); scriptLoaded.current = true; }; const registerTextMessageCallback = () => { window.JK.JamServer.registerMessageCallback(window.JK.MessageType.TEXT_MESSAGE, function (header, payload) { console.log('registerTextMessageCallback payload', payload); //console.log('registerTextMessageCallback header', header); const msg = { id: payload.text_message_id, message: payload.msg, senderId: payload.sender_id, senderName: payload.sender_name, receiverId: window.currentUser.id, receiverName: window.currentUser.first_name, createdAt: payload.created_at, sent: true }; dispatch(addMessage(msg)); //toast(