import { BannedUserData, BannedUsersFromRoomEvent, RoomBannedUsersComposer, RoomModerationSettings, RoomUnbanUserComposer } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { IRoomData, LocalizeText, SendMessageComposer } from '../../../../api'; import { Button, Column, Flex, Grid, Text, UserProfileIconView } from '../../../../common'; import { useMessageEvent } from '../../../../hooks'; interface NavigatorRoomSettingsTabViewProps { roomData: IRoomData; handleChange: (field: string, value: string | number | boolean) => void; } export const NavigatorRoomSettingsModTabView: FC = props => { const { roomData = null, handleChange = null } = props; const [ selectedUserId, setSelectedUserId ] = useState(-1); const [ bannedUsers, setBannedUsers ] = useState([]); const unBanUser = (userId: number) => { setBannedUsers(prevValue => { const newValue = [ ...prevValue ]; const index = newValue.findIndex(value => (value.userId === userId)); if(index >= 0) newValue.splice(index, 1); return newValue; }) SendMessageComposer(new RoomUnbanUserComposer(userId, roomData.roomId)); setSelectedUserId(-1); } useMessageEvent(BannedUsersFromRoomEvent, event => { const parser = event.getParser(); if(!roomData || (roomData.roomId !== parser.roomId)) return; setBannedUsers(parser.bannedUsers); }); useEffect(() => { SendMessageComposer(new RoomBannedUsersComposer(roomData.roomId)); }, [ roomData.roomId ]); return ( { LocalizeText('navigator.roomsettings.moderation.banned.users') } ({ bannedUsers.length }) { bannedUsers && (bannedUsers.length > 0) && bannedUsers.map((user, index) => { return ( setSelectedUserId(user.userId) }> { user.userName } ); }) } { LocalizeText('navigator.roomsettings.moderation.mute.header') } { LocalizeText('navigator.roomsettings.moderation.kick.header') } { LocalizeText('navigator.roomsettings.moderation.ban.header') } ); }