import React, { useRef, useState } from 'react';
import { useMedia } from 'react-use';
import { HMSPeer, selectAvailableRoleNames, selectPeerByID, useHMSActions, useHMSStore } from '@100mslive/react-sdk';
import { ChevronDownIcon, ChevronUpIcon, CrossIcon } from '@100mslive/react-icons';
import { Button } from '../../Button';
import { Dropdown } from '../../Dropdown';
import { Box, Flex } from '../../Layout';
import { Dialog } from '../../Modal';
import { Sheet } from '../../Sheet';
import { Text } from '../../Text';
import { config as cssConfig } from '../../Theme';
import { Tooltip } from '../../Tooltip';
const HighlightTerm = ({ value }: { value: string | undefined }) => {
return value ? (
'{value.slice(0, 100)}
{value.length > 100 ? '...' : ''}'
) : (
<>>
);
};
const RoleChangeContent = ({
peer,
onOpenChange,
isMobile = false,
}: {
peer: HMSPeer;
onOpenChange: (open: boolean) => void;
isMobile?: boolean;
}) => {
const roles = useHMSStore(selectAvailableRoleNames).filter(
role => role !== peer?.roleName && role !== '__internal_recorder',
);
const [selectedRole, setRole] = useState(roles.filter(role => role !== peer?.roleName)?.[0] || peer?.roleName);
const hmsActions = useHMSActions();
const [open, setOpen] = useState(false);
const triggerRef = useRef();
return (
<>
Switch Role
{isMobile && onOpenChange(false)} />}
Switch the role of
from to
{selectedRole}
{open ? : }
{roles.map(role => (
setRole(role)}
css={{ w: `${triggerRef.current?.clientWidth}px` }}
>
{role}
))}
{!isMobile && (
)}
>
);
};
export const RoleChangeModal = ({
peerId,
onOpenChange,
}: {
peerId: string;
onOpenChange: (open: boolean) => void;
}) => {
const peer = useHMSStore(selectPeerByID(peerId));
const isMobile = useMedia(cssConfig.media.md);
if (!peer) {
return null;
}
if (isMobile) {
return (
);
}
return (
);
};