location.href = "/chat?room=" + roomObj.path + "/" + roomObj.name + "-" + roomObj.timestamp}
className="border-[black] border-1 shadow-lg p-2 m-2 rounded-lg cursor-pointer"
>
diff --git a/frontend-next/src/components/app/header.js b/frontend-next/src/components/app/header.js
index 5cd8b9c..f6605f7 100644
--- a/frontend-next/src/components/app/header.js
+++ b/frontend-next/src/components/app/header.js
@@ -3,12 +3,13 @@ import { ref, set, remove } from "firebase/database";
import { signOut } from "firebase/auth";
import { Popover } from "@headlessui/react";
+
function logout() {
signOut(auth);
}
// Closes chat room
-function closeChatRoom(roomObj, setChatRoomObj, setMainTab, user) {
+function closeChatRoom(roomObj, user) {
var path = roomObj.path + "/" + roomObj.name + "-" + roomObj.timestamp;
var payload = {
body: "left",
@@ -25,12 +26,11 @@ function closeChatRoom(roomObj, setChatRoomObj, setMainTab, user) {
payload
);
remove(ref(database, `/rooms/${path}/users/online/${user.uid}`));
- setChatRoomObj(null);
- setMainTab("home");
+ location.href = "/app";
}
// Adds room to myRooms
-function addToMyRooms(chatRoomObj, setIsMyRoom, user) {
+function addToMyRooms(chatRoomObj, user) {
set(
ref(
database,
@@ -48,11 +48,10 @@ function addToMyRooms(chatRoomObj, setIsMyRoom, user) {
var path =
chatRoomObj.path + "/" + chatRoomObj.name + "-" + chatRoomObj.timestamp;
set(ref(database, `/rooms/${path}/users/all/${user.uid}`), user);
- setIsMyRoom(true);
}
// Deletes saved room from myRooms
-function removeFromMyRooms(chatRoomObj, setIsMyRoom, user) {
+function removeFromMyRooms(chatRoomObj, user) {
var path =
chatRoomObj.path + "/" + chatRoomObj.name + "-" + chatRoomObj.timestamp;
remove(
@@ -62,18 +61,25 @@ function removeFromMyRooms(chatRoomObj, setIsMyRoom, user) {
)
);
remove(ref(database, `/rooms/${path}/users/all/${user.uid}`));
- setIsMyRoom(false);
}
export function Header({
mainTab,
- isMyRoom,
chatRoomObj,
- setChatRoomObj,
- setMainTab,
- setIsMyRoom,
user,
}) {
+
+ if (mainTab == "chat") {
+ var roomName = chatRoomObj.name + "-" + chatRoomObj.timestamp;
+ if (user.rooms != null && roomName in user.rooms) {
+ // its in there
+ var isMyRoom = true;
+ } else {
+ // its not in there
+ var isMyRoom = false;
+ }
+
+ }
return (
@@ -85,7 +91,8 @@ export function Header({
{mainTab == "chat" && isMyRoom == false && (
{
- addToMyRooms(chatRoomObj, setIsMyRoom, user);
+ addToMyRooms(chatRoomObj, user);
+
}}
className="p-2 cursor-pointer bg-cyan-500 text-white font-bold rounded-full mr-5 flex items-center"
>
@@ -95,7 +102,8 @@ export function Header({
{mainTab == "chat" && isMyRoom == true && (
{
- removeFromMyRooms(chatRoomObj, setIsMyRoom, user);
+ removeFromMyRooms(chatRoomObj, user);
+
}}
className="p-2 cursor-pointer bg-cyan-500 text-white font-bold rounded-full mr-5 flex items-center"
>
@@ -105,7 +113,7 @@ export function Header({
{mainTab == "chat" && (
{
- closeChatRoom(chatRoomObj, setChatRoomObj, setMainTab, user);
+ closeChatRoom(chatRoomObj, user);
}}
className="p-2 cursor-pointer bg-cyan-500 text-white font-bold rounded-full mr-5 flex items-center"
>
diff --git a/frontend-next/src/components/app/main_tab/chat.js b/frontend-next/src/components/app/main_tab/chat.js
index 5559f77..28d6cae 100644
--- a/frontend-next/src/components/app/main_tab/chat.js
+++ b/frontend-next/src/components/app/main_tab/chat.js
@@ -1,49 +1,34 @@
import { Chat, SystemMessage } from "../datatypes";
-import { useState, useEffect } from "react";
+import { useState } from "react";
import { Form, useForm } from "react-hook-form";
-import { ref, onValue, set } from "firebase/database";
+import { ref, set } from "firebase/database";
import { database } from "../../../../firebase-config";
// Chatroom Module for Primary Tab
export function MainTabChatRoom({ roomObj, user }) {
var { register, control, reset, handleSubmit } = useForm();
- const [chats, setData] = useState(null);
- const [isLoading, setLoading] = useState(true);
// Message updater
- useEffect(() => {
- onValue(
- ref(
- database,
- `/rooms/${
- roomObj.path + "/" + roomObj.name + "-" + roomObj.timestamp
- }/chats`
- ),
- (snapshot) => {
- var chatsArr = [];
- var messages = snapshot.val();
- for (var message in messages) {
- if (messages[message].isSystem) {
- chatsArr.push(
-
- );
- } else {
- chatsArr.push(
-
- );
- }
- }
- setData(chatsArr.reverse());
- setLoading(false);
- }
- );
- });
+ var chatsArr = [];
+ var messages = roomObj.chats;
+ for (var message in messages) {
+ if (messages[message].isSystem) {
+ chatsArr.push(
+
+ );
+ } else {
+ chatsArr.push(
+
+ );
+ }
+ }
+ var chats = chatsArr.reverse();
function sendMessage(data) {
reset();
@@ -65,7 +50,6 @@ export function MainTabChatRoom({ roomObj, user }) {
);
}
- if (isLoading) return Loading
;
if (!chats) return No Chats
;
return (
diff --git a/frontend-next/src/components/app/notifications/notifications.js b/frontend-next/src/components/app/notifications/notifications.js
new file mode 100644
index 0000000..e69de29
diff --git a/frontend-next/src/components/app/profile/ProfileRoom.js b/frontend-next/src/components/app/profile/ProfileRoom.js
index 269c6e6..80e6268 100644
--- a/frontend-next/src/components/app/profile/ProfileRoom.js
+++ b/frontend-next/src/components/app/profile/ProfileRoom.js
@@ -20,7 +20,7 @@ export function ProfileRoom({ room }) {
diff --git a/frontend-next/src/components/app/sidebar/chat.js b/frontend-next/src/components/app/sidebar/chat.js
index 36660c9..bb3f25d 100644
--- a/frontend-next/src/components/app/sidebar/chat.js
+++ b/frontend-next/src/components/app/sidebar/chat.js
@@ -1,12 +1,34 @@
import { Geo } from "../map/geo";
+import { Member } from "../datatypes"
+
// Sidebar when in a Chatrooms
export function Chat_Sidebar({
chatRoomObj,
- chatroomOnline,
- chatroomUsersLoading,
- chatroomUsers,
}) {
+ // Active users list
+ if (
+ chatRoomObj.hasOwnProperty("users") &&
+ chatRoomObj.users.hasOwnProperty("online")
+ ) {
+ var activeUsers = [];
+ var activeUsersJSON = chatRoomObj.users.online;
+ for (var user in activeUsersJSON)
+ activeUsers.push();
+ var chatroomOnline = activeUsers
+ }
+
+ // Users who added to "my rooms"
+ if (
+ chatRoomObj.hasOwnProperty("users") &&
+ chatRoomObj.users.hasOwnProperty("all")
+ ) {
+ var allUsers = [];
+ var allUsersJSON = chatRoomObj.users.all;
+ for (var user in allUsersJSON)
+ allUsers.push();
+ var chatroomUsers = allUsers
+ }
return (
@@ -34,7 +56,7 @@ export function Chat_Sidebar({
All Members
- {!chatroomUsersLoading && chatroomUsers}
+ {chatroomUsers}
diff --git a/frontend-next/src/components/app/sidebar/home.js b/frontend-next/src/components/app/sidebar/home.js
index 97c9ba1..dbfce0b 100644
--- a/frontend-next/src/components/app/sidebar/home.js
+++ b/frontend-next/src/components/app/sidebar/home.js
@@ -1,7 +1,9 @@
import { Form, useForm } from "react-hook-form";
import { database } from "../../../../firebase-config";
-import { ref, set } from "firebase/database";
+import { ref, set, get } from "firebase/database";
+import { useEffect, useState } from "react";
+import { ChatRoomSidebar } from "../datatypes";
// Sidebar on Home Page, with various functionality (create, nearby, my rooms)
// CreateRoom Module for Sidebar Create Tab
@@ -49,15 +51,50 @@ function CreateRoom({ loc }) {
}
export function Home_Sidebar({
- tab,
- nearby,
- loadingNearby,
- setTab,
- isRoomLoading,
- myRooms,
- loadingLoc,
+ user,
location,
+ loadingLoc
}) {
+ const [tab, setTab] = useState("rooms");
+ const [nearbyArr, setNearbyArr] = useState([])
+ const [nearbyArrReady, setNearbyArrReady] = useState(false)
+
+ // Add myRooms to Sidebar
+ var myRoomArr = [];
+ for (var room in user.rooms) {
+ var newRoom = (
+
+ );
+ myRoomArr.push(newRoom);
+ }
+
+ useEffect(() => {
+ var nearbyArr = []
+ if (location) {
+ var path = String(location.latitude.toFixed(2)).replace(".", "") + "/" + String(location.longitude.toFixed(2)).replace(".", "");
+ get(ref(database, `/rooms/${path}`)).then((snapshot) => {
+ // Add nearby to Sidebar
+ if (snapshot.exists()) {
+ var rooms = snapshot.val()
+ for (var room in rooms) {
+ var newRoom = (
+
+ );
+ nearbyArr.push(newRoom);
+ }
+ }
+ setNearbyArr(nearbyArr)
+ setNearbyArrReady(true)
+ })
+ }
+ }, [location])
+
return (
@@ -104,24 +141,23 @@ export function Home_Sidebar({
{tab == "nearby" && (
- {!nearby && !loadingNearby && (
+ {!nearbyArr && !loadingLoc && (
No Nearby Rooms
Create One?
)}
- {loadingNearby &&
Loading...
}
- {nearby}
+ {loadingLoc &&
Loading...
}
+ {nearbyArrReady && nearbyArr}
)}
{tab == "rooms" && (
- {isRoomLoading &&
Loading
}
- {!myRooms && !isRoomLoading &&
No User Saved Rooms
}
- {myRooms}
+ {!myRoomArr &&
No User Saved Rooms
}
+ {myRoomArr}
)}
diff --git a/frontend-next/src/components/app/sidebar/profile.js b/frontend-next/src/components/app/sidebar/profile.js
deleted file mode 100644
index 593a4a6..0000000
--- a/frontend-next/src/components/app/sidebar/profile.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export function Profile_Sidebar() {
- return (
-
- );
-}