import { NavigatorSearchComposer, NavigatorSearchResultList, NavigatorSearchSaveComposer } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { FaBars, FaMinus, FaPlus, FaTh, FaWindowMaximize, FaWindowRestore } from 'react-icons/fa'; import { LocalizeText, NavigatorSearchResultViewDisplayMode, SendMessageComposer } from '../../../../api'; import { AutoGrid, AutoGridProps, Column, Flex, Grid, LayoutSearchSavesView, Text } from '../../../../common'; import { useNavigator } from '../../../../hooks'; import { NavigatorSearchResultItemView } from './NavigatorSearchResultItemView'; export interface NavigatorSearchResultViewProps extends AutoGridProps { searchResult: NavigatorSearchResultList; } export const NavigatorSearchResultView: FC = props => { const { searchResult = null, ...rest } = props; const [ isExtended, setIsExtended ] = useState(true); const [ displayMode, setDisplayMode ] = useState(0); const [ selectedRoomId, setSelectedRoomId ] = useState(null); const [ isPopoverActive, setIsPopoverActive ] = useState(false); const { topLevelContext = null } = useNavigator(); const getResultTitle = () => { let name = searchResult.code; if(!name || !name.length || LocalizeText('navigator.searchcode.title.' + name) === ('navigator.searchcode.title.' + name)) return searchResult.data; if(name.startsWith('${')) return name.slice(2, (name.length - 1)); return ('navigator.searchcode.title.' + name); }; const toggleDisplayMode = () => { setDisplayMode(prevValue => { if(prevValue === NavigatorSearchResultViewDisplayMode.LIST) return NavigatorSearchResultViewDisplayMode.THUMBNAILS; return NavigatorSearchResultViewDisplayMode.LIST; }); }; const showMore = () => { if(searchResult.action == 1) SendMessageComposer(new NavigatorSearchComposer(searchResult.code, '')); else if(searchResult.action == 2 && topLevelContext) SendMessageComposer(new NavigatorSearchComposer(topLevelContext.code, '')); }; useEffect(() => { if(!searchResult) return; setIsExtended((searchResult.code === 'myworld_view') ? true : !searchResult.closed); setDisplayMode(searchResult.mode); }, [ searchResult ]); const gridHasTwoColumns = (displayMode >= NavigatorSearchResultViewDisplayMode.THUMBNAILS); return ( setIsExtended(prevValue => !prevValue) }> { isExtended && } { !isExtended && } { LocalizeText(getResultTitle()) }
{ (displayMode === NavigatorSearchResultViewDisplayMode.LIST) && } { (displayMode >= NavigatorSearchResultViewDisplayMode.THUMBNAILS) && } { (searchResult.action > 0) && (searchResult.action === 1) && } { (searchResult.action > 0) && (searchResult.action !== 1) && } SendMessageComposer(new NavigatorSearchSaveComposer(getResultTitle(), searchResult.data)) } />
{ isExtended && <> { gridHasTwoColumns ? { searchResult.rooms.length > 0 && searchResult.rooms.map((room, index) => ( )) } : { searchResult.rooms.length > 0 && searchResult.rooms.map((room, index) => ( )) } } { (searchResult.rooms.length === 0) && { LocalizeText(searchResult.code === 'myworld_view' ? 'navigator.no.user.rooms.to.show' : 'navigator.no.results') } } }
); };