From d397a2944e3542cf5490750e295731bd5073bf11 Mon Sep 17 00:00:00 2001 From: Bill Date: Tue, 19 Jul 2022 12:08:39 -0400 Subject: [PATCH] Fix chat style code --- .../room/widgets/chat-input/ChatInputView.tsx | 22 ++--------- .../user-settings/UserSettingsView.tsx | 38 +++++++++---------- src/hooks/session/useSessionInfo.ts | 20 +++++++++- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/components/room/widgets/chat-input/ChatInputView.tsx b/src/components/room/widgets/chat-input/ChatInputView.tsx index c357ce3a..dcfb514e 100644 --- a/src/components/room/widgets/chat-input/ChatInputView.tsx +++ b/src/components/room/widgets/chat-input/ChatInputView.tsx @@ -3,14 +3,13 @@ import { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { createPortal } from 'react-dom'; import { ChatMessageTypeEnum, GetClubMemberLevel, GetConfiguration, GetRoomSession, GetSessionDataManager, LocalizeText, RoomWidgetUpdateChatInputContentEvent } from '../../../../api'; import { Text } from '../../../../common'; -import { useChatInputWidget, useUiEvent } from '../../../../hooks'; +import { useChatInputWidget, useSessionInfo, useUiEvent } from '../../../../hooks'; import { ChatInputStyleSelectorView } from './ChatInputStyleSelectorView'; export const ChatInputView: FC<{}> = props => { const [ chatValue, setChatValue ] = useState(''); - const [ chatStyleId, setChatStyleId ] = useState(GetSessionDataManager().chatStyle); - const [ needsChatStyleUpdate, setNeedsChatStyleUpdate ] = useState(false); + const { chatStyleId = 0, updateChatStyleId = null } = useSessionInfo(); const { selectedUsername = '', floodBlocked = false, floodBlockedSeconds = 0, setIsTyping = null, setIsIdle = null, sendChat = null } = useChatInputWidget(); const inputRef = useRef(); @@ -90,19 +89,12 @@ export const ChatInputView: FC<{}> = props => if(text.length <= maxChatLength) { - if(needsChatStyleUpdate) - { - GetSessionDataManager().sendChatStyleUpdate(chatStyleId); - - setNeedsChatStyleUpdate(false); - } - setChatValue(''); sendChat(text, chatType, recipientName, chatStyleId); } setChatValue(append); - }, [ chatModeIdWhisper, chatModeIdShout, chatModeIdSpeak, maxChatLength, chatStyleId, needsChatStyleUpdate, setIsTyping, setIsIdle, sendChat ]); + }, [ chatModeIdWhisper, chatModeIdShout, chatModeIdSpeak, maxChatLength, chatStyleId, setIsTyping, setIsIdle, sendChat ]); const updateChatInput = useCallback((value: string) => { @@ -165,12 +157,6 @@ export const ChatInputView: FC<{}> = props => } }); - const selectChatStyleId = useCallback((styleId: number) => - { - setChatStyleId(styleId); - setNeedsChatStyleUpdate(true); - }, []); - const chatStyleIds = useMemo(() => { let styleIds: number[] = []; @@ -248,7 +234,7 @@ export const ChatInputView: FC<{}> = props => { floodBlocked && { LocalizeText('chat.input.alert.flood', [ 'time' ], [ floodBlockedSeconds.toString() ]) } } - + , document.getElementById('toolbar-chat-input-container')) ); } diff --git a/src/components/user-settings/UserSettingsView.tsx b/src/components/user-settings/UserSettingsView.tsx index 7c2b742f..d8f4efa2 100644 --- a/src/components/user-settings/UserSettingsView.tsx +++ b/src/components/user-settings/UserSettingsView.tsx @@ -12,26 +12,6 @@ export const UserSettingsView: FC<{}> = props => const [ catalogPlaceMultipleObjects, setCatalogPlaceMultipleObjects ] = useCatalogPlaceMultipleItems(); const [ catalogSkipPurchaseConfirmation, setCatalogSkipPurchaseConfirmation ] = useCatalogSkipPurchaseConfirmation(); - const onUserSettingsEvent = useCallback((event: UserSettingsEvent) => - { - const parser = event.getParser(); - const settingsEvent = new NitroSettingsEvent(); - - settingsEvent.volumeSystem = parser.volumeSystem; - settingsEvent.volumeFurni = parser.volumeFurni; - settingsEvent.volumeTrax = parser.volumeTrax; - settingsEvent.oldChat = parser.oldChat; - settingsEvent.roomInvites = parser.roomInvites; - settingsEvent.cameraFollow = parser.cameraFollow; - settingsEvent.flags = parser.flags; - settingsEvent.chatType = parser.chatType; - - setUserSettings(settingsEvent); - DispatchMainEvent(settingsEvent); - }, []); - - useMessageEvent(UserSettingsEvent, onUserSettingsEvent); - const processAction = useCallback((type: string, value?: boolean | number | string) => { let doUpdate = true; @@ -88,6 +68,24 @@ export const UserSettingsView: FC<{}> = props => } }, [ userSettings ]); + useMessageEvent(UserSettingsEvent, event => + { + const parser = event.getParser(); + const settingsEvent = new NitroSettingsEvent(); + + settingsEvent.volumeSystem = parser.volumeSystem; + settingsEvent.volumeFurni = parser.volumeFurni; + settingsEvent.volumeTrax = parser.volumeTrax; + settingsEvent.oldChat = parser.oldChat; + settingsEvent.roomInvites = parser.roomInvites; + settingsEvent.cameraFollow = parser.cameraFollow; + settingsEvent.flags = parser.flags; + settingsEvent.chatType = parser.chatType; + + setUserSettings(settingsEvent); + DispatchMainEvent(settingsEvent); + }); + useEffect(() => { const linkTracker: ILinkEventTracker = { diff --git a/src/hooks/session/useSessionInfo.ts b/src/hooks/session/useSessionInfo.ts index d384d2e6..faff5dca 100644 --- a/src/hooks/session/useSessionInfo.ts +++ b/src/hooks/session/useSessionInfo.ts @@ -1,12 +1,21 @@ -import { FigureUpdateEvent, UserInfoDataParser, UserInfoEvent } from '@nitrots/nitro-renderer'; +import { FigureUpdateEvent, RoomUnitChatStyleComposer, UserInfoDataParser, UserInfoEvent, UserSettingsEvent } from '@nitrots/nitro-renderer'; import { useState } from 'react'; import { useBetween } from 'use-between'; +import { SendMessageComposer } from '../../api'; import { useMessageEvent } from '../events'; const useSessionInfoState = () => { const [ userInfo, setUserInfo ] = useState(null); const [ userFigure, setUserFigure ] = useState(null); + const [ chatStyleId, setChatStyleId ] = useState(0); + + const updateChatStyleId = (styleId: number) => + { + setChatStyleId(styleId); + + SendMessageComposer(new RoomUnitChatStyleComposer(styleId)); + } useMessageEvent(UserInfoEvent, event => { @@ -23,7 +32,14 @@ const useSessionInfoState = () => setUserFigure(parser.figure); }); - return { userInfo, userFigure }; + useMessageEvent(UserSettingsEvent, event => + { + const parser = event.getParser(); + + setChatStyleId(parser.chatType); + }); + + return { userInfo, userFigure, chatStyleId, updateChatStyleId }; } export const useSessionInfo = () => useBetween(useSessionInfoState);