mirror of
https://github.com/duckietm/Nitro-Cool-UI.git
synced 2025-06-21 22:36:58 +00:00
70 lines
2.5 KiB
TypeScript
70 lines
2.5 KiB
TypeScript
import { GroupPurchasedEvent, GroupSettingsComposer, ILinkEventTracker } from '@nitrots/nitro-renderer';
|
|
import { FC, useEffect, useState } from 'react';
|
|
import { AddEventLinkTracker, RemoveLinkEventTracker, SendMessageComposer, TryVisitRoom } from '../../api';
|
|
import { useGroup, useMessageEvent } from '../../hooks';
|
|
import { GroupCreatorView } from './views/GroupCreatorView';
|
|
import { GroupInformationStandaloneView } from './views/GroupInformationStandaloneView';
|
|
import { GroupManagerView } from './views/GroupManagerView';
|
|
import { GroupMembersView } from './views/GroupMembersView';
|
|
|
|
export const GroupsView: FC<{}> = props =>
|
|
{
|
|
const [ isCreatorVisible, setCreatorVisible ] = useState<boolean>(false);
|
|
const [ currentBadgeCode, setCurrentBadgeCode ] = useState<string>(''); // State to hold the current badge code
|
|
const {} = useGroup();
|
|
|
|
// Callback to receive the updated badge code from GroupCreatorView
|
|
const handleBadgeCodeUpdate = (badgeCode: string) => {
|
|
console.log('GroupsView: Received updated badge code', { badgeCode });
|
|
setCurrentBadgeCode(badgeCode);
|
|
};
|
|
|
|
useMessageEvent<GroupPurchasedEvent>(GroupPurchasedEvent, event =>
|
|
{
|
|
const parser = event.getParser();
|
|
|
|
setCreatorVisible(false);
|
|
TryVisitRoom(parser.roomId);
|
|
});
|
|
|
|
useEffect(() =>
|
|
{
|
|
const linkTracker: ILinkEventTracker = {
|
|
linkReceived: (url: string) =>
|
|
{
|
|
const parts = url.split('/');
|
|
|
|
if(parts.length < 2) return;
|
|
|
|
switch(parts[1])
|
|
{
|
|
case 'create':
|
|
setCreatorVisible(true);
|
|
return;
|
|
case 'manage':
|
|
if(!parts[2]) return;
|
|
|
|
setCreatorVisible(false);
|
|
SendMessageComposer(new GroupSettingsComposer(Number(parts[2])));
|
|
return;
|
|
}
|
|
},
|
|
eventUrlPrefix: 'groups/'
|
|
};
|
|
|
|
AddEventLinkTracker(linkTracker);
|
|
|
|
return () => RemoveLinkEventTracker(linkTracker);
|
|
}, []);
|
|
|
|
return (
|
|
<>
|
|
{ isCreatorVisible &&
|
|
<GroupCreatorView onClose={ () => setCreatorVisible(false) } onBadgeCodeUpdate={ handleBadgeCodeUpdate } /> }
|
|
{ !isCreatorVisible &&
|
|
<GroupManagerView /> }
|
|
<GroupMembersView />
|
|
<GroupInformationStandaloneView badgeCode={ currentBadgeCode } isCreating={ isCreatorVisible } />
|
|
</>
|
|
);
|
|
}; |