From 301cf3aa5a3dcac31d8efa1fa808636f10e87d9f Mon Sep 17 00:00:00 2001 From: dank074 Date: Wed, 20 Oct 2021 22:45:21 -0500 Subject: [PATCH] moved stuff to message handler --- .../mod-tools/ModToolsMessageHandler.tsx | 109 +++++++++++++++++- src/views/mod-tools/ModToolsView.tsx | 101 +--------------- 2 files changed, 110 insertions(+), 100 deletions(-) diff --git a/src/views/mod-tools/ModToolsMessageHandler.tsx b/src/views/mod-tools/ModToolsMessageHandler.tsx index b9bae911..9b3fa5a4 100644 --- a/src/views/mod-tools/ModToolsMessageHandler.tsx +++ b/src/views/mod-tools/ModToolsMessageHandler.tsx @@ -1,13 +1,18 @@ -import { IssueInfoMessageEvent, ModeratorInitMessageEvent } from '@nitrots/nitro-renderer'; +import { IssueInfoMessageEvent, ModeratorInitMessageEvent, RoomEngineEvent } from '@nitrots/nitro-renderer'; import { FC, useCallback } from 'react'; -import { CreateMessageHook } from '../../hooks'; +import { ModToolsEvent } from '../../events/mod-tools/ModToolsEvent'; +import { ModToolsOpenRoomChatlogEvent } from '../../events/mod-tools/ModToolsOpenRoomChatlogEvent'; +import { ModToolsOpenRoomInfoEvent } from '../../events/mod-tools/ModToolsOpenRoomInfoEvent'; +import { ModToolsOpenUserChatlogEvent } from '../../events/mod-tools/ModToolsOpenUserChatlogEvent'; +import { ModToolsOpenUserInfoEvent } from '../../events/mod-tools/ModToolsOpenUserInfoEvent'; +import { CreateMessageHook, useRoomEngineEvent, useUiEvent } from '../../hooks'; import { useModToolsContext } from './context/ModToolsContext'; import { ModToolsActions } from './reducers/ModToolsReducer'; export const ModToolsMessageHandler: FC<{}> = props => { const { modToolsState = null, dispatchModToolsState = null } = useModToolsContext(); - const { tickets= null } = modToolsState; + const { openRooms = null, openRoomChatlogs = null, openUserChatlogs = null, openUserInfo = null, tickets= null } = modToolsState; const onModeratorInitMessageEvent = useCallback((event: ModeratorInitMessageEvent) => { @@ -63,5 +68,103 @@ export const ModToolsMessageHandler: FC<{}> = props => CreateMessageHook(ModeratorInitMessageEvent, onModeratorInitMessageEvent); CreateMessageHook(IssueInfoMessageEvent, onIssueInfoMessageEvent); + const onRoomEngineEvent = useCallback((event: RoomEngineEvent) => + { + switch(event.type) + { + case RoomEngineEvent.INITIALIZED: + dispatchModToolsState({ + type: ModToolsActions.SET_CURRENT_ROOM_ID, + payload: { + currentRoomId: event.roomId + } + }); + return; + case RoomEngineEvent.DISPOSED: + dispatchModToolsState({ + type: ModToolsActions.SET_CURRENT_ROOM_ID, + payload: { + currentRoomId: null + } + }); + return; + } + }, [ dispatchModToolsState ]); + + useRoomEngineEvent(RoomEngineEvent.INITIALIZED, onRoomEngineEvent); + useRoomEngineEvent(RoomEngineEvent.DISPOSED, onRoomEngineEvent); + + const onModToolsEvent = useCallback((event: ModToolsEvent) => + { + switch(event.type) + { + case ModToolsEvent.OPEN_ROOM_INFO: { + const castedEvent = (event as ModToolsOpenRoomInfoEvent); + + if(openRooms && openRooms.includes(castedEvent.roomId)) return; + + const rooms = openRooms || []; + + dispatchModToolsState({ + type: ModToolsActions.SET_OPEN_ROOMS, + payload: { + openRooms: [...rooms, castedEvent.roomId] + } + }); + return; + } + case ModToolsEvent.OPEN_ROOM_CHATLOG: { + const castedEvent = (event as ModToolsOpenRoomChatlogEvent); + + if(openRoomChatlogs && openRoomChatlogs.includes(castedEvent.roomId)) return; + + const chatlogs = openRoomChatlogs || []; + + dispatchModToolsState({ + type: ModToolsActions.SET_OPEN_ROOM_CHATLOGS, + payload: { + openRoomChatlogs: [...chatlogs, castedEvent.roomId] + } + }); + return; + } + case ModToolsEvent.OPEN_USER_INFO: { + const castedEvent = (event as ModToolsOpenUserInfoEvent); + + if(openUserInfo && openUserInfo.includes(castedEvent.userId)) return; + + const userInfo = openUserInfo || []; + + dispatchModToolsState({ + type: ModToolsActions.SET_OPEN_USERINFO, + payload: { + openUserInfo: [...userInfo, castedEvent.userId] + } + }); + return; + } + case ModToolsEvent.OPEN_USER_CHATLOG: { + const castedEvent = (event as ModToolsOpenUserChatlogEvent); + + if(openUserChatlogs && openUserChatlogs.includes(castedEvent.userId)) return; + + const userChatlog = openUserChatlogs || []; + + dispatchModToolsState({ + type: ModToolsActions.SET_OPEN_USER_CHATLOGS, + payload: { + openUserChatlogs: [...userChatlog, castedEvent.userId] + } + }); + return; + } + } + }, [openRooms, dispatchModToolsState, openRoomChatlogs, openUserInfo, openUserChatlogs]); + + useUiEvent(ModToolsEvent.OPEN_ROOM_INFO, onModToolsEvent); + useUiEvent(ModToolsEvent.OPEN_ROOM_CHATLOG, onModToolsEvent); + useUiEvent(ModToolsEvent.OPEN_USER_INFO, onModToolsEvent); + useUiEvent(ModToolsEvent.OPEN_USER_CHATLOG, onModToolsEvent); + return null; } diff --git a/src/views/mod-tools/ModToolsView.tsx b/src/views/mod-tools/ModToolsView.tsx index 5f3ba8d5..902ec5b9 100644 --- a/src/views/mod-tools/ModToolsView.tsx +++ b/src/views/mod-tools/ModToolsView.tsx @@ -1,10 +1,9 @@ -import { RoomEngineEvent, RoomEngineObjectEvent, RoomObjectCategory } from '@nitrots/nitro-renderer'; +import { RoomEngineObjectEvent, RoomObjectCategory } from '@nitrots/nitro-renderer'; import { FC, useCallback, useReducer, useState } from 'react'; import { GetRoomSession } from '../../api'; import { ModToolsEvent } from '../../events/mod-tools/ModToolsEvent'; import { ModToolsOpenRoomChatlogEvent } from '../../events/mod-tools/ModToolsOpenRoomChatlogEvent'; import { ModToolsOpenRoomInfoEvent } from '../../events/mod-tools/ModToolsOpenRoomInfoEvent'; -import { ModToolsOpenUserChatlogEvent } from '../../events/mod-tools/ModToolsOpenUserChatlogEvent'; import { ModToolsOpenUserInfoEvent } from '../../events/mod-tools/ModToolsOpenUserInfoEvent'; import { useRoomEngineEvent } from '../../hooks/events'; import { dispatchUiEvent, useUiEvent } from '../../hooks/events/ui/ui-event'; @@ -24,7 +23,7 @@ export const ModToolsView: FC = props => { const [ isVisible, setIsVisible ] = useState(false); const [ modToolsState, dispatchModToolsState ] = useReducer(ModToolsReducer, initialModTools); - const { currentRoomId = null, openRooms = null, openRoomChatlogs = null, openUserChatlogs = null, openUserInfo = null, tickets = null } = modToolsState; + const { currentRoomId = null, openRooms = null, openRoomChatlogs = null, openUserChatlogs = null, openUserInfo = null } = modToolsState; const [ selectedUser, setSelectedUser] = useState(null); const [ isTicketsVisible, setIsTicketsVisible ] = useState(false); @@ -41,103 +40,13 @@ export const ModToolsView: FC = props => case ModToolsEvent.TOGGLE_MOD_TOOLS: setIsVisible(value => !value); return; - case ModToolsEvent.OPEN_ROOM_INFO: { - const castedEvent = (event as ModToolsOpenRoomInfoEvent); - - if(openRooms && openRooms.includes(castedEvent.roomId)) return; - - const rooms = openRooms || []; - - dispatchModToolsState({ - type: ModToolsActions.SET_OPEN_ROOMS, - payload: { - openRooms: [...rooms, castedEvent.roomId] - } - }); - return; - } - case ModToolsEvent.OPEN_ROOM_CHATLOG: { - const castedEvent = (event as ModToolsOpenRoomChatlogEvent); - - if(openRoomChatlogs && openRoomChatlogs.includes(castedEvent.roomId)) return; - - const chatlogs = openRoomChatlogs || []; - - dispatchModToolsState({ - type: ModToolsActions.SET_OPEN_ROOM_CHATLOGS, - payload: { - openRoomChatlogs: [...chatlogs, castedEvent.roomId] - } - }); - return; - } - case ModToolsEvent.OPEN_USER_INFO: { - const castedEvent = (event as ModToolsOpenUserInfoEvent); - - if(openUserInfo && openUserInfo.includes(castedEvent.userId)) return; - - const userInfo = openUserInfo || []; - - dispatchModToolsState({ - type: ModToolsActions.SET_OPEN_USERINFO, - payload: { - openUserInfo: [...userInfo, castedEvent.userId] - } - }); - return; - } - case ModToolsEvent.OPEN_USER_CHATLOG: { - const castedEvent = (event as ModToolsOpenUserChatlogEvent); - - if(openUserChatlogs && openUserChatlogs.includes(castedEvent.userId)) return; - - const userChatlog = openUserChatlogs || []; - - dispatchModToolsState({ - type: ModToolsActions.SET_OPEN_USER_CHATLOGS, - payload: { - openUserChatlogs: [...userChatlog, castedEvent.userId] - } - }); - return; - } } - }, [openRooms, openRoomChatlogs, openUserInfo, openUserChatlogs]); + }, []); useUiEvent(ModToolsEvent.SHOW_MOD_TOOLS, onModToolsEvent); useUiEvent(ModToolsEvent.HIDE_MOD_TOOLS, onModToolsEvent); useUiEvent(ModToolsEvent.TOGGLE_MOD_TOOLS, onModToolsEvent); - useUiEvent(ModToolsEvent.OPEN_ROOM_INFO, onModToolsEvent); - useUiEvent(ModToolsEvent.OPEN_ROOM_CHATLOG, onModToolsEvent); - useUiEvent(ModToolsEvent.OPEN_USER_INFO, onModToolsEvent); - useUiEvent(ModToolsEvent.OPEN_USER_CHATLOG, onModToolsEvent); - - const onRoomEngineEvent = useCallback((event: RoomEngineEvent) => - { - switch(event.type) - { - case RoomEngineEvent.INITIALIZED: - dispatchModToolsState({ - type: ModToolsActions.SET_CURRENT_ROOM_ID, - payload: { - currentRoomId: event.roomId - } - }); - return; - case RoomEngineEvent.DISPOSED: - dispatchModToolsState({ - type: ModToolsActions.SET_CURRENT_ROOM_ID, - payload: { - currentRoomId: null - } - }); - return; - } - }, [ dispatchModToolsState ]); - - useRoomEngineEvent(RoomEngineEvent.INITIALIZED, onRoomEngineEvent); - useRoomEngineEvent(RoomEngineEvent.DISPOSED, onRoomEngineEvent); - + const onRoomEngineObjectEvent = useCallback((event: RoomEngineObjectEvent) => { if(event.category !== RoomObjectCategory.UNIT) return; @@ -276,8 +185,6 @@ export const ModToolsView: FC = props => } }, [openRooms, currentRoomId, openRoomChatlogs, selectedUser, openUserInfo, openUserChatlogs]); - if(!isVisible) return null; - return (