diff --git a/app/src/pages/Project.tsx b/app/src/pages/Project.tsx
index 9b71ded..9c297e8 100644
--- a/app/src/pages/Project.tsx
+++ b/app/src/pages/Project.tsx
@@ -1,10 +1,6 @@
import React, { useEffect } from "react";
import useModuleStore from "../store/useModuleStore";
-import {
- useSocketStore,
- useProjectName,
- useActiveTool,
-} from "../store/builder/store";
+import { useSocketStore, useProjectName, useActiveTool, } from "../store/builder/store";
import { useNavigate, useParams } from "react-router-dom";
import { useSelectedUserStore } from "../store/collaboration/useCollabStore";
import FollowPerson from "../components/templates/FollowPerson";
@@ -24,116 +20,116 @@ import { sharedWithMeProjects } from "../services/dashboard/sharedWithMeProject"
import { handleCanvasCursors } from "../utils/mouseUtils/handleCanvasCursors";
const Project: React.FC = () => {
- let navigate = useNavigate();
- const echo = useLogger();
- const { setActiveModule } = useModuleStore();
- const { projectId } = useParams();
- const { setProjectName } = useProjectName();
- const { userId, email, organization, userName } = getUserData();
- const { selectedUser } = useSelectedUserStore();
- const { isLogListVisible } = useLogger();
- const { setVersions } = useVersionHistoryStore();
- const { activeTool } = useActiveTool();
+ let navigate = useNavigate();
+ const echo = useLogger();
+ const { setActiveModule } = useModuleStore();
+ const { projectId } = useParams();
+ const { setProjectName } = useProjectName();
+ const { userId, email, organization } = getUserData();
+ const { selectedUser } = useSelectedUserStore();
+ const { isLogListVisible } = useLogger();
+ const { setVersions } = useVersionHistoryStore();
+ const { activeTool } = useActiveTool();
- useEffect(() => {
- if (!email || !userId) {
- console.error("User data not found in localStorage");
- navigate("/page-not-found");
- return;
- }
-
- const fetchProjects = async () => {
- try {
- const projects = await getAllProjects(userId, organization);
- const shared = await sharedWithMeProjects();
-
- const allProjects = [...(projects?.Projects || []), ...(shared || [])];
-
- const matchedProject = allProjects.find(
- (val: any) => val.projectUuid === projectId || val._id === projectId
- );
- if (matchedProject) {
- setProjectName(matchedProject.projectName);
- await viewProject(organization, matchedProject._id, userId);
- } else {
- console.warn("Project not found with given ID:", projectId);
- navigate(`/not_found#project_not_found#${projectId}`);
+ useEffect(() => {
+ if (!email || !userId) {
+ console.error("User data not found in localStorage");
+ navigate("/page-not-found");
+ return;
}
- } catch (error) {
- console.error("Error fetching projects:", error);
- }
- };
- fetchProjects();
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, []);
+ const fetchProjects = async () => {
+ try {
+ const projects = await getAllProjects(userId, organization);
+ const shared = await sharedWithMeProjects();
- useEffect(() => {
- if (!projectId) return;
+ const allProjects = [...(projects?.Projects || []), ...(shared || [])];
- getVersionHistoryApi(projectId)
- .then((data) => {
- const versions: VersionHistory = [];
- data.versions.forEach((version: any) => {
- versions.push({
- version: version.version,
- versionId: version.versionId,
- versionName: version.versionName,
- versionDescription: version.description,
- timeStamp: version.createdAt,
- createdBy: version.createdBy.userName,
- });
- });
- setVersions(versions);
- })
- .catch(() => {
- console.error("Error fetching version history");
- });
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [projectId]);
+ const matchedProject = allProjects.find(
+ (val: any) => val.projectUuid === projectId || val._id === projectId
+ );
+ if (matchedProject) {
+ setProjectName(matchedProject.projectName);
+ await viewProject(organization, matchedProject._id, userId);
+ } else {
+ console.warn("Project not found with given ID:", projectId);
+ navigate(`/not_found#project_not_found#${projectId}`);
+ }
+ } catch (error) {
+ console.error("Error fetching projects:", error);
+ }
+ };
- useEffect(() => {
- setActiveModule("builder");
- if (email) {
- const token = localStorage.getItem("token");
- const refreshToken = localStorage.getItem("refreshToken");
- echo.warn('Validating token');
- if (token && refreshToken) {
- useSocketStore
- .getState()
- .initializeSocket(email, organization, token, refreshToken);
- }
- echo.success("Project initialized and loaded successfully");
- } else {
- navigate("/");
- }
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, []);
+ fetchProjects();
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
- useEffect(() => {
- handleCanvasCursors(activeTool);
- }, [activeTool]);
+ useEffect(() => {
+ if (!projectId) return;
- return (
-
-
-
-
-
-
-
-
-
-
-
- {selectedUser && }
- {isLogListVisible && (
-
-
-
- )}
-
- );
+ getVersionHistoryApi(projectId)
+ .then((data) => {
+ const versions: VersionHistory = [];
+ data.versions.forEach((version: any) => {
+ versions.push({
+ version: version.version,
+ versionId: version.versionId,
+ versionName: version.versionName,
+ versionDescription: version.description,
+ timeStamp: version.createdAt,
+ createdBy: version.createdBy.userName,
+ });
+ });
+ setVersions(versions);
+ })
+ .catch(() => {
+ console.error("Error fetching version history");
+ });
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [projectId]);
+
+ useEffect(() => {
+ setActiveModule("builder");
+ if (email) {
+ const token = localStorage.getItem("token");
+ const refreshToken = localStorage.getItem("refreshToken");
+ echo.warn('Validating token');
+ if (token && refreshToken) {
+ useSocketStore
+ .getState()
+ .initializeSocket(email, organization, token, refreshToken);
+ }
+ echo.success("Project initialized and loaded successfully");
+ } else {
+ navigate("/");
+ }
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
+
+ useEffect(() => {
+ handleCanvasCursors(activeTool);
+ }, [activeTool]);
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ {selectedUser && }
+ {isLogListVisible && (
+
+
+
+ )}
+
+ );
};
export default Project;
diff --git a/app/src/pages/UserAuth.tsx b/app/src/pages/UserAuth.tsx
index 3fec867..f7b89a1 100644
--- a/app/src/pages/UserAuth.tsx
+++ b/app/src/pages/UserAuth.tsx
@@ -2,9 +2,7 @@ import React, { useState, FormEvent, useEffect } from "react";
import { useNavigate } from "react-router-dom";
import { LogoIconLarge } from "../components/icons/Logo";
import { EyeIcon } from "../components/icons/ExportCommonIcons";
-import {
- useLoadingProgress,
-} from "../store/builder/store";
+import { useLoadingProgress } from "../store/builder/store";
import { signInApi } from "../services/factoryBuilder/signInSignUp/signInApi";
import { signUpApi } from "../services/factoryBuilder/signInSignUp/signUpApi";
import FingerprintJS from "@fingerprintjs/fingerprintjs";
@@ -12,243 +10,232 @@ import { recentlyViewed } from "../services/dashboard/recentlyViewed";
import { getUserData } from "../functions/getUserData";
const UserAuth: React.FC = () => {
- const [email, setEmail] = useState("");
- const [password, setPassword] = useState("");
- const [showPassword, setShowPassword] = useState(false);
- const [error, setError] = useState("");
- const [isSignIn, setIsSignIn] = useState(true);
- const { userName } = getUserData();
- const [name, setName] = useState(userName || '');
- const { setLoadingProgress } = useLoadingProgress();
- const [fingerprint, setFingerprint] = useState("");
+ const [email, setEmail] = useState("");
+ const [password, setPassword] = useState("");
+ const [showPassword, setShowPassword] = useState(false);
+ const [error, setError] = useState("");
+ const [isSignIn, setIsSignIn] = useState(true);
+ const { userName } = getUserData();
+ const [name, setName] = useState(userName || '');
+ const { setLoadingProgress } = useLoadingProgress();
+ const [fingerprint, setFingerprint] = useState("");
- const navigate = useNavigate();
+ const navigate = useNavigate();
- const initializeFingerprint = async () => {
- const fp = await FingerprintJS.load();
- const result = await fp.get();
- setFingerprint(result.visitorId); // Set the fingerprint
- };
+ const initializeFingerprint = async () => {
+ const fp = await FingerprintJS.load();
+ const result = await fp.get();
+ setFingerprint(result.visitorId); // Set the fingerprint
+ };
- useEffect(() => {
- initializeFingerprint();
- }, []);
+ useEffect(() => {
+ initializeFingerprint();
+ }, []);
- const handleLogin = async (e: FormEvent) => {
- e.preventDefault();
- const organization = email.split("@")[1].split(".")[0];
- try {
- const res = await signInApi(email, password, organization, fingerprint);
- if (res.message.message === "login successfull") {
- setError("");
- localStorage.setItem("userId", res.message.userId);
- localStorage.setItem("email", res.message.email);
- localStorage.setItem("userName", res.message.name);
- localStorage.setItem("token", res.message.token);
- localStorage.setItem("refreshToken", res.message.refreshToken);
-
- try {
- const projects = await recentlyViewed(
- organization,
- res.message.userId
- );
- if (res.message.isShare) {
- if (Object.values(projects.RecentlyViewed).length > 0) {
- const recent_opend_projectID = (
- Object.values(projects?.RecentlyViewed || {})[0] as any
- )?._id;
- if (
- Object.values(projects?.RecentlyViewed).filter(
- (val: any) => val._id == recent_opend_projectID
- )
- ) {
- setLoadingProgress(1);
- navigate(`/projects/${recent_opend_projectID}`);
- } else {
- navigate("/Dashboard");
- }
- } else {
- setLoadingProgress(1);
- navigate("/Dashboard");
- }
- }
- } catch (error) {
- console.error("Error fetching recent projects:", error);
- }
- } else if (res.message === "User Not Found!!! Kindly signup...") {
- setError("Account not found");
- } else if (
- res.message === "Email & Password is invalid...Check the credentials"
- ) {
- setError(res.message);
- } else if (
- res.message ===
- "Already LoggedIn on another browser....Please logout!!!"
- ) {
- setError("Already logged in on another browser. Please logout first.");
- navigate("/");
- setError("");
- // setError("");
- // setOrganization(organization);
- // setUserName(res.ForceLogoutData.userName);
- // console.log(' res.userId: ', res.ForceLogoutData.userId);
- // localStorage.setItem("userId", res.ForceLogoutData.userId);
- // localStorage.setItem("email", res.ForceLogoutData.Email);
- // localStorage.setItem("userName", res.ForceLogoutData.userName);
- // localStorage.setItem("token", res.ForceLogoutData.token);
- // localStorage.setItem("refreshToken", res.ForceLogoutData.refreshToken);
- // if (res.ForceLogoutData.isShare) {
- // setLoadingProgress(1);
- // navigate("/Dashboard");
- // }
- }
- } catch (error) {
- echo.error("Login failed");
- }
- };
-
- const handleRegister = async (e: FormEvent) => {
- e.preventDefault();
- if (email && password && name) {
- setError("");
- try {
+ const handleLogin = async (e: FormEvent) => {
+ e.preventDefault();
const organization = email.split("@")[1].split(".")[0];
- const res = await signUpApi(name, email, password, organization);
+ try {
+ const res = await signInApi(email, password, organization, fingerprint);
+ if (res.message.message === "login successfull") {
+ setError("");
+ localStorage.setItem("userId", res.message.userId);
+ localStorage.setItem("email", res.message.email);
+ localStorage.setItem("userName", res.message.name);
+ localStorage.setItem("token", res.message.token);
+ localStorage.setItem("refreshToken", res.message.refreshToken);
- if (res.message === "New User created") {
- setIsSignIn(true);
+ try {
+ const projects = await recentlyViewed(
+ organization,
+ res.message.userId
+ );
+ if (res.message.isShare) {
+ if (Object.values(projects.RecentlyViewed).length > 0) {
+ const recent_opend_projectID = (Object.values(projects?.RecentlyViewed || {})[0] as any)?._id;
+ if (Object.values(projects?.RecentlyViewed).filter((val: any) => val._id == recent_opend_projectID)) {
+ setLoadingProgress(1);
+ navigate(`/projects/${recent_opend_projectID}`);
+ } else {
+ navigate("/Dashboard");
+ }
+ } else {
+ setLoadingProgress(1);
+ navigate("/Dashboard");
+ }
+ }
+ } catch (error) {
+ console.error("Error fetching recent projects:", error);
+ }
+ } else if (res.message === "User Not Found!!! Kindly signup...") {
+ setError("Account not found");
+ } else if (res.message === "Email & Password is invalid...Check the credentials") {
+ setError(res.message);
+ } else if (res.message === "Already LoggedIn on another browser....Please logout!!!") {
+ setError("Already logged in on another browser. Please logout first.");
+ navigate("/");
+ setError("");
+ // setError("");
+ // setOrganization(organization);
+ // setUserName(res.ForceLogoutData.userName);
+ // console.log(' res.userId: ', res.ForceLogoutData.userId);
+ // localStorage.setItem("userId", res.ForceLogoutData.userId);
+ // localStorage.setItem("email", res.ForceLogoutData.Email);
+ // localStorage.setItem("userName", res.ForceLogoutData.userName);
+ // localStorage.setItem("token", res.ForceLogoutData.token);
+ // localStorage.setItem("refreshToken", res.ForceLogoutData.refreshToken);
+ // if (res.ForceLogoutData.isShare) {
+ // setLoadingProgress(1);
+ // navigate("/Dashboard");
+ // }
+ }
+ } catch (error) {
+ echo.error("Login failed");
}
- if (res.message === "User already exists") {
- setError("User already exists");
+ };
+
+ const handleRegister = async (e: FormEvent) => {
+ e.preventDefault();
+ if (email && password && name) {
+ setError("");
+ try {
+ const organization = email.split("@")[1].split(".")[0];
+ const res = await signUpApi(name, email, password, organization);
+
+ if (res.message === "New User created") {
+ setIsSignIn(true);
+ }
+ if (res.message === "User already exists") {
+ setError("User already exists");
+ }
+ } catch (error) {
+ echo.error("Register user failed");
+ }
+ } else {
+ setError("Please fill all the fields!");
}
- } catch (error) {
- echo.error("Register user failed");
- }
- } else {
- setError("Please fill all the fields!");
- }
- };
+ };
- return (
-
-
-
-
-
Welcome to Aalai
-
- {isSignIn ? (
- <>
- Don’t have an account?{" "}
- setIsSignIn(false)}
- style={{ cursor: "pointer" }}
+ return (
+
+
+
+
+
Welcome to Aalai
+
+ {isSignIn ? (
+ <>
+ Don’t have an account?{" "}
+ setIsSignIn(false)}
+ style={{ cursor: "pointer" }}
+ >
+ Register here!
+
+ >
+ ) : (
+ <>
+ Already have an account?{" "}
+ setIsSignIn(true)}
+ style={{ cursor: "pointer" }}
+ >
+ Login here!
+
+ >
+ )}
+
+
+
+ G Continue with Google
+
+
+ {error &&
🛈 {error}
}
+
+
-
- By signing up for, or logging into, an account, you agree to our{" "}
- navigate("/privacy")}
- style={{ cursor: "pointer" }}
- >
- privacy policy
- {" "}
- &{" "}
- navigate("/terms")}
- style={{ cursor: "pointer" }}
- >
- terms of service
- {" "}
- whether you read them or not. You can also find these terms on our
- website.
-
-
- );
+ );
};
export default UserAuth;
diff --git a/app/src/services/dashboard/recentlyViewed.ts b/app/src/services/dashboard/recentlyViewed.ts
index ff8bf89..06fa3fd 100644
--- a/app/src/services/dashboard/recentlyViewed.ts
+++ b/app/src/services/dashboard/recentlyViewed.ts
@@ -1,31 +1,30 @@
let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`;
export const recentlyViewed = async (organization: string, userId: string) => {
- try {
- const response = await fetch(
- `${url_Backend_dwinzo}/api/V1/RecentlyViewed`,
- {
- method: "GET",
- headers: {
- Authorization: "Bearer ", // Replace with actual token
- "Content-Type": "application/json",
- token: localStorage.getItem("token") || "", // Coerce null to empty string
- refresh_token: localStorage.getItem("refreshToken") || "",
- },
- }
- );
- const newAccessToken = response.headers.get("x-access-token");
- if (newAccessToken) {
- //console.log("New token received:", newAccessToken);
- localStorage.setItem("token", newAccessToken);
- }
- if (!response.ok) {
- console.error("Failed to fetch project");
- }
+ try {
+ const response = await fetch(
+ `${url_Backend_dwinzo}/api/V1/RecentlyViewed`,
+ {
+ method: "GET",
+ headers: {
+ Authorization: "Bearer ", // Replace with actual token
+ "Content-Type": "application/json",
+ token: localStorage.getItem("token") || "", // Coerce null to empty string
+ refresh_token: localStorage.getItem("refreshToken") || "",
+ },
+ }
+ );
+ const newAccessToken = response.headers.get("x-access-token");
+ if (newAccessToken) {
+ localStorage.setItem("token", newAccessToken);
+ }
+ if (!response.ok) {
+ console.error("Failed to fetch project");
+ }
- return await response.json();
- } catch (error: any) {
- console.error("Failed to get project");
- console.log(error.message);
- }
+ return await response.json();
+ } catch (error: any) {
+ console.error("Failed to get project");
+ console.log(error.message);
+ }
};