diff --git a/public/configuration/UITexts.example b/public/configuration/UITexts.example index 63077be..62248b3 100644 --- a/public/configuration/UITexts.example +++ b/public/configuration/UITexts.example @@ -124,6 +124,12 @@ "modtools.window.user.clear": "Clear selection", "modtools.window.tickets.open": "%count% open ticket", "modtools.window.tickets.open.many": "%count% open tickets", + "modtools.window.section.context": "Context", + "modtools.window.section.room": "Room", + "modtools.window.section.user": "User", + "modtools.window.section.reports": "Reports", + "modtools.window.context.room": "Room #%roomId%", + "modtools.window.user.open_info": "Open Info", "modtools.userinfo.refresh": "Refresh user info", "modtools.userinfo.presence.in_room": "In room", "modtools.userinfo.presence.in_room.title": "In the room you are observing", diff --git a/src/components/mod-tools/ModToolsView.tsx b/src/components/mod-tools/ModToolsView.tsx index ac9bd82..ffb2164 100644 --- a/src/components/mod-tools/ModToolsView.tsx +++ b/src/components/mod-tools/ModToolsView.tsx @@ -1,6 +1,6 @@ import { AddLinkEventTracker, CreateLinkEvent, ILinkEventTracker, RemoveLinkEventTracker, RoomEngineEvent, RoomId, RoomObjectCategory, RoomObjectType } from '@nitrots/nitro-renderer'; import { FC, useEffect, useMemo, useRef, useState } from 'react'; -import { FaTimes } from 'react-icons/fa'; +import { FaDoorClosed, FaDoorOpen, FaTimes, FaUserSlash } from 'react-icons/fa'; import { GetRoomSession, ISelectedUser, LocalizeText } from '../../api'; import { Button, DraggableWindowPosition, NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../common'; import { useModTools, useNitroEvent, useObjectSelectedEvent, useRoomUserListSnapshot } from '../../hooks'; @@ -134,63 +134,96 @@ export const ModToolsView: FC<{}> = props => return () => RemoveLinkEventTracker(linkTracker); }, [ openRoomInfo, closeRoomInfo, toggleRoomInfo, openRoomChatlog, closeRoomChatlog, toggleRoomChatlog, openUserInfo, closeUserInfo, toggleUserInfo, openUserChatlog, closeUserChatlog, toggleUserChatlog ]); - const isRoomInfoOpen = currentRoomId > 0 && openRooms.includes(currentRoomId); - const isRoomChatlogOpen = currentRoomId > 0 && openRoomChatlogs.includes(currentRoomId); + const isInRoom = currentRoomId > 0; + const isRoomInfoOpen = isInRoom && openRooms.includes(currentRoomId); + const isRoomChatlogOpen = isInRoom && openRoomChatlogs.includes(currentRoomId); const isUserInfoOpen = selectedUser && openUserInfos.includes(selectedUser.userId); - const noRoomHint = LocalizeText('mod.tools.no.room') || 'Enter a room first'; + const noRoomHint = LocalizeText('modtools.window.no.room'); return ( <> { isVisible && - + setIsVisible(false) } /> - - - + + + + {/* Selected user */} +
+
{ LocalizeText('modtools.window.section.user') }
{ selectedUser ? ( - <> - { selectedUser.username } - - - { - event.stopPropagation(); - setSelectedUser(null); - } } - role="button" - tabIndex={ 0 } - title={ LocalizeText('modtools.window.user.clear') }> - - - +
+
+ + { selectedUser.username } + +
+ +
+ ) + : ( +
+ + { LocalizeText('modtools.window.select.user') } +
) - : { LocalizeText('modtools.window.select.user') } } - - +
+ + {/* Reports */} +
+
{ LocalizeText('modtools.window.section.reports') }
+ +
} { (openRooms.length > 0) && openRooms.map(roomId => CreateLinkEvent(`mod-tools/close-room-info/${ roomId }`) } />) }