diff --git a/src/layout/Footer.jsx b/src/layout/Footer.jsx
index 954549f..cf6a8a4 100644
--- a/src/layout/Footer.jsx
+++ b/src/layout/Footer.jsx
@@ -1,42 +1,21 @@
-import { Box, Grid, GridItem } from "@chakra-ui/react";
+import { Box, Grid, GridItem, Link, IconButton } from "@chakra-ui/react";
import { FaGithub, FaTwitter } from "react-icons/fa";
import MessageForm from "../components/MessageForm";
+
export default function Footer() {
return (
-
+
-
-
-
- {/* Built by{" "} */}
- {/* */}
-
-
- @shwosner
-
-
-
-
- Source code
-
-
-
+
+
);
}
diff --git a/src/layout/Header.jsx b/src/layout/Header.jsx
index e775274..b8c7a13 100644
--- a/src/layout/Header.jsx
+++ b/src/layout/Header.jsx
@@ -1,68 +1,140 @@
-import { Button, Grid, GridItem, Image } from "@chakra-ui/react";
-import { FaGithub } from "react-icons/fa";
+import { Button, Grid, GridItem, Image, Box, Text, IconButton, Input, Stack } from "@chakra-ui/react";
+import { FaSignOutAlt } from "react-icons/fa";
+import { BiSave, BiEdit } from "react-icons/bi";
+import { useEffect, useRef, useState } from "react";
import supabase from "../supabaseClient";
-
import { useAppContext } from "../context/appContext";
-import NameForm from "./NameForm";
+
+function NameForm() {
+ const { username, setUsername } = useAppContext();
+ const [newUsername, setNewUsername] = useState(username);
+ const [isEditing, setIsEditing] = useState(false);
+ const inputRef = useRef(null);
+
+ useEffect(() => {
+ if (isEditing) {
+ inputRef.current.focus();
+ }
+ }, [isEditing]);
+
+ useEffect(() => {
+ setNewUsername(username);
+ }, [username]);
+
+ const handleSubmit = (e) => {
+ e.preventDefault();
+ setIsEditing(false);
+
+ if (!newUsername) {
+ setNewUsername(username);
+ return;
+ }
+
+ setUsername(newUsername);
+ localStorage.setItem("username", newUsername);
+ };
+
+ return (
+
+ );
+}
+
export default function Header() {
const { username, setUsername, randomUsername, session } = useAppContext();
return (
-
-
-
-
- {session ? (
- <>
-
- Welcome {username}
-
-
- >
- ) : (
- <>
-
+
+
+
+
+
+ {session ? (
+ <>
+
+
+ Welcome, {username}!
+
+
+
+ }
+ onClick={() => {
+ const { error } = supabase.auth.signOut();
+ if (error) return console.error("error signOut", error);
+ const username = randomUsername();
+ setUsername(username);
+ localStorage.setItem("username", username);
+ }}
+ />
+
+ >
+ ) : (
+
- }
- variant="outline"
- onClick={() =>
- supabase.auth.signInWithOAuth({
- provider: "github",
- redirectTo: window.location.origin,
- })
- }
- >
- Login
-
- >
- )}
-
+ )}
+
+
);
}
diff --git a/src/layout/NameForm.jsx b/src/layout/NameForm.jsx
index 0102467..b8c7a13 100644
--- a/src/layout/NameForm.jsx
+++ b/src/layout/NameForm.jsx
@@ -1,16 +1,14 @@
-import { useEffect, useRef, useState } from "react";
-import { Input, Stack, IconButton } from "@chakra-ui/react";
+import { Button, Grid, GridItem, Image, Box, Text, IconButton, Input, Stack } from "@chakra-ui/react";
+import { FaSignOutAlt } from "react-icons/fa";
import { BiSave, BiEdit } from "react-icons/bi";
+import { useEffect, useRef, useState } from "react";
+import supabase from "../supabaseClient";
import { useAppContext } from "../context/appContext";
-export default function NameForm() {
+function NameForm() {
const { username, setUsername } = useAppContext();
const [newUsername, setNewUsername] = useState(username);
const [isEditing, setIsEditing] = useState(false);
- const toggleEditing = () => {
- setIsEditing(!isEditing);
- };
-
const inputRef = useRef(null);
useEffect(() => {
@@ -18,61 +16,125 @@ export default function NameForm() {
inputRef.current.focus();
}
}, [isEditing]);
+
useEffect(() => {
setNewUsername(username);
}, [username]);
+
const handleSubmit = (e) => {
e.preventDefault();
- toggleEditing();
+ setIsEditing(false);
if (!newUsername) {
setNewUsername(username);
return;
}
- // setUsername(newUsername);
- // setIsEditing(false);
setUsername(newUsername);
localStorage.setItem("username", newUsername);
};
return (
-