From 54c7100c2c126ba18f8761df1eba6d0125bca3fb Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Thu, 26 Mar 2020 12:24:52 +1100 Subject: [PATCH] Removed video and added text --- package.json | 3 +- src/components/AddPartyMemberButton.js | 4 +- src/components/GameViewSwitch.js | 106 --------- src/components/Message.js | 18 ++ src/components/Party.js | 142 ++++++------ src/components/PartyVideo.js | 23 -- src/helpers/monsters.js | 300 +++++++++++++++++++++++++ src/helpers/useSession.js | 94 +------- src/routes/Game.js | 69 +++--- src/routes/Home.js | 6 +- src/routes/Join.js | 3 +- src/theme.js | 34 ++- yarn.lock | 5 + 13 files changed, 469 insertions(+), 338 deletions(-) delete mode 100644 src/components/GameViewSwitch.js create mode 100644 src/components/Message.js delete mode 100644 src/components/PartyVideo.js create mode 100644 src/helpers/monsters.js diff --git a/package.json b/package.json index d6cdc78..584c20c 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "react-modal": "^3.11.2", "react-scripts": "3.4.0", "shortid": "^2.2.15", - "theme-ui": "^0.3.1" + "theme-ui": "^0.3.1", + "uuid": "^7.0.2" }, "scripts": { "predeploy": "yarn build", diff --git a/src/components/AddPartyMemberButton.js b/src/components/AddPartyMemberButton.js index a3584c7..1696b59 100644 --- a/src/components/AddPartyMemberButton.js +++ b/src/components/AddPartyMemberButton.js @@ -3,7 +3,7 @@ import { IconButton, Flex, Box, Label, Text } from "theme-ui"; import Modal from "./Modal"; -function AddPartyMemberButton({ streamId }) { +function AddPartyMemberButton({ peerId }) { const [isAddModalOpen, setIsAddModalOpen] = useState(false); function openModal() { setIsAddModalOpen(true); @@ -32,7 +32,7 @@ function AddPartyMemberButton({ streamId }) { - {streamId} + {peerId} diff --git a/src/components/GameViewSwitch.js b/src/components/GameViewSwitch.js deleted file mode 100644 index 5837935..0000000 --- a/src/components/GameViewSwitch.js +++ /dev/null @@ -1,106 +0,0 @@ -import React from "react"; -import { Flex, IconButton } from "theme-ui"; - -function SocialIcon() { - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - ); -} - -function EncounterIcon() { - return ( - - - - - - - ); -} - -function GameViewSwitch({ view, onViewChange }) { - return ( - - onViewChange("social")} - > - - - onViewChange("encounter")} - > - - - - ); -} - -export default GameViewSwitch; diff --git a/src/components/Message.js b/src/components/Message.js new file mode 100644 index 0000000..d01d15c --- /dev/null +++ b/src/components/Message.js @@ -0,0 +1,18 @@ +import React from "react"; +import { Box, Text, Flex } from "theme-ui"; + +function Message({ message }) { + const timeFormatted = new Date(message.time).toLocaleTimeString("en-US"); + + return ( + + + {message.nickname} + {/* {timeFormatted} */} + + {message.text} + + ); +} + +export default Message; diff --git a/src/components/Party.js b/src/components/Party.js index 2a27901..e350512 100644 --- a/src/components/Party.js +++ b/src/components/Party.js @@ -1,78 +1,80 @@ -import React from "react"; +import React, { useState } from "react"; +import { Flex, Box, Input, Text } from "theme-ui"; +import { v4 as uuid } from "uuid"; -import { Flex, Box } from "theme-ui"; - -import PartyVideo from "./PartyVideo"; import AddPartyMemberButton from "./AddPartyMemberButton"; -import GameViewSwitch from "./GameViewSwitch"; +import Message from "./Message"; -function Party({ streams, localStreamId, view, onViewChange }) { - if (view === "social") { - return ( - - - {Object.entries(streams).map(([id, stream]) => ( - - - - ))} - - - - - - - - - ); - } else if (view === "encounter") { - return ( - - {Object.entries(streams).map(([id, stream]) => ( - - - - ))} - - - - - - - - ); +import { getRandomMonster } from "../helpers/monsters"; + +function Party({ peerId, messages, onMessageSend }) { + const [messageText, setMessageText] = useState(""); + const [nickname, setNickname] = useState(getRandomMonster()); + + function handleMessageSubmit(event) { + event.preventDefault(); + if (!messageText || !peerId) { + return; + } + const id = uuid(); + const time = Date.now(); + const message = { + nickname, + id, + text: messageText, + time + }; + onMessageSend(message); + setMessageText(""); } - return null; + return ( + + + + + + {Object.values(messages) + .sort((a, b) => a.time - b.time) + .map(message => ( + + ))} + + setMessageText(event.target.value)} + p={1} + disabled={!peerId} + /> + + + {nickname} + + + + ); } -Party.defaultProps = { view: "social" }; - export default Party; diff --git a/src/components/PartyVideo.js b/src/components/PartyVideo.js deleted file mode 100644 index 83bef85..0000000 --- a/src/components/PartyVideo.js +++ /dev/null @@ -1,23 +0,0 @@ -import React, { useRef, useEffect } from "react"; - -function PartyVideo({ stream, muted }) { - const videoRef = useRef(); - - useEffect(() => { - if (videoRef.current) { - videoRef.current.srcObject = stream; - } - }, [stream]); - - return ( -