Eric Whale

Build UserRoom page

...@@ -22,10 +22,17 @@ ...@@ -22,10 +22,17 @@
22 "eject": "react-scripts eject" 22 "eject": "react-scripts eject"
23 }, 23 },
24 "eslintConfig": { 24 "eslintConfig": {
25 - "extends": ["react-app", "react-app/jest"] 25 + "extends": [
26 + "react-app",
27 + "react-app/jest"
28 + ]
26 }, 29 },
27 "browserslist": { 30 "browserslist": {
28 - "production": [">0.2%", "not dead", "not op_mini all"], 31 + "production": [
32 + ">0.2%",
33 + "not dead",
34 + "not op_mini all"
35 + ],
29 "development": [ 36 "development": [
30 "last 1 chrome version", 37 "last 1 chrome version",
31 "last 1 firefox version", 38 "last 1 firefox version",
......
1 -function UserBox() { 1 +import "../styles/box.scss";
2 - return <div>UserBox</div>; 2 +
3 +function UserBox({ user }) {
4 + return (
5 + <div className="userBox">
6 + <h1>{user.username}</h1>
7 + <p>user info</p>
8 + <div>chat!</div>
9 + </div>
10 + );
3 } 11 }
4 12
5 export default UserBox; 13 export default UserBox;
......
...@@ -8,13 +8,15 @@ import Signup from "./routes/signup"; ...@@ -8,13 +8,15 @@ import Signup from "./routes/signup";
8 import Login from "./routes/login"; 8 import Login from "./routes/login";
9 import Userroom from "./routes/userroom"; 9 import Userroom from "./routes/userroom";
10 import Settings from "./routes/settings"; 10 import Settings from "./routes/settings";
11 +// styles
12 +import "./styles/layout.scss";
11 13
12 const root = ReactDOM.createRoot(document.getElementById("root")); 14 const root = ReactDOM.createRoot(document.getElementById("root"));
13 15
14 root.render( 16 root.render(
15 <BrowserRouter> 17 <BrowserRouter>
16 <Routes> 18 <Routes>
17 - <Route path="/" element={<App />} /> // App = chatroom 19 + <Route path="/" element={<App />} />
18 <Route path="/login" element={<Login />} /> 20 <Route path="/login" element={<Login />} />
19 <Route path="/signup" element={<Signup />} /> 21 <Route path="/signup" element={<Signup />} />
20 <Route path="/userroom" element={<Userroom />} /> 22 <Route path="/userroom" element={<Userroom />} />
......
1 +import { Link } from "react-router-dom";
1 import { useState } from "react"; 2 import { useState } from "react";
2 // lib 3 // lib
3 -import { handleLogin } from "../lib/auth"; 4 +import { handleLogin } from "../service/auth";
4 -// styles
5 -import { Link } from "react-router-dom";
6 -import "../styles/layout.scss";
7 5
8 function Login() { 6 function Login() {
9 const [email, setEmail] = useState(""); 7 const [email, setEmail] = useState("");
......
1 import { Link } from "react-router-dom"; 1 import { Link } from "react-router-dom";
2 -// styles
3 -import "../styles/layout.scss";
4 2
5 function Signup() { 3 function Signup() {
6 const handleSubmit = (e) => { 4 const handleSubmit = (e) => {
......
1 +import axios from "axios";
2 +import { useState, useEffect } from "react";
1 // components 3 // components
2 import Bottombar from "../components/Bottombar"; 4 import Bottombar from "../components/Bottombar";
3 import Topbar from "../components/Topbar"; 5 import Topbar from "../components/Topbar";
4 import UserBox from "../components/UserBox"; 6 import UserBox from "../components/UserBox";
5 7
6 -function Userroom() { 8 +const Userroom = () => {
9 + const [users, setUsers] = useState(null);
10 +
11 + useEffect(() => {
12 + axios.get("/api/users/all/").then((response) => {
13 + setUsers(response.data);
14 + });
15 + }, []);
16 +
17 + if (!users) return null;
18 +
7 return ( 19 return (
8 <div> 20 <div>
9 <Topbar /> 21 <Topbar />
10 <h1>User Room</h1> 22 <h1>User Room</h1>
23 +
11 <div> 24 <div>
12 - <UserBox /> 25 + {Array.isArray(users)
13 - <UserBox /> 26 + ? users.map((user, i) => {
14 - <UserBox /> 27 + return <UserBox key={i} user={user} />;
15 - <UserBox /> 28 + })
29 + : ""}
16 </div> 30 </div>
31 +
17 <Bottombar /> 32 <Bottombar />
18 </div> 33 </div>
19 ); 34 );
20 -} 35 +};
21 36
22 export default Userroom; 37 export default Userroom;
......
...@@ -2,4 +2,21 @@ ...@@ -2,4 +2,21 @@
2 .bottombar { 2 .bottombar {
3 display: flex; 3 display: flex;
4 flex-direction: row; 4 flex-direction: row;
5 + align-items: center;
6 + font-size: 1.3rem;
7 +
8 + a {
9 + font-size: 2rem;
10 + }
11 +
12 + * {
13 + padding: 0.3rem 0.5rem;
14 + }
15 +}
16 +
17 +.topbar {
18 + margin-bottom: 0.5rem;
19 +}
20 +.bottombar {
21 + margin-top: 0.5rem;
5 } 22 }
......
1 +.userBox,
2 +.chatBox {
3 + margin: 0.3rem 1rem;
4 + border: 0.2rem black solid;
5 + border-radius: 10px;
6 +}
7 +
8 +.userBox {
9 + display: flex;
10 + flex-direction: row;
11 + justify-content: flex-start;
12 + align-items: center;
13 +
14 + * {
15 + padding: 0.3rem 0.5rem;
16 + }
17 +}
1 +* {
2 + margin: 0;
3 + padding: 0;
4 +}
5 +
1 .container { 6 .container {
2 display: flex; 7 display: flex;
3 flex-direction: column; 8 flex-direction: column;
......