import { GetSessionDataManager, RoomObjectType } from '@nitrots/nitro-renderer'; import { FC, useMemo, useState } from 'react'; import { ChatEntryType, IReportedUser, LocalizeText, ReportState, SanitizeHtml } from '../../../api'; import { AutoGrid, Button, Column, Flex, LayoutGridItem, Text } from '../../../common'; import { useChatHistory, useHelp } from '../../../hooks'; export const SelectReportedUserView: FC<{}> = props => { const [ selectedUserId, setSelectedUserId ] = useState(-1); const { chatHistory = [] } = useChatHistory(); const { activeReport = null, setActiveReport = null } = useHelp(); const availableUsers = useMemo(() => { const users: Map = new Map(); chatHistory.forEach(chat => { if((chat.type === ChatEntryType.TYPE_CHAT) && (chat.entityType === RoomObjectType.USER) && (chat.webId !== GetSessionDataManager().userId) && !users.has(chat.webId)) users.set(chat.webId, { id: chat.webId, username: chat.name }); }); return Array.from(users.values()); }, [ chatHistory ]); const submitUser = (userId: number) => { if(userId <= 0) return; setActiveReport(prevValue => { return { ...prevValue, reportedUserId: userId, currentStep: ReportState.SELECT_CHATS }; }); }; const selectUser = (userId: number) => { setSelectedUserId(prevValue => { if(userId === prevValue) return -1; return userId; }); }; const back = () => { setActiveReport(prevValue => { return { ...prevValue, currentStep: (prevValue.currentStep - 1) }; }); }; return ( <>
{ LocalizeText('help.emergency.main.step.two.title') } { (availableUsers.length > 0) && { LocalizeText('report.user.pick.user') } }
{ !!!availableUsers.length && { LocalizeText('report.user.error.nolist') } } { (availableUsers.length > 0) && { availableUsers.map((user, index) => { return ( selectUser(user.id) }> ); }) } } ); };