// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 import React, { useEffect, useState } from 'react'; import { Modal, ModalHeader, ModalBody, ModalButtonGroup, ModalButton, Input, Label, RadioGroup, PrimaryButton, useNotificationDispatch, } from 'amazon-chime-sdk-component-library-react'; import './NewChannelModal.css'; import { useAuthContext } from '../../providers/AuthProvider'; export const NewChannelModal = ({ onClose, onCreateChannel }) => { const [name, setName] = useState(''); const [privacy, setPrivacy] = useState('PRIVATE'); const [pushNotifications, setPushNotifications] = useState('OFF'); const [mode, setMode] = useState('RESTRICTED'); const [channelType, setChannelType] = useState('STANDARD'); const [maximumSubChannels, setMaximumSubChannels] = useState(2); const minMaximumSubChannels = '2'; const minTargetMembershipsPerSubChannel = '2'; const maxTargetMembershipsPerSubChannel = '1000'; const [ targetMembershipsPerSubChannel, setTargetMembershipsPerSubChannel, ] = useState(4); const [minimumMembershipPercentage, setScaleInMinimumMemberships] = useState( 40 ); const [userName, setUserName] = useState(''); const { member } = useAuthContext(); const onNameChange = (e) => { setName(e.target.value); }; const onPrivacyChange = (e) => { setPrivacy(e.target.value); if(e.target.value == 'PUBLIC'){ setMode('RESTRICTED'); } }; const onPushNotificationsChange = (e) => { setPushNotifications(e.target.value); }; const onModeChange = (e) => { setMode(e.target.value); }; const onChannelTypeChange = (e) => { setChannelType(e.target.value); if(e.target.value == 'ELASTIC'){ setMode('RESTRICTED'); } }; const onMaximumSubChannelsChange = (e) => { setMaximumSubChannels(e.target.value); }; const onScaleInMinimumMembershipsChange = (e) => { setScaleInMinimumMemberships(e.target.value); }; const onTargetMembershipsPerSubChannelChange = (e) => { setTargetMembershipsPerSubChannel(e.target.value); }; const onTestChannel = ( e, name, mode, privacy, maximumSubChannels, targetMembershipsPerSubChannel, minimumMembershipPercentage ) => { if (channelType !== 'ELASTIC') { console.log('create standard channel'); onCreateChannel(e, name, mode, privacy, null); } else { console.log('create elastic channel'); onCreateChannel( e, name, mode, privacy, getElasticChannelConfig( maximumSubChannels, targetMembershipsPerSubChannel, minimumMembershipPercentage ) ); } }; const getElasticChannelConfig = ( maximumSubChannels, targetMembershipsPerSubChannel, minimumMembershipPercentage ) => { return { MaximumSubChannels: maximumSubChannels, TargetMembershipsPerSubChannel: targetMembershipsPerSubChannel, MinimumMembershipPercentage: minimumMembershipPercentage, }; }; return (
onTestChannel( e, name, mode, privacy, maximumSubChannels, targetMembershipsPerSubChannel, minimumMembershipPercentage ) } id="new-channel-form" >
onNameChange(e)} />
onPrivacyChange(e)} />
{privacy !== 'PUBLIC' && channelType === 'STANDARD' && (
onModeChange(e)} />
)}
onChannelTypeChange(e)} />
{channelType !== 'STANDARD' && (
onMaximumSubChannelsChange(e)} />
onTargetMembershipsPerSubChannelChange(e)} />
onScaleInMinimumMembershipsChange(e)} />
)}
, , ]} />
); }; export default NewChannelModal;