diff --git a/client/package-lock.json b/client/package-lock.json
index 720fd9652..853ac67d0 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -28,7 +28,7 @@
"firebase": "^10.7.2",
"pullstate": "^1.25.0",
"react": "18.2.0",
- "react-native": "0.72.10",
+ "react-native": "0.72.6",
"react-native-dotenv": "^3.4.9",
"react-native-fs": "^2.20.0",
"react-native-safe-area-context": "4.6.3",
@@ -4641,19 +4641,19 @@
}
},
"node_modules/@react-native-community/cli": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-11.3.10.tgz",
- "integrity": "sha512-bIx0t5s9ewH1PlcEcuQUD+UnVrCjPGAfjhVR5Gew565X60nE+GTIHRn70nMv9G4he/amBF+Z+vf5t8SNZEWMwg==",
- "dependencies": {
- "@react-native-community/cli-clean": "11.3.10",
- "@react-native-community/cli-config": "11.3.10",
- "@react-native-community/cli-debugger-ui": "11.3.10",
- "@react-native-community/cli-doctor": "11.3.10",
- "@react-native-community/cli-hermes": "11.3.10",
- "@react-native-community/cli-plugin-metro": "11.3.10",
- "@react-native-community/cli-server-api": "11.3.10",
- "@react-native-community/cli-tools": "11.3.10",
- "@react-native-community/cli-types": "11.3.10",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-11.3.7.tgz",
+ "integrity": "sha512-Ou8eDlF+yh2rzXeCTpMPYJ2fuqsusNOhmpYPYNQJQ2h6PvaF30kPomflgRILems+EBBuggRtcT+I+1YH4o/q6w==",
+ "dependencies": {
+ "@react-native-community/cli-clean": "11.3.7",
+ "@react-native-community/cli-config": "11.3.7",
+ "@react-native-community/cli-debugger-ui": "11.3.7",
+ "@react-native-community/cli-doctor": "11.3.7",
+ "@react-native-community/cli-hermes": "11.3.7",
+ "@react-native-community/cli-plugin-metro": "11.3.7",
+ "@react-native-community/cli-server-api": "11.3.7",
+ "@react-native-community/cli-tools": "11.3.7",
+ "@react-native-community/cli-types": "11.3.7",
"chalk": "^4.1.2",
"commander": "^9.4.1",
"execa": "^5.0.0",
@@ -4671,11 +4671,11 @@
}
},
"node_modules/@react-native-community/cli-clean": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-11.3.10.tgz",
- "integrity": "sha512-g6QjW+DSqoWRHzmIQW3AH22k1AnynWuOdy2YPwYEGgPddTeXZtJphIpEVwDOiC0L4mZv2VmiX33/cGNUwO0cIA==",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-11.3.7.tgz",
+ "integrity": "sha512-twtsv54ohcRyWVzPXL3F9VHGb4Qhn3slqqRs3wEuRzjR7cTmV2TIO2b1VhaqF4HlCgNd+cGuirvLtK2JJyaxMg==",
"dependencies": {
- "@react-native-community/cli-tools": "11.3.10",
+ "@react-native-community/cli-tools": "11.3.7",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"prompts": "^2.4.0"
@@ -4877,11 +4877,11 @@
}
},
"node_modules/@react-native-community/cli-config": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-11.3.10.tgz",
- "integrity": "sha512-YYu14nm1JYLS6mDRBz78+zDdSFudLBFpPkhkOoj4LuBhNForQBIqFFHzQbd9/gcguJxfW3vlYSnudfaUI7oGLg==",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-11.3.7.tgz",
+ "integrity": "sha512-FDBLku9xskS+bx0YFJFLCmUJhEZ4/MMSC9qPYOGBollWYdgE7k/TWI0IeYFmMALAnbCdKQAYP5N29N55Tad8lg==",
"dependencies": {
- "@react-native-community/cli-tools": "11.3.10",
+ "@react-native-community/cli-tools": "11.3.7",
"chalk": "^4.1.2",
"cosmiconfig": "^5.1.0",
"deepmerge": "^4.3.0",
@@ -4954,22 +4954,22 @@
}
},
"node_modules/@react-native-community/cli-debugger-ui": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.10.tgz",
- "integrity": "sha512-kyitGV3RsjlXIioq9lsuawha2GUBPCTAyXV6EBlm3qlyF3dMniB3twEvz+fIOid/e1ZeucH3Tzy5G3qcP8yWoA==",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.7.tgz",
+ "integrity": "sha512-aVmKuPKHZENR8SrflkMurZqeyLwbKieHdOvaZCh1Nn/0UC5CxWcyST2DB2XQboZwsvr3/WXKJkSUO+SZ1J9qTQ==",
"dependencies": {
"serve-static": "^1.13.1"
}
},
"node_modules/@react-native-community/cli-doctor": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-11.3.10.tgz",
- "integrity": "sha512-DpMsfCWKZ15L9nFK/SyDvpl5v6MjV+arMHMC1i8kR+DOmf2xWmp/pgMywKk0/u50yGB9GwxBHt3i/S/IMK5Ylg==",
- "dependencies": {
- "@react-native-community/cli-config": "11.3.10",
- "@react-native-community/cli-platform-android": "11.3.10",
- "@react-native-community/cli-platform-ios": "11.3.10",
- "@react-native-community/cli-tools": "11.3.10",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-11.3.7.tgz",
+ "integrity": "sha512-YEHUqWISOHnsl5+NM14KHelKh68Sr5/HeEZvvNdIcvcKtZic3FU7Xd1WcbNdo3gCq5JvzGFfufx02Tabh5zmrg==",
+ "dependencies": {
+ "@react-native-community/cli-config": "11.3.7",
+ "@react-native-community/cli-platform-android": "11.3.7",
+ "@react-native-community/cli-platform-ios": "11.3.7",
+ "@react-native-community/cli-tools": "11.3.7",
"chalk": "^4.1.2",
"command-exists": "^1.2.8",
"envinfo": "^7.7.2",
@@ -5315,12 +5315,12 @@
}
},
"node_modules/@react-native-community/cli-hermes": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-11.3.10.tgz",
- "integrity": "sha512-vqINuzAlcHS9ImNwJtT43N7kfBQ7ro9A8O1Gpc5TQ0A8V36yGG8eoCHeauayklVVgMZpZL6f6mcoLLr9IOgBZQ==",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-11.3.7.tgz",
+ "integrity": "sha512-chkKd8n/xeZkinRvtH6QcYA8rjNOKU3S3Lw/3Psxgx+hAYV0Gyk95qJHTalx7iu+PwjOOqqvCkJo5jCkYLkoqw==",
"dependencies": {
- "@react-native-community/cli-platform-android": "11.3.10",
- "@react-native-community/cli-tools": "11.3.10",
+ "@react-native-community/cli-platform-android": "11.3.7",
+ "@react-native-community/cli-tools": "11.3.7",
"chalk": "^4.1.2",
"hermes-profile-transformer": "^0.0.6",
"ip": "^1.1.5"
@@ -5391,11 +5391,11 @@
}
},
"node_modules/@react-native-community/cli-platform-android": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.10.tgz",
- "integrity": "sha512-RGu9KuDIXnrcNkacSHj5ETTQtp/D/835L6veE2jMigO21p//gnKAjw3AVLCysGr8YXYfThF8OSOALrwNc94puQ==",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.7.tgz",
+ "integrity": "sha512-WGtXI/Rm178UQb8bu1TAeFC/RJvYGnbHpULXvE20GkmeJ1HIrMjkagyk6kkY3Ej25JAP2R878gv+TJ/XiRhaEg==",
"dependencies": {
- "@react-native-community/cli-tools": "11.3.10",
+ "@react-native-community/cli-tools": "11.3.7",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"glob": "^7.1.3",
@@ -5598,11 +5598,11 @@
}
},
"node_modules/@react-native-community/cli-platform-ios": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.10.tgz",
- "integrity": "sha512-JjduMrBM567/j4Hvjsff77dGSLMA0+p9rr0nShlgnKPcc+0J4TDy0hgWpUceM7OG00AdDjpetAPupz0kkAh4cQ==",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.7.tgz",
+ "integrity": "sha512-Z/8rseBput49EldX7MogvN6zJlWzZ/4M97s2P+zjS09ZoBU7I0eOKLi0N9wx+95FNBvGQQ/0P62bB9UaFQH2jw==",
"dependencies": {
- "@react-native-community/cli-tools": "11.3.10",
+ "@react-native-community/cli-tools": "11.3.7",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"fast-xml-parser": "^4.0.12",
@@ -5866,12 +5866,12 @@
}
},
"node_modules/@react-native-community/cli-plugin-metro": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.10.tgz",
- "integrity": "sha512-ZYAc5Hc+QVqJgj1XFbpKnIPbSJ9xKcBnfQrRhR+jFyt2DWx85u4bbzY1GSVc/USs0UbSUXv4dqPbnmOJz52EYQ==",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.7.tgz",
+ "integrity": "sha512-0WhgoBVGF1f9jXcuagQmtxpwpfP+2LbLZH4qMyo6OtYLWLG13n2uRep+8tdGzfNzl1bIuUTeE9yZSAdnf9LfYQ==",
"dependencies": {
- "@react-native-community/cli-server-api": "11.3.10",
- "@react-native-community/cli-tools": "11.3.10",
+ "@react-native-community/cli-server-api": "11.3.7",
+ "@react-native-community/cli-tools": "11.3.7",
"chalk": "^4.1.2",
"execa": "^5.0.0",
"metro": "0.76.8",
@@ -6079,12 +6079,12 @@
}
},
"node_modules/@react-native-community/cli-server-api": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-11.3.10.tgz",
- "integrity": "sha512-WEwHWIpqx3gA6Da+lrmq8+z78E1XbxxjBlvHAXevhjJj42N4SO417eZiiUVrFzEFVVJSUee9n9aRa0kUR+0/2w==",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-11.3.7.tgz",
+ "integrity": "sha512-yoFyGdvR3HxCnU6i9vFqKmmSqFzCbnFSnJ29a+5dppgPRetN+d//O8ard/YHqHzToFnXutAFf2neONn23qcJAg==",
"dependencies": {
- "@react-native-community/cli-debugger-ui": "11.3.10",
- "@react-native-community/cli-tools": "11.3.10",
+ "@react-native-community/cli-debugger-ui": "11.3.7",
+ "@react-native-community/cli-tools": "11.3.7",
"compression": "^1.7.1",
"connect": "^3.6.5",
"errorhandler": "^1.5.1",
@@ -6115,9 +6115,9 @@
}
},
"node_modules/@react-native-community/cli-tools": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-11.3.10.tgz",
- "integrity": "sha512-4kCuCwVcGagSrNg9vxMNVhynwpByuC/J5UnKGEet3HuqmoDhQW15m18fJXiehA8J+u9WBvHduefy9nZxO0C06Q==",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-11.3.7.tgz",
+ "integrity": "sha512-peyhP4TV6Ps1hk+MBHTFaIR1eI3u+OfGBvr5r0wPwo3FAJvldRinMgcB/TcCcOBXVORu7ba1XYjkubPeYcqAyA==",
"dependencies": {
"appdirsjs": "^1.2.4",
"chalk": "^4.1.2",
@@ -6326,9 +6326,9 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/@react-native-community/cli-types": {
- "version": "11.3.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-11.3.10.tgz",
- "integrity": "sha512-0FHK/JE7bTn0x1y8Lk5m3RISDHIBQqWLltO2Mf7YQ6cAeKs8iNOJOeKaHJEY+ohjsOyCziw+XSC4cY57dQrwNA==",
+ "version": "11.3.7",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-11.3.7.tgz",
+ "integrity": "sha512-OhSr/TiDQkXjL5YOs8+hvGSB+HltLn5ZI0+A3DCiMsjUgTTsYh+Z63OtyMpNjrdCEFcg0MpfdU2uxstCS6Dc5g==",
"dependencies": {
"joi": "^17.2.1"
}
@@ -9658,13 +9658,13 @@
}
},
"node_modules/deprecated-react-native-prop-types": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.2.3.tgz",
- "integrity": "sha512-2rLTiMKidIFFYpIVM69UnQKngLqQfL6I11Ch8wGSBftS18FUXda+o2we2950X+1dmbgps28niI3qwyH4eX3Z1g==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.1.0.tgz",
+ "integrity": "sha512-WfepZHmRbbdTvhcolb8aOKEvQdcmTMn5tKLbqbXmkBvjFjRVWAYqsXk/DBsV8TZxws8SdGHLuHaJrHSQUPRdfw==",
"dependencies": {
- "@react-native/normalize-colors": "<0.73.0",
- "invariant": "^2.2.4",
- "prop-types": "^15.8.1"
+ "@react-native/normalize-colors": "*",
+ "invariant": "*",
+ "prop-types": "*"
}
},
"node_modules/destroy": {
@@ -17536,25 +17536,24 @@
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"node_modules/react-native": {
- "version": "0.72.10",
- "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.72.10.tgz",
- "integrity": "sha512-AjVA1+hCm2VMk3KE9Ve5IeDR3aneEhhQJmBAM9xP3i2WqqS3GksxCz8+JdB83bV6x9mBLv5qPMP71vCged3USw==",
+ "version": "0.72.6",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.72.6.tgz",
+ "integrity": "sha512-RafPY2gM7mcrFySS8TL8x+TIO3q7oAlHpzEmC7Im6pmXni6n1AuufGaVh0Narbr1daxstw7yW7T9BKW5dpVc2A==",
"dependencies": {
"@jest/create-cache-key-function": "^29.2.1",
- "@react-native-community/cli": "11.3.10",
- "@react-native-community/cli-platform-android": "11.3.10",
- "@react-native-community/cli-platform-ios": "11.3.10",
+ "@react-native-community/cli": "11.3.7",
+ "@react-native-community/cli-platform-android": "11.3.7",
+ "@react-native-community/cli-platform-ios": "11.3.7",
"@react-native/assets-registry": "^0.72.0",
- "@react-native/codegen": "^0.72.8",
+ "@react-native/codegen": "^0.72.7",
"@react-native/gradle-plugin": "^0.72.11",
"@react-native/js-polyfills": "^0.72.1",
"@react-native/normalize-colors": "^0.72.0",
"@react-native/virtualized-lists": "^0.72.8",
"abort-controller": "^3.0.0",
"anser": "^1.4.9",
- "ansi-regex": "^5.0.0",
"base64-js": "^1.1.2",
- "deprecated-react-native-prop-types": "^4.2.3",
+ "deprecated-react-native-prop-types": "4.1.0",
"event-target-shim": "^5.0.1",
"flow-enums-runtime": "^0.0.5",
"invariant": "^2.2.4",
diff --git a/client/src/app/(home)/_layout.tsx b/client/src/app/(home)/_layout.tsx
index 07c328d03..fb7c6336c 100644
--- a/client/src/app/(home)/_layout.tsx
+++ b/client/src/app/(home)/_layout.tsx
@@ -3,20 +3,23 @@ import { Stack } from "expo-router";
import { SettingsProvider } from "../../contexts/SettingsContext";
import { SocketProvider } from "../../contexts/SocketContext";
import { LocationProvider } from "../../contexts/LocationContext";
+import { UserProvider } from "../../contexts/UserContext";
const AuthLayout = () => {
return (
-
-
-
-
-
+
+
+
+
+
+
+
);
diff --git a/client/src/components/Chat/ChatScreen.tsx b/client/src/components/Chat/ChatScreen.tsx
index c3fac3fa6..2939a47cb 100644
--- a/client/src/components/Chat/ChatScreen.tsx
+++ b/client/src/components/Chat/ChatScreen.tsx
@@ -14,15 +14,15 @@ import {
import { ChatInput } from "../Common/CustomInputs";
import { ChatSendButton } from "../Common/CustomButtons";
import MessageChannel from "../Common/MessageChannel";
-import { LinearGradient } from "expo-linear-gradient";
import * as Crypto from "expo-crypto";
import { generateName } from "../../utils/scripts";
-import { useSettings } from "../../contexts/SettingsContext";
import { SignOutButton } from "../Common/AuthButtons"
import { MessageType } from "../../types/Message";
import { LocationProvider } from "../../contexts/LocationContext";
import { useSocket } from "../../contexts/SocketContext";
+import { useSettings } from "../../contexts/SettingsContext";
import { useLocation } from "../../contexts/LocationContext";
+import { useUser } from "../../contexts/UserContext"; // imported for when it needs to be used
import { AuthStore } from "../../services/store";
const ChatScreen = () => {
@@ -32,8 +32,10 @@ const ChatScreen = () => {
const keyboardBehavior = Platform.OS === "ios" ? "padding" : undefined;
const socket = useSocket();
const location = useLocation();
- const { user } = AuthStore.useState();
-
+ const user = useUser();
+ const userAuth = AuthStore.useState()
+ // Note: To prevent complexity, all user information is grabbed from different contexts and services. If we wanted most information inside of UserContext, we would have to import contexts within contexts and have state change as certain things mount, which could cause errors that are difficult to pinpoint.
+
// Message loading and sending logic
const [messages, setMessages] = React.useState([]);
const [messageContent, setMessageContent] = React.useState("");
@@ -54,7 +56,9 @@ const ChatScreen = () => {
const onHandleSubmit = () => {
if (messageContent.trim() !== "") {
const newMessage: MessageType = {
- uid: String(user?.uid),
+ author: {
+ uid: String(userAuth.userAuthInfo?.uid),
+ },
msgId: Crypto.randomUUID(),
msgContent: messageContent.trim(),
timeSent: Date.now(),
diff --git a/client/src/components/Common/MessageChannel.tsx b/client/src/components/Common/MessageChannel.tsx
index ad215f708..3ff4c8629 100644
--- a/client/src/components/Common/MessageChannel.tsx
+++ b/client/src/components/Common/MessageChannel.tsx
@@ -20,7 +20,7 @@ const MessageChannel: React.FC = ({ messages }) => {
renderItem={({ item }) => (
)}
diff --git a/client/src/contexts/SettingsContext.tsx b/client/src/contexts/SettingsContext.tsx
index c1d35a135..81f086ce4 100644
--- a/client/src/contexts/SettingsContext.tsx
+++ b/client/src/contexts/SettingsContext.tsx
@@ -36,9 +36,6 @@ export const SettingsProvider = ({
children: React.ReactNode;
}) => {
const [theme, setTheme] = useState("light");
- const [displayName, setDisplayName] = useState("");
- const [foregroundPfpImage, setForegroundPfpImage] = useState("");
- const [backgroundPfpImage, setBackgroundPfpImage] = useState("");
// Initial settings load
useEffect(() => {
diff --git a/client/src/contexts/SocketContext.tsx b/client/src/contexts/SocketContext.tsx
index 118035845..47f294a47 100644
--- a/client/src/contexts/SocketContext.tsx
+++ b/client/src/contexts/SocketContext.tsx
@@ -1,6 +1,5 @@
import React, { createContext, useContext, useEffect, useState } from "react";
import { io, Socket } from "socket.io-client";
-import * as Network from "expo-network";
import { useLocation } from "./LocationContext";
import { EXPO_IP } from "@env";
@@ -27,11 +26,6 @@ export const SocketProvider = ({ children }: { children: React.ReactNode }) => {
}
});
- // socketIo.on("message", (data: MessageType, ack) => {
- // console.log("Sending message to server:", data);
- // if (ack) console.log("Server acknowledged message:", ack);
- // });
-
return () => {
isMounted = false;
socket?.disconnect();
diff --git a/client/src/contexts/UserContext.tsx b/client/src/contexts/UserContext.tsx
new file mode 100644
index 000000000..42a0b4b3b
--- /dev/null
+++ b/client/src/contexts/UserContext.tsx
@@ -0,0 +1,25 @@
+import React, { createContext, useContext } from 'react';
+import { UserType } from '../types/User';
+import { useState } from 'react';
+
+const UserContext = createContext(null);
+
+export const useUser = () => {
+ return useContext(UserContext);
+}
+
+export const UserProvider = ({ children }: {children: React.ReactNode}) => {
+ const [user, setUser] = useState({
+ displayName: "DefaultDisplayName",
+ userIcon: {
+ imagePath: "DefaultImagePath",
+ colorHex: "#fff"
+ },
+ });
+
+ return (
+
+ {children}
+
+ );
+};
diff --git a/client/src/services/store.ts b/client/src/services/store.ts
index f748dd7d7..84e9a8b34 100644
--- a/client/src/services/store.ts
+++ b/client/src/services/store.ts
@@ -2,17 +2,18 @@ import { User, createUserWithEmailAndPassword, onAuthStateChanged, signInWithEma
import { Store } from 'pullstate'
import { auth, app } from '../configs/firebaseConfig'
import { FirebaseError } from 'firebase/app';
+import { useUser } from '../contexts/UserContext';
interface AuthStoreInterface {
isLoggedin: boolean,
initialized: boolean,
- user: User | null,
+ userAuthInfo: User | null,
}
export const AuthStore = new Store({
isLoggedin: false,
initialized: false,
- user: null,
+ userAuthInfo: null,
})
const unsub = onAuthStateChanged(auth, (user) => {
@@ -20,7 +21,7 @@ const unsub = onAuthStateChanged(auth, (user) => {
AuthStore.update((store) => {
store.initialized = true,
store.isLoggedin = user ? true : false,
- store.user = user
+ store.userAuthInfo = user
})
});
@@ -28,7 +29,7 @@ export const appSignIn = async (email: string, password: string) => {
try {
const response = await signInWithEmailAndPassword(auth, email, password);
AuthStore.update((store) => {
- store.user = response?.user;
+ store.userAuthInfo = response?.user;
store.isLoggedin = response?.user ? true : false;
});
@@ -42,7 +43,7 @@ export const appSignOut = async () => {
try {
await signOut(auth);
AuthStore.update((store) => {
- store.user = null;
+ store.userAuthInfo = null;
store.isLoggedin = false;
});
return { user: null}
@@ -56,11 +57,11 @@ export const appSignUp = async (email: string, password: string) => {
const response = await createUserWithEmailAndPassword(auth, email, password);
AuthStore.update((store) => {
- store.user = response.user;
+ store.userAuthInfo = response.user;
store.isLoggedin = response.user ? true : false;
});
return { user: auth.currentUser}
} catch (e) {
return { error: e };
}
-};
\ No newline at end of file
+};
diff --git a/client/src/types/Message.ts b/client/src/types/Message.ts
index 3ef50bc59..2310a2714 100644
--- a/client/src/types/Message.ts
+++ b/client/src/types/Message.ts
@@ -1,6 +1,8 @@
export interface MessageType {
- uid: string
- authorName?: string // To be only used for display purposes (i.e. do not send to server)
+ author: {
+ uid: string
+ displayName?: string // To be only used for display purposes (do not send to server)
+ }
msgId: string
msgContent: string
timeSent: number // Unix timestamp; Date.now() returns a Number.
diff --git a/client/src/types/User.ts b/client/src/types/User.ts
new file mode 100644
index 000000000..f85659001
--- /dev/null
+++ b/client/src/types/User.ts
@@ -0,0 +1,7 @@
+export interface UserType {
+ displayName: string
+ userIcon?: {
+ imagePath: string
+ colorHex: string
+ }
+}
diff --git a/client/src/utils/types.ts b/client/src/utils/types.ts
new file mode 100644
index 000000000..a1eaa5023
--- /dev/null
+++ b/client/src/utils/types.ts
@@ -0,0 +1,11 @@
+export type MessageType = {
+ messageContent: string;
+ author: string;
+ msgID: string;
+};
+
+export type UserType = {
+ userID: string;
+ displayName: string;
+ pfp: string;
+};
\ No newline at end of file