snapshot of https://github.com/jitsi/jitsi-meet.git @ fd1749dd28f4138aa80234fc7f311b19aaffa0e7 (2026-09-15)
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import React, { useCallback, useMemo } from 'react';
|
||||
import { FlatList } from 'react-native';
|
||||
import { useSelector } from 'react-redux';
|
||||
|
||||
import { IReduxState } from '../../../app/types';
|
||||
import JitsiScreen from '../../../base/modal/components/JitsiScreen';
|
||||
import { isLocalParticipantModerator } from '../../../base/participants/functions';
|
||||
import { equals } from '../../../base/redux/functions';
|
||||
import {
|
||||
getBreakoutRooms,
|
||||
getCurrentRoomId,
|
||||
isAddBreakoutRoomButtonVisible,
|
||||
isAutoAssignParticipantsVisible,
|
||||
isInBreakoutRoom
|
||||
} from '../../functions';
|
||||
|
||||
import AutoAssignButton from './AutoAssignButton';
|
||||
import { BreakoutRoom } from './BreakoutRoom';
|
||||
import BreakoutRoomsFooter from './BreakoutRoomsFooter';
|
||||
import styles from './styles';
|
||||
|
||||
|
||||
const BreakoutRooms = () => {
|
||||
const currentRoomId = useSelector(getCurrentRoomId);
|
||||
const inBreakoutRoom = useSelector(isInBreakoutRoom);
|
||||
const isBreakoutRoomsSupported = useSelector((state: IReduxState) =>
|
||||
state['features/base/conference'].conference?.getBreakoutRooms()?.isSupported());
|
||||
const isLocalModerator = useSelector(isLocalParticipantModerator);
|
||||
const keyExtractor = useCallback((e: undefined, i: number) => i.toString(), []);
|
||||
const rooms = Object.values(useSelector(getBreakoutRooms, equals))
|
||||
.filter(room => room.id !== currentRoomId)
|
||||
.sort((p1, p2) => (p1?.name || '').localeCompare(p2?.name || ''));
|
||||
const showAddBreakoutRoom = useSelector(isAddBreakoutRoomButtonVisible);
|
||||
const showAutoAssign = useSelector(isAutoAssignParticipantsVisible);
|
||||
const showFooter = (isLocalModerator && showAddBreakoutRoom) || inBreakoutRoom;
|
||||
const renderListHeaderComponent = useMemo(() => (
|
||||
<>
|
||||
{ showAutoAssign && <AutoAssignButton /> }
|
||||
{
|
||||
isBreakoutRoomsSupported
|
||||
&& rooms.map(room => (<BreakoutRoom
|
||||
key = { room.id }
|
||||
room = { room } />))
|
||||
}
|
||||
</>
|
||||
), [ showAutoAssign, isBreakoutRoomsSupported, rooms ]);
|
||||
|
||||
return (
|
||||
<JitsiScreen
|
||||
footerComponent = { showFooter ? BreakoutRoomsFooter : undefined }
|
||||
style = { styles.breakoutRoomsContainer }>
|
||||
|
||||
{ /* Fixes warning regarding nested lists */ }
|
||||
<FlatList
|
||||
ListHeaderComponent = { renderListHeaderComponent }
|
||||
data = { [] as ReadonlyArray<undefined> }
|
||||
keyExtractor = { keyExtractor }
|
||||
renderItem = { null }
|
||||
windowSize = { 2 } />
|
||||
</JitsiScreen>
|
||||
);
|
||||
};
|
||||
|
||||
export default BreakoutRooms;
|
||||
Reference in New Issue
Block a user