Fix groups on profile

This commit is contained in:
Bill 2022-03-16 19:05:07 -04:00
parent b61ea0b409
commit 8b1e5dc552
3 changed files with 25 additions and 9 deletions

View File

@ -0,0 +1,8 @@
import { GroupFavoriteComposer, HabboGroupEntryData } from '@nitrots/nitro-renderer';
import { SendMessageComposer } from '..';
export const ToggleFavoriteGroup = (group: HabboGroupEntryData) =>
{
// new GroupUnfavoriteComposer(group.groupId)
SendMessageComposer(group.favourite ? null : new GroupFavoriteComposer(group.groupId));
}

View File

@ -1,4 +1,5 @@
export * from './GetGroupInformation'; export * from './GetGroupInformation';
export * from './GetGroupManager'; export * from './GetGroupManager';
export * from './GetGroupMembers'; export * from './GetGroupMembers';
export * from './ToggleFavoriteGroup';
export * from './TryJoinGroup'; export * from './TryJoinGroup';

View File

@ -1,6 +1,6 @@
import { GroupFavoriteComposer, GroupInformationComposer, GroupInformationEvent, GroupInformationParser, HabboGroupEntryData } from '@nitrots/nitro-renderer'; import { GroupInformationComposer, GroupInformationEvent, GroupInformationParser, HabboGroupEntryData } from '@nitrots/nitro-renderer';
import { FC, useCallback, useEffect, useState } from 'react'; import { FC, useCallback, useEffect, useState } from 'react';
import { SendMessageComposer } from '../../../api'; import { SendMessageComposer, ToggleFavoriteGroup } from '../../../api';
import { AutoGrid, Base, Column, Flex, Grid, GridProps, LayoutBadgeImageView, LayoutGridItem } from '../../../common'; import { AutoGrid, Base, Column, Flex, Grid, GridProps, LayoutBadgeImageView, LayoutGridItem } from '../../../common';
import { BatchUpdates, UseMessageEventHook } from '../../../hooks'; import { BatchUpdates, UseMessageEventHook } from '../../../hooks';
import { GroupInformationView } from '../../groups/views/GroupInformationView'; import { GroupInformationView } from '../../groups/views/GroupInformationView';
@ -18,18 +18,14 @@ export const GroupsContainerView: FC<GroupsContainerViewProps> = props =>
const [ selectedGroupId, setSelectedGroupId ] = useState<number>(null); const [ selectedGroupId, setSelectedGroupId ] = useState<number>(null);
const [ groupInformation, setGroupInformation ] = useState<GroupInformationParser>(null); const [ groupInformation, setGroupInformation ] = useState<GroupInformationParser>(null);
const favoriteGroup = (groupId: number) => SendMessageComposer(new GroupFavoriteComposer(groupId));
const onGroupInformationEvent = useCallback((event: GroupInformationEvent) => const onGroupInformationEvent = useCallback((event: GroupInformationEvent) =>
{ {
const parser = event.getParser(); const parser = event.getParser();
if(!selectedGroupId || (selectedGroupId !== parser.id) || parser.flag) return; if(!selectedGroupId || (selectedGroupId !== parser.id) || parser.flag) return;
if(groupInformation) setGroupInformation(null);
setGroupInformation(parser); setGroupInformation(parser);
}, [ groupInformation, selectedGroupId ]); }, [ selectedGroupId ]);
UseMessageEventHook(GroupInformationEvent, onGroupInformationEvent); UseMessageEventHook(GroupInformationEvent, onGroupInformationEvent);
@ -46,7 +42,18 @@ export const GroupsContainerView: FC<GroupsContainerViewProps> = props =>
{ {
setGroupInformation(null); setGroupInformation(null);
if(groups.length > 0) setSelectedGroupId(groups[0].groupId); if(groups.length > 0)
{
setSelectedGroupId(prevValue =>
{
if(prevValue === groups[0].groupId)
{
SendMessageComposer(new GroupInformationComposer(groups[0].groupId, false));
}
return groups[0].groupId;
});
}
}); });
}, [ groups ]); }, [ groups ]);
@ -72,7 +79,7 @@ export const GroupsContainerView: FC<GroupsContainerViewProps> = props =>
return ( return (
<LayoutGridItem key={ index } overflow="unset" itemActive={ (selectedGroupId === group.groupId) } onClick={ () => setSelectedGroupId(group.groupId) } className="p-1"> <LayoutGridItem key={ index } overflow="unset" itemActive={ (selectedGroupId === group.groupId) } onClick={ () => setSelectedGroupId(group.groupId) } className="p-1">
{ itsMe && { itsMe &&
<i className={ 'position-absolute end-0 top-0 z-index-1 icon icon-group-' + (group.favourite ? 'favorite' : 'not-favorite') } onClick={ () => favoriteGroup(group.groupId) } /> } <i className={ 'position-absolute end-0 top-0 z-index-1 icon icon-group-' + (group.favourite ? 'favorite' : 'not-favorite') } onClick={ () => ToggleFavoriteGroup(group) } /> }
<LayoutBadgeImageView badgeCode={ group.badgeCode } isGroup={ true } /> <LayoutBadgeImageView badgeCode={ group.badgeCode } isGroup={ true } />
</LayoutGridItem> </LayoutGridItem>
) )