Use form elements and add submit handlers in chat, haircheck and the prejoin screen

This commit is contained in:
harshithpabbati 2022-02-08 14:43:21 +05:30
parent d735fb4e62
commit c683302ce3
3 changed files with 73 additions and 60 deletions

View File

@ -35,44 +35,49 @@ export const Intro = ({
}, [room]); }, [room]);
return ( return (
<Card> <form onSubmit={(e) => {
<CardHeader>{title}</CardHeader> e.preventDefault();
<CardBody> onJoin(roomName, owner, fetchToken);
{error && ( }}>
<Well variant="error"> <Card>
Failed to obtain token <p>{error}</p> <CardHeader>{title}</CardHeader>
</Well> <CardBody>
)} {error && (
<Field label="Enter room to join"> <Well variant="error">
<TextInput Failed to obtain token <p>{error}</p>
type="text" </Well>
prefix={`${domain}.daily.co/`} )}
placeholder="Room name" <Field label="Enter room to join">
defaultValue={roomName} <TextInput
onChange={(e) => setRoomName(e.target.value)} type="text"
required prefix={`${domain}.daily.co/`}
/> placeholder="Room name"
</Field> defaultValue={roomName}
{!forceFetchToken && ( onChange={(e) => setRoomName(e.target.value)}
<Field label="Fetch meeting token"> required
<BooleanInput onChange={(e) => setFetchToken(e.target.checked)} /> />
</Field> </Field>
)} {!forceFetchToken && (
{fetchToken && !forceOwner && ( <Field label="Fetch meeting token">
<Field label="Join as owner"> <BooleanInput onChange={(e) => setFetchToken(e.target.checked)} />
<BooleanInput onChange={(e) => setOwner(e.target.checked)} /> </Field>
</Field> )}
)} {fetchToken && !forceOwner && (
</CardBody> <Field label="Join as owner">
<CardFooter divider> <BooleanInput onChange={(e) => setOwner(e.target.checked)} />
<Button </Field>
onClick={() => onJoin(roomName, owner, fetchToken)} )}
disabled={!roomName || fetching} </CardBody>
> <CardFooter divider>
{fetching ? 'Fetching token...' : 'Join meeting'} <Button
</Button> type="submit"
</CardFooter> disabled={!roomName || fetching}
</Card> >
{fetching ? 'Fetching token...' : 'Join meeting'}
</Button>
</CardFooter>
</Card>
</form>
); );
}; };

View File

@ -30,7 +30,7 @@ import { useDeepCompareMemo } from 'use-deep-compare';
* - Set user name and join call / request access * - Set user name and join call / request access
*/ */
export const HairCheck = () => { export const HairCheck = () => {
const { callObject, join } = useCallState(); const { callObject } = useCallState();
const { localParticipant } = useParticipants(); const { localParticipant } = useParticipants();
const { const {
deviceState, deviceState,
@ -167,13 +167,13 @@ export const HairCheck = () => {
/> />
<Button <Button
disabled={joining || userName.length < 3} disabled={joining || userName.length < 3}
onClick={() => joinCall(userName)} type="submit"
> >
Join call Join call
</Button> </Button>
</> </>
); );
}, [userName, joinCall, joining, setUserName]); }, [userName, joining, setUserName]);
return ( return (
<> <>
@ -222,7 +222,12 @@ export const HairCheck = () => {
</div> </div>
{tileMemo} {tileMemo}
</div> </div>
<footer>{waiting ? showWaitingMessage : showUsernameInput}</footer> <form onSubmit={(e) => {
e.preventDefault();
joinCall(userName);
}}>
<footer>{waiting ? showWaitingMessage : showUsernameInput}</footer>
</form>
</div> </div>
<style jsx>{` <style jsx>{`

View File

@ -57,25 +57,28 @@ export const ChatAside = () => {
</div> </div>
))} ))}
</div> </div>
<footer className="chat-footer"> <form onSubmit={(e) => {
<TextInput e.preventDefault();
value={newMessage} sendMessage(newMessage);
placeholder="Type message here" setNewMessage('');
variant="transparent" }}>
onChange={(e) => setNewMessage(e.target.value)} <footer className="chat-footer">
/> <TextInput
<Button value={newMessage}
className="send-button" placeholder="Type message here"
variant="transparent" variant="transparent"
disabled={!newMessage} onChange={(e) => setNewMessage(e.target.value)}
onClick={() => { />
sendMessage(newMessage); <Button
setNewMessage(''); className="send-button"
}} variant="transparent"
> disabled={!newMessage}
Send type="submit"
</Button> >
</footer> Send
</Button>
</footer>
</form>
<style jsx>{` <style jsx>{`
.messages-container { .messages-container {
flex: 1; flex: 1;