import { CreateLinkEvent, GetModeratorRoomInfoMessageComposer, ModerateRoomMessageComposer, ModeratorActionMessageComposer, ModeratorRoomInfoEvent } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { LocalizeText, SendMessageComposer, TryVisitRoom } from '../../../../api'; import { Button, Column, DraggableWindowPosition, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text } from '../../../../common'; import { useMessageEvent } from '../../../../hooks'; interface ModToolsRoomViewProps { roomId: number; onCloseClick: () => void; } export const ModToolsRoomView: FC = props => { const { roomId = null, onCloseClick = null } = props; const [ infoRequested, setInfoRequested ] = useState(false); const [ loadedRoomId, setLoadedRoomId ] = useState(null); const [ name, setName ] = useState(null); const [ ownerId, setOwnerId ] = useState(null); const [ ownerName, setOwnerName ] = useState(null); const [ ownerInRoom, setOwnerInRoom ] = useState(false); const [ usersInRoom, setUsersInRoom ] = useState(0); const [ kickUsers, setKickUsers ] = useState(false); const [ lockRoom, setLockRoom ] = useState(false); const [ changeRoomName, setChangeRoomName ] = useState(false); const [ message, setMessage ] = useState(''); const handleClick = (action: string, value?: string) => { if(!action) return; switch(action) { case 'alert_only': if(message.trim().length === 0) return; SendMessageComposer(new ModeratorActionMessageComposer(ModeratorActionMessageComposer.ACTION_ALERT, message, '')); SendMessageComposer(new ModerateRoomMessageComposer(roomId, lockRoom ? 1 : 0, changeRoomName ? 1 : 0, kickUsers ? 1 : 0)); return; case 'send_message': if(message.trim().length === 0) return; SendMessageComposer(new ModeratorActionMessageComposer(ModeratorActionMessageComposer.ACTION_MESSAGE, message, '')); SendMessageComposer(new ModerateRoomMessageComposer(roomId, lockRoom ? 1 : 0, changeRoomName ? 1 : 0, kickUsers ? 1 : 0)); return; } }; useMessageEvent(ModeratorRoomInfoEvent, event => { const parser = event.getParser(); if(!parser || parser.data.flatId !== roomId) return; setLoadedRoomId(parser.data.flatId); setName(parser.data.room.name); setOwnerId(parser.data.ownerId); setOwnerName(parser.data.ownerName); setOwnerInRoom(parser.data.ownerInRoom); setUsersInRoom(parser.data.userCount); }); useEffect(() => { if(infoRequested) return; SendMessageComposer(new GetModeratorRoomInfoMessageComposer(roomId)); setInfoRequested(true); }, [ roomId, infoRequested, setInfoRequested ]); return ( onCloseClick() } /> { name &&
{ name }
}
{ LocalizeText('moderation.roomtool.roomowner.title') } CreateLinkEvent(`mod-tools/open-user-info/${ ownerId }`) }>{ ownerName }
{ LocalizeText('moderation.roomtool.usersinroom.title') } { usersInRoom }
{ LocalizeText('moderation.roomtool.ownerinroom.title') } { ownerInRoom ? LocalizeText('moderation.roomtool.true.title') : LocalizeText('moderation.roomtool.false.title') }
setKickUsers(event.target.checked) } /> { LocalizeText('moderation.roomtool.kickall.title') }
setLockRoom(event.target.checked) } /> { LocalizeText('moderation.roomtool.closeroom.title') }
setChangeRoomName(event.target.checked) } /> { LocalizeText('moderation.roomtool.inappropiatename.title') }
); };