// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import React, { useState, useContext, ChangeEvent } from 'react'; import { Flex, Input, PrimaryButton, Modal, FormField, ModalHeader, ModalBody, ModalButton, ModalButtonGroup, } from 'amazon-chime-sdk-component-library-react'; import { select } from '@storybook/addon-knobs'; import { createMeeting, getBreakouts} from '../../utils/api'; import { getErrorContext } from '../../providers/ErrorProvider'; import { useAppState } from '../../providers/AppStateProvider'; const BreakOutForm: React.FC = () => { const { region: appRegion, meetingId: appMeetingId, updateBreakoutRooms: appUpdateBreakoutRooms, currentBreakoutIndex: appCurrentBreakoutIndex } = useAppState(); const [showModal, setShowModal] = useState(false); const toggleModal = () => setShowModal(!showModal); const [breakOutCount, setBreakOutCount] = useState(''); const [breakOutCountErr, setBreakOutCountErr] = useState(false); const { updateErrorMessage } = useContext(getErrorContext()); const [region] = useState(appRegion); const [meetingId] = useState(appMeetingId); const createBreakOutRooms = async (e: React.FormEvent) => { const meetingCount = Number(breakOutCount.trim()); for (let i=1; i<=meetingCount; i++) { try{ const roomIndex = i+appCurrentBreakoutIndex; await createMeeting(meetingId, `breakout-${meetingId}-${roomIndex}`, region) } catch (error) { if (error instanceof Error) { updateErrorMessage(error.message); } else { throw error; } } } const currentBreakoutRooms = await getBreakouts(meetingId); appUpdateBreakoutRooms(currentBreakoutRooms); }; return (
{showModal && (

Create this many breakout rooms:

): void => { setBreakOutCount(e.target.value); if (breakOutCountErr) { setBreakOutCountErr(false); } }} />
]} />
)}
); }; export default BreakOutForm;