import React, { useCallback, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { FlatList, Text, TextStyle, TouchableOpacity, View, ViewStyle } from 'react-native';
import { useDispatch } from 'react-redux';
import { openSheet } from '../../../base/dialog/actions';
import Icon from '../../../base/icons/components/Icon';
import { IconArrowDown, IconArrowUp } from '../../../base/icons/svg';
import { IRoom } from '../../types';
import BreakoutRoomContextMenu from './BreakoutRoomContextMenu';
import BreakoutRoomParticipantItem from './BreakoutRoomParticipantItem';
import styles from './styles';
interface IProps {
/**
* Room to display.
*/
room: IRoom;
}
/**
* Returns a key for a passed item of the list.
*
* @param {Object} item - The participant.
* @returns {string} - The user ID.
*/
function _keyExtractor(item: any) {
return item.jid;
}
/**
* Renders a collapsible breakout room with its participants.
*
* @returns {JSX.Element} - The breakout room.
*/
export const BreakoutRoom = ({ room }: IProps) => {
const dispatch = useDispatch();
const { t } = useTranslation();
const [ collapsed, setCollapsed ] = useState(false);
const roomParticipantsNr = Object.values(room.participants || {}).length;
const title = `${room.name || t('breakoutRooms.mainRoom')} (${roomParticipantsNr})`;
const _toggleCollapsed = useCallback(() => {
setCollapsed(c => !c);
}, []);
const _openContextMenu = useCallback(() => {
dispatch(openSheet(BreakoutRoomContextMenu, { room }));
}, [ dispatch, room ]);
const renderItem = useCallback(({ item: participant }: { item: any; }) => (
), [ room ]);
return (
{ title }
{ !collapsed && (
) }
);
};