import { GetRoomVisitsMessageComposer, RoomVisitsData, RoomVisitsEvent } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { FaClock, FaDoorOpen, FaSignInAlt } from 'react-icons/fa'; import { LocalizeText, SendMessageComposer, TryVisitRoom } from '../../../../api'; import { DraggableWindowPosition, InfiniteScroll, NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../../../common'; import { useMessageEvent } from '../../../../hooks'; interface ModToolsUserRoomVisitsViewProps { userId: number; onCloseClick: () => void; } export const ModToolsUserRoomVisitsView: FC = props => { const { userId = null, onCloseClick = null } = props; const [ roomVisitData, setRoomVisitData ] = useState(null); useMessageEvent(RoomVisitsEvent, event => { const parser = event.getParser(); if(parser.data.userId !== userId) return; setRoomVisitData(parser.data); }); useEffect(() => { SendMessageComposer(new GetRoomVisitsMessageComposer(userId)); }, [ userId ]); if(!userId) return null; const rows = roomVisitData?.rooms ?? []; const isEmpty = rows.length === 0; const countLabel = rows.length === 1 ? LocalizeText('modtools.user.visits.entries.one', [ 'count' ], [ rows.length.toString() ]) : LocalizeText('modtools.user.visits.entries.many', [ 'count' ], [ rows.length.toString() ]); return ( {/* Header strip */}
{ LocalizeText('modtools.user.visits.recent') }
{ countLabel }
{/* Table head */}
{ LocalizeText('modtools.user.visits.time') }
{ LocalizeText('modtools.user.visits.room') }
{ LocalizeText('modtools.user.visits.action') }
{/* Rows */} { isEmpty ?
{ LocalizeText('modtools.user.visits.empty') }
:
(
{ row.enterHour.toString().padStart(2, '0') }:{ row.enterMinute.toString().padStart(2, '0') } { row.roomName }
) } rows={ rows } />
}
); };