import { Divider, Modal, Radio, Select } from "antd"; import React, { useEffect, useState } from "react"; import toast from "react-hot-toast"; import { useAuth } from "../../contexts/authContext"; import { ShowModalType, useKeyboardContext, } from "../../contexts/keyboardContext"; import { useTeamDashboardContext } from "../../contexts/teamDashboardContext"; import Room, { RoomType } from "../../models/room"; import RoomService from "../../services/roomService"; const { Option } = Select; const thisModalType = ShowModalType.createRoom; const roomService = new RoomService(); export default function CreateRoomModal() { const { currUser } = useAuth(); const { teamUsers, team } = useTeamDashboardContext(); const { pastedLink, handleModalType, showModalType } = useKeyboardContext(); useEffect(() => { // todo: check if link is valid google meet link? again? setRoomLink(pastedLink); }, [pastedLink]); const handleCloseModal = () => { handleModalType(ShowModalType.na); }; const handleSubmit = async (e) => { e.preventDefault(); // make sure link, room, and type are selected if (!roomLink || !roomName) { toast.error("Please fill in room link and name."); return; } try { const newRoom = new Room(); if (roomAttachment) { newRoom.attachments = [roomAttachment]; } newRoom.approximateDateTime = roomAppxDateTime; newRoom.link = roomLink; newRoom.members = [...membersSelected, currUser.uid]; // add currUser to the list of "people" newRoom.type = roomType; newRoom.description = roomDescription; newRoom.name = roomName; newRoom.createdByUserId = currUser.uid; newRoom.teamId = team.id; await roomService.createRoom(newRoom); resetForm(); toast.success("created room"); handleModalType(ShowModalType.na); } catch (error) { toast.error("problem creating room"); console.log(error); } }; function resetForm() { setRoomLink(""); setRoomName(""); setRoomDescription(""); setMembersSelected([] as string[]); setRoomAttachment(""); setRoomAppxDateTime(""); setRoomType(RoomType.now); } const [roomLink, setRoomLink] = useState(pastedLink); const [roomName, setRoomName] = useState(""); const [roomDescription, setRoomDescription] = useState(""); const [roomAttachment, setRoomAttachment] = useState(""); const [membersSelected, setMembersSelected] = useState([]); const [roomType, setRoomType] = useState(RoomType.now); const [roomAppxDateTime, setRoomAppxDateTime] = useState(""); // for certain room types function handleSelectMember(value) { // passed in array of selections...userIds setMembersSelected(value); console.log(value); } const MemberSelection = () => { return ( ); }; return (
1. Link {roomLink ? ( Please make sure this is valid so that your team can join properly. ) : ( Click here to create one. )} setRoomLink(e.target.value)} /> 2. Room Name Be specific enough, everyone down the hall will see this. setRoomName(e.target.value)} /> {/* room type selection */} 3. Type setRoomType(event.target.value)} > {RoomType.now} {RoomType.scheduled} {RoomType.recurring} {roomType == RoomType.recurring || roomType == RoomType.scheduled ? ( Approximate day/time Put a rough day/time that makes sense to you. setRoomAppxDateTime(e.target.value)} /> ) : ( <> )} People Optional - Add anyone you want or just tell them later. {MemberSelection()} Agenda Optional setRoomDescription(e.target.value)} /> Attachment Optional - ppt, meeting notes... setRoomAttachment(e.target.value)} />
); }