import { RoomObjectCategory, RoomObjectVariable } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { FaArrowLeft, FaArrowRight } from 'react-icons/fa'; import { GetRoomEngine, GetUserProfile, IPhotoData, LocalizeText } from '../../../api'; import { Flex, Grid, Text } from '../../../common'; export interface CameraWidgetShowPhotoViewProps { currentIndex: number; currentPhotos: IPhotoData[]; } export const CameraWidgetShowPhotoView: FC = props => { const { currentIndex = -1, currentPhotos = null } = props; const [ imageIndex, setImageIndex ] = useState(0); const currentImage = (currentPhotos && currentPhotos.length) ? currentPhotos[imageIndex] : null; const next = () => { setImageIndex(prevValue => { let newIndex = (prevValue + 1); if(newIndex >= currentPhotos.length) newIndex = 0; return newIndex; }); } const previous = () => { setImageIndex(prevValue => { let newIndex = (prevValue - 1); if(newIndex < 0) newIndex = (currentPhotos.length - 1); return newIndex; }); } const getUserData = (roomId: number, objectId: number, type: string): number | string => { const roomObject = GetRoomEngine().getRoomObject(roomId, objectId, RoomObjectCategory.WALL); if (!roomObject) return ''; return type === 'username' ? roomObject.model.getValue(RoomObjectVariable.FURNITURE_OWNER_NAME) : roomObject.model.getValue(RoomObjectVariable.FURNITURE_OWNER_ID); } useEffect(() => { setImageIndex(currentIndex); }, [ currentIndex, currentPhotos ]); if(!currentImage) return null; const imageUrl = currentImage.w || ''; return ( { !imageUrl && { LocalizeText('camera.loading') } } { currentImage.m && currentImage.m.length && { currentImage.m } } { new Date(currentImage.t * 1000).toLocaleDateString(undefined, { day: 'numeric', month: 'long', year: 'numeric' }) } GetUserProfile(Number(getUserData(currentImage.s, Number(currentImage.u), 'id')))}> { getUserData(currentImage.s, Number(currentImage.u), 'username') || 'Unknown' } { (currentPhotos.length > 1) && } ); }