import { GroupInformationComposer, GroupInformationEvent, GroupInformationParser, HabboGroupEntryData } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; import { SendMessageComposer, ToggleFavoriteGroup } from '../../api'; import { AutoGrid, Column, Grid, GridProps, LayoutBadgeImageView, LayoutGridItem } from '../../common'; import { useMessageEvent } from '../../hooks'; import { GroupInformationView } from '../groups/views/GroupInformationView'; interface GroupsContainerViewProps extends GridProps { itsMe: boolean; groups: HabboGroupEntryData[]; onLeaveGroup: () => void; } export const GroupsContainerView: FC = props => { const { itsMe = null, groups = null, onLeaveGroup = null, overflow = 'hidden', gap = 2, ...rest } = props; const [ selectedGroupId, setSelectedGroupId ] = useState(null); const [ groupInformation, setGroupInformation ] = useState(null); useMessageEvent(GroupInformationEvent, event => { const parser = event.getParser(); if(!selectedGroupId || (selectedGroupId !== parser.id) || parser.flag) return; setGroupInformation(parser); }); useEffect(() => { if(!selectedGroupId) return; SendMessageComposer(new GroupInformationComposer(selectedGroupId, false)); }, [ selectedGroupId ]); useEffect(() => { setGroupInformation(null); if(groups.length > 0) { setSelectedGroupId(prevValue => { if(prevValue === groups[0].groupId) { SendMessageComposer(new GroupInformationComposer(groups[0].groupId, false)); } return groups[0].groupId; }); } }, [ groups ]); if(!groups || !groups.length) { return (
); } return ( { groups.map((group, index) => { return ( setSelectedGroupId(group.groupId) }> { itsMe && ToggleFavoriteGroup(group) } /> } ); }) } { groupInformation && } ); };