diff --git a/frontend-next/src/app/app/page.js b/frontend-next/src/app/app/page.js index 24ec274..3bd19ae 100644 --- a/frontend-next/src/app/app/page.js +++ b/frontend-next/src/app/app/page.js @@ -1,12 +1,12 @@ "use client"; // System Imports import { useState, useEffect } from "react"; -import { auth, database } from "../api/firebase-config"; +import { auth, database } from "../../firebase-config"; import { ref, onValue, set, remove, get } from "firebase/database"; import { useBeforeunload } from "react-beforeunload"; -import {useRouter} from "next/navigation"; import {Marker} from "pigeon-maps"; -import {onAuthStateChanged, signOut} from "firebase/auth" +import {onAuthStateChanged} from "firebase/auth" +import { useSearchParams } from 'next/navigation' // Refactored Component Imports // Data Structure Imports @@ -45,6 +45,17 @@ function Home() { const [markers, setMarkers] = useState([]); const [isAuthenticated, setAuth] = useState(false) const [user, setUser] = useState(null) + const [usingSearchParams, setUsingSearchParams] = useState(true) + + const searchParams = useSearchParams() + var roomSwitch = null + if (searchParams.has("room") && usingSearchParams && user) { + roomSwitch = searchParams.get("room") + setUsingSearchParams(false) + get(ref(database, `rooms/${searchParams.get("room")}`)).then((snapshot) => { + selectChatRoom(snapshot.val()) + }); + } // Authentication useEffect(() => { @@ -53,7 +64,6 @@ function Home() { get(ref(database, `users/${user.uid}`)) .then((userData) => { userData = userData.val() - console.log(userData) if (userData) { setUser(userData) setAuth(true) @@ -140,7 +150,6 @@ function Home() { } },[user]); - // Dont Double Send Leaving Message useEffect(() => { if (myRoomsObj && chatRoomObj) { @@ -196,10 +205,6 @@ function Home() { } // Users who added to "my rooms" - console.log( - snapshot.val().hasOwnProperty("users") && - snapshot.val().users.hasOwnProperty("all") - ); if ( snapshot.val().hasOwnProperty("users") && snapshot.val().users.hasOwnProperty("all") diff --git a/frontend-next/src/app/login/page.js b/frontend-next/src/app/login/page.js index a544c89..a455b92 100644 --- a/frontend-next/src/app/login/page.js +++ b/frontend-next/src/app/login/page.js @@ -4,8 +4,8 @@ import { useRouter } from "next/navigation"; import "../globals.css" // Firebase imports -import {auth} from "../api/firebase-config"; -import { setPersistence, signInWithEmailAndPassword, browserSessionPersistence } from "firebase/auth"; +import {auth} from "../../firebase-config"; +import { setPersistence, signInWithEmailAndPassword, indexedDBLocalPersistence } from "firebase/auth"; function Login() { var router = useRouter(); @@ -13,7 +13,7 @@ function Login() { var { register, control, setError, handleSubmit, formState: { errors, isSubmitting, isSubmitted } } = useForm() function authenticate(data) { - setPersistence(auth, browserSessionPersistence) + setPersistence(auth, indexedDBLocalPersistence) .then(() => { signInWithEmailAndPassword(auth,data.email,data.password) .then((userCredential) => { @@ -45,7 +45,7 @@ function Login() { >

-
+
Have an account? Log In diff --git a/frontend-next/src/app/user/[stub]/layout.js b/frontend-next/src/app/user/[stub]/layout.js index ba13310..94d85e5 100644 --- a/frontend-next/src/app/user/[stub]/layout.js +++ b/frontend-next/src/app/user/[stub]/layout.js @@ -4,7 +4,7 @@ import "../../globals.css"; const inter = Inter({ subsets: ["latin"] }); export const metadata = { - title: "ChatMaps: Home", + title: "ChatMaps: User Profile", description: "ChatMaps: Social Media for College Students", }; diff --git a/frontend-next/src/app/user/[stub]/page.js b/frontend-next/src/app/user/[stub]/page.js index 29c9b21..0528bb3 100644 --- a/frontend-next/src/app/user/[stub]/page.js +++ b/frontend-next/src/app/user/[stub]/page.js @@ -1,14 +1,15 @@ "use client"; // System Imports import { useState, useEffect } from "react"; -import { auth, database } from "../../api/firebase-config"; -import { ref, onValue, get } from "firebase/database"; +import { auth, database } from "../../../firebase-config"; +import { ref, onValue, get, set, update } from "firebase/database"; import {Marker} from "pigeon-maps"; import {onAuthStateChanged} from "firebase/auth" +import { useForm, Form } from "react-hook-form"; // Refactored Component Imports // Data Structure Imports - import { Interest } from "../../../components/app/datatypes"; + import { Interest, ProfileRoom } from "../../../components/app/datatypes"; // Header Import import { Header } from "../../../components/app/header"; @@ -17,13 +18,15 @@ import { Header } from "../../../components/app/header"; function Home({ params }) { // It's time to document and change these awful variable names // State variables for app page - const [myRoomsObj, setMyRoomsObj] = useState(null); // My Rooms Object const [profileData, setProfileData] = useState(null) const [isAuthenticated, setAuth] = useState(false) const [user, setUser] = useState(null) const [userInterestArray, setUserInterestArray] = useState(null) - + const [userRoomsArray, setUserRoomsArray] = useState(null) const [isOwner, setOwn] = useState(false) + const [isEditing, setEdit] = useState(false) + + var { register, control, setError, handleSubmit, formState: { errors, isSubmitting, isSubmitted } } = useForm() // Authentication useEffect(() => { @@ -65,10 +68,25 @@ function Home({ params }) { } setUserInterestArray(interestArray) var rooms = snapshot.val().rooms; - setMyRoomsObj(rooms); + var roomArray = [] + for (var room in rooms) { + roomArray.push() + } + setUserRoomsArray(roomArray); }); },[]); + function save({data}) { + for (var key in data) { + if (data[key] == "") { + data[key] = profileData[key] + } + } + console.log(data) + setEdit(false) + update(ref(database, `users/${user.uid}`), data) + } + return (
{isAuthenticated && ( @@ -80,23 +98,67 @@ function Home({ params }) { {/* Main Page Section */}
-
- -
- {profileData.firstName} {profileData.lastName} -
-
@{profileData.username}
-
{profileData.bio}
-
- {userInterestArray} -
-
- {isOwner && ( Edit Profile )} - {!isOwner && ( Add Friend )} -
+
+ {!isEditing && ( +
+ +
+ {profileData.firstName} {profileData.lastName} +
+
@{profileData.username}
+
{profileData.bio}
+
+ {userInterestArray} +
+ +
+ )} + {isEditing && ( +
+
+
+
+ + Current Profile Picture +
+
+ +
+
+
First Name
+ +
+
+
Last Name
+ +
+
+
Username
+ +
+
+
Interests (Comma Seperated)
+ +
+
+
Bio
+