import { RelationshipStatusInfoEvent, RelationshipStatusInfoMessageParser, UserCurrentBadgesComposer, UserCurrentBadgesEvent, UserProfileComposer, UserProfileEvent, UserProfileParser, UserRelationshipsComposer } from '@nitrots/nitro-renderer'; import { FC, useCallback, useState } from 'react'; import { GetSessionDataManager, LocalizeText } from '../../api'; import { CreateMessageHook, SendMessageHook } from '../../hooks'; import { NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../layout'; import { BadgesContainerView } from './views/badges-container/BadgesContainerView'; import { FriendsContainerView } from './views/friends-container/FriendsContainerView'; import { GroupsContainerView } from './views/groups-container/GroupsContainerView'; import { UserContainerView } from './views/user-container/UserContainerView'; export const UserProfileView: FC = props => { const [userProfile, setUserProfile] = useState(null); const [userBadges, setUserBadges] = useState([]); const [userRelationships, setUserRelationships] = useState(null); const OnClose = useCallback(() => { setUserProfile(null); setUserBadges([]); setUserRelationships(null); }, []); const onLeaveGroup = useCallback(() => { if(userProfile && userProfile.id === GetSessionDataManager().userId) SendMessageHook(new UserProfileComposer(userProfile.id)); }, [ userProfile ]); const OnUserCurrentBadgesEvent = useCallback((event: UserCurrentBadgesEvent) => { const parser = event.getParser(); if(userProfile && parser.userId === userProfile.id) setUserBadges(parser.badges); }, [userProfile, setUserBadges]); CreateMessageHook(UserCurrentBadgesEvent, OnUserCurrentBadgesEvent); const OnUserRelationshipsEvent = useCallback((event: RelationshipStatusInfoEvent) => { const parser = event.getParser(); if(userProfile && parser.userId === userProfile.id) setUserRelationships(parser); }, [userProfile, setUserRelationships]); CreateMessageHook(RelationshipStatusInfoEvent, OnUserRelationshipsEvent); const OnUserProfileEvent = useCallback((event: UserProfileEvent) => { const parser = event.getParser(); if(userProfile) { setUserProfile(null); setUserBadges([]); setUserRelationships(null); } setUserProfile(parser); SendMessageHook(new UserCurrentBadgesComposer(parser.id)); SendMessageHook(new UserRelationshipsComposer(parser.id)); }, [userProfile]); CreateMessageHook(UserProfileEvent, OnUserProfileEvent); if(!userProfile) return null; return (
{ userRelationships && }
{LocalizeText('extendedprofile.rooms')}
) }