Skip to content

Commit 93d2671

Browse files
committed
fix(raised-hands); some copilot fixes and otimizations
1 parent 614d476 commit 93d2671

7 files changed

Lines changed: 30 additions & 23 deletions

File tree

bigbluebutton-html5/imports/ui/components/user-list/hooks/useUserOperations.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { useState } from 'react';
21
import { useLazyQuery, useMutation } from '@apollo/client';
32
import { useIntl } from 'react-intl';
43
import { User, RaisedHandUser } from '/imports/ui/Types/user';
@@ -14,6 +13,7 @@ import {
1413
SET_PRESENTER,
1514
SET_RAISE_HAND,
1615
} from '/imports/ui/core/graphql/mutations/userMutations';
16+
import { useModalRegistration } from '/imports/ui/core/singletons/modalController';
1717

1818
export const mapRaisedHandToUser = (raisedHandUser: RaisedHandUser): User => {
1919
const voiceData = raisedHandUser.voice || {};
@@ -48,14 +48,29 @@ export const mapRaisedHandToUser = (raisedHandUser: RaisedHandUser): User => {
4848
return user;
4949
};
5050

51-
export const useUserOperations = (pageId: string) => {
51+
export const useUserOperations = (userId?: string) => {
5252
const intl = useIntl();
5353
const toggleVoiceFunction = useToggleVoice();
54-
const [isConfirmationModalOpen, setIsConfirmationModalOpen] = useState<boolean>(false);
5554
const [chatCreateWithUser] = useMutation(CHAT_CREATE_WITH_USER);
5655

56+
const {
57+
isOpen: isConfirmationModalOpen,
58+
open: openConfirmationModal,
59+
close: closeConfirmationModal,
60+
} = useModalRegistration({
61+
id: `removeUserConfirmation-${userId || 'default'}`,
62+
priority: 'low',
63+
});
64+
65+
const setIsConfirmationModalOpen = (isOpen: boolean) => {
66+
if (isOpen) {
67+
openConfirmationModal();
68+
} else {
69+
closeConfirmationModal();
70+
}
71+
};
72+
5773
const [getWriters] = useLazyQuery(CURRENT_PAGE_WRITERS_QUERY, {
58-
variables: { pageId },
5974
fetchPolicy: 'no-cache',
6075
});
6176

bigbluebutton-html5/imports/ui/components/user-list/raised-hands/component.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const RaisedHandsContainer: React.FC = () => {
4949
color: u.color,
5050
}));
5151

52-
const { data: presentationData, loading: presentationLoading } = useDeduplicatedSubscription<{
52+
const { data: presentationData } = useDeduplicatedSubscription<{
5353
pres_page_curr: Array<{ pageId: string }> }>(CURRENT_PRESENTATION_PAGE_SUBSCRIPTION);
5454
const pageId = presentationData?.pres_page_curr?.[0]?.pageId ?? '';
5555

@@ -60,7 +60,7 @@ const RaisedHandsContainer: React.FC = () => {
6060
);
6161
}
6262

63-
if (!meeting || !currentUser || meetingLoading || presentationLoading || raisedHands.length === 0) {
63+
if (!meeting || !currentUser || meetingLoading || raisedHands.length === 0) {
6464
return null;
6565
}
6666

bigbluebutton-html5/imports/ui/components/user-list/raised-hands/list-item/component.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,8 @@ const RaisedHandsListItem: React.FC<RaisedHandsListItemProps> = ({
120120
openUserAction,
121121
setOpenUserAction,
122122
}) => {
123-
const { intl, operations, modal } = useUserOperations(pageId);
124-
125123
const user = useMemo(() => mapRaisedHandToUser(raisedHandUser), [raisedHandUser]);
124+
const { intl, operations, modal } = useUserOperations(user.userId);
126125

127126
const isReactionsEnabled = useIsReactionsEnabled();
128127
const emojiSize = convertRemToPixels(2.2);
@@ -186,7 +185,7 @@ const RaisedHandsListItem: React.FC<RaisedHandsListItemProps> = ({
186185
operations.setRole,
187186
operations.setLocked,
188187
operations.userEjectCameras,
189-
modal.setIsOpen,
188+
() => modal.setIsOpen(true),
190189
operations.setRaiseHand,
191190
);
192191

bigbluebutton-html5/imports/ui/components/user-list/raised-hands/list/component.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ const RaisedHandsList: React.FC<RaisedHandsListProps> = ({
2626
}) => {
2727
const [openUserAction, setOpenUserAction] = useState<string | null>(null);
2828

29-
if (raisedHands.length === 0) return null;
30-
3129
const listContent = raisedHands.map((user, index) => (
3230
<Styled.RaisedHandsItem key={user.userId}>
3331
<RaisedHandsListItem

bigbluebutton-html5/imports/ui/components/user-list/user-list-participants/list-item/component.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ const UserListItem: React.FC<UserListItemProps> = ({
5353
pageId,
5454
type,
5555
}) => {
56-
const { intl, operations, modal } = useUserOperations(pageId);
56+
const { intl, operations, modal } = useUserOperations(user.userId);
5757

5858
const { pluginsExtensibleAreasAggregatedState } = useContext(PluginsContext);
5959
let userItemsFromPlugin = [] as PluginSdk.UserListItemAdditionalInformationInterface[];
@@ -117,7 +117,7 @@ const UserListItem: React.FC<UserListItemProps> = ({
117117
operations.setRole,
118118
operations.setLocked,
119119
operations.userEjectCameras,
120-
modal.setIsOpen,
120+
() => modal.setIsOpen(true),
121121
operations.setRaiseHand,
122122
);
123123

bigbluebutton-html5/imports/ui/components/user-list/user-list-participants/list-item/service.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,13 +171,15 @@ export const generateActionsPermissions = (
171171
&& !isDialInUser
172172
&& isPrivateChatEnabled
173173
&& !isSubjectUserBot
174+
&& !isBreakout
174175
&& type === 'participant';
175176

176177
const allowedToMuteAudio = hasAuthority
177178
&& subjectUserInAudio
178179
&& !isMuted
179180
&& !subjectUserVoice?.listenOnly
180181
&& !isSubjectUserBot
182+
&& !isBreakout
181183
&& (type === 'participant' || type === 'raised-hand');
182184

183185
const allowedToUnmuteAudio = hasAuthority
@@ -186,6 +188,7 @@ export const generateActionsPermissions = (
186188
&& isMuted
187189
&& (amISubjectUser || usersPolicies?.allowModsToUnmuteUsers)
188190
&& !lockSettings?.disableMic
191+
&& !isBreakout
189192
&& (type === 'participant' || type === 'raised-hand');
190193

191194
const allowedToChangeWhiteboardAccess = currentUser.presenter
@@ -368,7 +371,7 @@ export const createToolbarOptions = (
368371
setRole: MutationFunction,
369372
setLocked: MutationFunction,
370373
userEjectCameras: MutationFunction,
371-
setIsConfirmationModalOpen: (value: boolean) => void,
374+
openConfirmationModal: () => void,
372375
setRaiseHand: MutationFunction,
373376
) => {
374377
const MODERATOR_ROLE = window.meetingClientSettings.public.user.role_moderator;

bigbluebutton-html5/imports/ui/components/user-list/user-list-participants/list-item/styles.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,7 @@ interface AvatarProps {
2121
isSkeleton?: boolean;
2222
}
2323

24-
interface RaisedHandAvatarProps {
25-
moderator?: boolean;
26-
presenter?: boolean;
27-
talking?: boolean;
28-
color?: string;
29-
animations?: boolean;
30-
emoji?: boolean;
31-
avatar?: string;
32-
isSkeleton?: boolean;
24+
interface RaisedHandAvatarProps extends AvatarProps {
3325
children?: React.ReactNode;
3426
}
3527

0 commit comments

Comments
 (0)