From 87f1ee4c5dcb71dff4c44010dadce285c9e1ac68 Mon Sep 17 00:00:00 2001 From: Bill Date: Wed, 2 Mar 2022 22:52:15 -0500 Subject: [PATCH] More group updates --- .../groups/views/GroupInformationView.tsx | 19 +++++------- .../groups/views/GroupMembersView.tsx | 29 +++++++++---------- .../groups/views/GroupRoomInformationView.tsx | 11 +++---- 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/src/components/groups/views/GroupInformationView.tsx b/src/components/groups/views/GroupInformationView.tsx index 757acdb4..aef5b7af 100644 --- a/src/components/groups/views/GroupInformationView.tsx +++ b/src/components/groups/views/GroupInformationView.tsx @@ -25,7 +25,7 @@ export const GroupInformationView: FC = props => { const { groupInformation = null, onClose = null } = props; - const isRealOwner = () => (groupInformation && (groupInformation.ownerName === GetSessionDataManager().userName)); + const isRealOwner = (groupInformation && (groupInformation.ownerName === GetSessionDataManager().userName)); const joinGroup = () => (groupInformation && TryJoinGroup(groupInformation.id)); @@ -43,7 +43,7 @@ export const GroupInformationView: FC = props => { if(groupInformation.membershipType === GroupMembershipType.NOT_MEMBER || groupInformation.membershipType === GroupMembershipType.REQUEST_PENDING) return null; - if(isRealOwner()) return ; + if(isRealOwner) return ; if(groupInformation.isAdmin) return ; @@ -52,20 +52,17 @@ export const GroupInformationView: FC = props => const getButtonText = () => { - if(groupInformation.type === GroupType.PRIVATE) return ''; + if(isRealOwner) return 'group.youareowner'; - if(isRealOwner()) return 'group.youareowner'; + if(groupInformation.type === GroupType.PRIVATE) return ''; if(groupInformation.membershipType === GroupMembershipType.MEMBER) return 'group.leave'; - if(groupInformation.membershipType === GroupMembershipType.NOT_MEMBER && groupInformation.type === GroupType.REGULAR) return 'group.join'; + if((groupInformation.membershipType === GroupMembershipType.NOT_MEMBER) && groupInformation.type === GroupType.REGULAR) return 'group.join'; - if(groupInformation.type === GroupType.EXCLUSIVE) - { - if(groupInformation.membershipType === GroupMembershipType.NOT_MEMBER) return 'group.requestmembership'; + if(groupInformation.membershipType === GroupMembershipType.REQUEST_PENDING) return 'group.membershippending'; - if(groupInformation.membershipType === GroupMembershipType.REQUEST_PENDING) return 'group.membershippending'; - } + if((groupInformation.membershipType === GroupMembershipType.NOT_MEMBER) && groupInformation.type === GroupType.EXCLUSIVE) return 'group.requestmembership'; } const handleButtonClick = () => @@ -143,7 +140,7 @@ export const GroupInformationView: FC = props => { LocalizeText('group.showgroups') } { (groupInformation.type !== GroupType.PRIVATE) && - } diff --git a/src/components/groups/views/GroupMembersView.tsx b/src/components/groups/views/GroupMembersView.tsx index a4064cdc..f6f86ea0 100644 --- a/src/components/groups/views/GroupMembersView.tsx +++ b/src/components/groups/views/GroupMembersView.tsx @@ -1,6 +1,5 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { GroupAdminGiveComposer, GroupAdminTakeComposer, GroupConfirmMemberRemoveEvent, GroupConfirmRemoveMemberComposer, GroupMemberParser, GroupMembersComposer, GroupMembersEvent, GroupMembershipAcceptComposer, GroupMembershipDeclineComposer, GroupMembersParser, GroupRank, GroupRemoveMemberComposer, ILinkEventTracker } from '@nitrots/nitro-renderer'; -import classNames from 'classnames'; import { FC, useCallback, useEffect, useState } from 'react'; import { AddEventLinkTracker, GetSessionDataManager, GetUserProfile, LocalizeText, RemoveLinkEventTracker } from '../../../api'; import { Base, Button, Column, Flex, Grid, Text } from '../../../common'; @@ -20,10 +19,6 @@ export const GroupMembersView: FC<{}> = props => const [ searchQuery, setSearchQuery ] = useState(''); const [ removingMemberName, setRemovingMemberName ] = useState(null); - const previousPage = () => setPageId(prevValue => (prevValue - 1)); - - const nextPage = () => setPageId(prevValue => (prevValue + 1)); - const getRankDescription = (member: GroupMemberParser) => { if(member.rank === GroupRank.OWNER) return 'group.members.owner'; @@ -47,7 +42,7 @@ export const GroupMembersView: FC<{}> = props => const toggleAdmin = (member: GroupMemberParser) => { - if(member.rank === GroupRank.OWNER) return; + if(!membersData.admin || (member.rank === GroupRank.OWNER)) return; if(member.rank !== GroupRank.ADMIN) SendMessageHook(new GroupAdminGiveComposer(membersData.groupId, member.id)); else SendMessageHook(new GroupAdminTakeComposer(membersData.groupId, member.id)); @@ -57,7 +52,7 @@ export const GroupMembersView: FC<{}> = props => const acceptMembership = (member: GroupMemberParser) => { - if(member.rank !== GroupRank.REQUESTED) return; + if(!membersData.admin || (member.rank !== GroupRank.REQUESTED)) return; SendMessageHook(new GroupMembershipAcceptComposer(membersData.groupId, member.id)); @@ -66,6 +61,8 @@ export const GroupMembersView: FC<{}> = props => const removeMemberOrDeclineMembership = (member: GroupMemberParser) => { + if(!membersData.admin) return; + if(member.rank === GroupRank.REQUESTED) { SendMessageHook(new GroupMembershipDeclineComposer(membersData.groupId, member.id)); @@ -191,22 +188,22 @@ export const GroupMembersView: FC<{}> = props => - GetUserProfile(member.id) }>{ member.name } + GetUserProfile(member.id) }>{ member.name } { (member.rank !== GroupRank.REQUESTED) && - { LocalizeText('group.members.since', ['date'], [member.joinedAt]) } } + { LocalizeText('group.members.since', [ 'date' ], [ member.joinedAt ]) } } { (member.rank !== GroupRank.REQUESTED) && - toggleAdmin(member) } /> + toggleAdmin(member) } /> } - { (member.rank === GroupRank.REQUESTED) && + { membersData.admin && (member.rank === GroupRank.REQUESTED) && - acceptMembership(member) }> + acceptMembership(member) }> } - { (member.rank !== GroupRank.OWNER) && membersData.admin && (member.id !== GetSessionDataManager().userId) && + { membersData.admin && (member.rank !== GroupRank.OWNER) && (member.id !== GetSessionDataManager().userId) && - removeMemberOrDeclineMembership(member) }> + removeMemberOrDeclineMembership(member) }> } @@ -214,13 +211,13 @@ export const GroupMembersView: FC<{}> = props => }) } - { LocalizeText('group.members.pageinfo', ['amount', 'page', 'totalPages'], [membersData.totalMembersCount.toString(), (membersData.pageIndex + 1).toString(), totalPages.toString()]) } - diff --git a/src/components/groups/views/GroupRoomInformationView.tsx b/src/components/groups/views/GroupRoomInformationView.tsx index 789cfb69..31c70a34 100644 --- a/src/components/groups/views/GroupRoomInformationView.tsx +++ b/src/components/groups/views/GroupRoomInformationView.tsx @@ -90,18 +90,15 @@ export const GroupRoomInformationView: FC<{}> = props => { if(isRealOwner) return 'group.manage'; - if(groupInformation.type === GroupType.PRIVATE) return ''; + if(groupInformation.type === GroupType.PRIVATE) return ''; if(groupInformation.membershipType === GroupMembershipType.MEMBER) return 'group.leave'; - if(groupInformation.membershipType === GroupMembershipType.NOT_MEMBER && groupInformation.type === GroupType.REGULAR) return 'group.join'; + if((groupInformation.membershipType === GroupMembershipType.NOT_MEMBER) && groupInformation.type === GroupType.REGULAR) return 'group.join'; - if(groupInformation.type === GroupType.EXCLUSIVE) - { - if(groupInformation.membershipType === GroupMembershipType.NOT_MEMBER) return 'group.requestmembership'; + if(groupInformation.membershipType === GroupMembershipType.REQUEST_PENDING) return 'group.membershippending'; - if(groupInformation.membershipType === GroupMembershipType.REQUEST_PENDING) return 'group.membershippending'; - } + if((groupInformation.membershipType === GroupMembershipType.NOT_MEMBER) && groupInformation.type === GroupType.EXCLUSIVE) return 'group.requestmembership'; } const handleButtonClick = () =>