import React, { useState, useEffect, createRef } from 'react'; import PropTypes from 'prop-types'; import { withRouter } from 'react-router-dom'; import * as config from '../../config'; import Error from './Error'; const Welcome = ({ location, history }) => { const [username, setUsername] = useState(''); const [title, setTitle] = useState(''); const [playbackURL, setPlaybackURL] = useState(config.DEFAULT_VIDEO_STREAM); const [errorMsg, setErrorMsg] = useState(''); const [showError, setShowError] = useState(false); const baseHref = config.BASE_HREF; const inputRef = createRef(); useEffect(() => { const qs = new URLSearchParams(location.search); const action = qs.get('action'); if (action === 'join') { const title = qs.get('room'); history.push(`${baseHref}/join?room=${title}`); } inputRef.current.focus(); }, []); const handleNameChange = (e) => { setUsername(e.target.value); }; const handleRoomChange = (e) => { setTitle(e.target.value); }; const handlePlaybackURLChange = (e) => { setPlaybackURL(e.target.value); }; const handleCreateRoom = (e) => { e.preventDefault(); e.stopPropagation(); try { createRoom(); } catch (error) { handleErrorMsg(errorMsg); } }; const handleErrorMsg = (errorMsg) => { setErrorMsg(errorMsg); setShowError(true); }; const createRoom = async () => { const data = { username, title, playbackURL, role: 'host', }; sessionStorage.setItem(`chime[${title}]`, JSON.stringify(data)); history.push(`${baseHref}/meeting?room=${title}`); }; const createRoomDisabled = !username || !title || !playbackURL; return (

Amazon IVS with ChimeSDK

Create or join rooms, and watch Amazon IVS streams with anyone.

Get started

{showError && ( showError(false)} errorMsg={errorMsg} /> )}
); }; Welcome.propTypes = { history: PropTypes.object, location: PropTypes.object, }; export default withRouter(Welcome);