Skip to content

Commit d91b7c7

Browse files
author
joeldevelops
committed
Prepare for live demo
1 parent 4659b57 commit d91b7c7

File tree

13 files changed

+292
-104
lines changed

13 files changed

+292
-104
lines changed

packages/app/src/components/AccountMenu.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,23 @@ import { StoreContext } from '../contexts/StoreContext';
55

66
export default function AccountMenu() {
77
const stateContext = useContext(StoreContext);
8-
const [loggedIn, setLoggedIn] = useState(false);
8+
const [loggedIn, setLoggedIn] = useState(true);
99
const [avatar, setAvatar] = useState("https://randomuser.me/api/portraits/men/75.jpg");
10-
const [name, setName] = useState("");
11-
const [username, setUsername] = useState("");
10+
const [name, setName] = useState("Demo User");
11+
const [username, setUsername] = useState("@DemoUser");
1212

1313
const logOut = (e: React.MouseEvent<HTMLButtonElement>) => {
1414
e.preventDefault();
15-
localStorage.removeItem('jwt');
16-
localStorage.removeItem('user');
17-
setLoggedIn(false);
18-
window.location.pathname = '/login';
15+
// localStorage.removeItem('jwt');
16+
// localStorage.removeItem('user');
17+
// setLoggedIn(false);
18+
window.location.pathname = '/';
1919
}
2020

2121
useEffect(() => {
2222
// Check if the user is logged in
23-
const jwt = localStorage.getItem('jwt');
24-
setLoggedIn(!!jwt);
23+
// const jwt = localStorage.getItem('jwt');
24+
// setLoggedIn(!!jwt);
2525

2626
// Get user data
2727
const userData = stateContext.state.user;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Navigate, Outlet } from "react-router";
2+
3+
export default function DemoProtectedRoute() {
4+
const key = localStorage.getItem("access");
5+
6+
// Set the original destination URL in localStorage
7+
if (!key) {
8+
localStorage.setItem("destination", window.location.pathname);
9+
}
10+
11+
return key ? <Outlet /> : <Navigate to="/" />;
12+
}

packages/app/src/components/Sidebar/AppSidebar.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export default function AppSidebar() {
6262
</svg>
6363
<p className="text-md">My projects</p>
6464
</button>
65-
<button className={`flex gap-x-2 p-2 rounded-lg hover:bg-gray-200 dark:hover:bg-hover-dark transition-all ${
65+
{/* <button className={`flex gap-x-2 p-2 rounded-lg hover:bg-gray-200 dark:hover:bg-hover-dark transition-all ${
6666
location.pathname.includes("/notifications") ? "bg-gray-200 dark:bg-foreground-dark text-text-lightHighlight dark:text-text-darkHighlight" : "text-text-gray"
6767
}`}>
6868
<svg width="20" height="22" viewBox="0 0 20 22" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
@@ -80,7 +80,7 @@ export default function AppSidebar() {
8080
</svg>
8181
8282
<p className="text-md">Settings</p>
83-
</button>
83+
</button> */}
8484

8585
<WorkspaceMenu />
8686
</div>

packages/app/src/components/Sidebar/WorkspaceDetails.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@ export default function WorkspaceDetails() {
88

99
const [workspace, setWorkspace] = useState<Workspace>({
1010
name: "Default",
11-
users: [] ,
11+
users: [{
12+
id: 0,
13+
name: "John Doe",
14+
email: "",
15+
avatar: "https://randomuser.me/api/portraits/men/75.jpg"
16+
}],
1217
id: 0,
1318
projects: [],
1419
settings: {},

packages/app/src/components/Sidebar/WorkspaceMenu.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ import { useNavigate } from 'react-router';
77
export default function WorkspaceMenu() {
88
const navigate = useNavigate();
99
const stateContext = useContext(StoreContext);
10-
const [workspaces, setWorkspaces] = useState([]);
10+
const [workspaces, setWorkspaces] = useState([{
11+
id: '1',
12+
name: 'Default'
13+
}]);
1114

1215
const isActiveWorkspace = (workspace: any) => {
1316
const activeWorkspace = stateContext.state.activeWorkspace;
@@ -49,7 +52,7 @@ export default function WorkspaceMenu() {
4952
onClick={() => setActiveWorkspace(workspace)}
5053
className='w-full text-left text-lg flex justify-between my-1'>
5154
<p>{workspace.name}</p>
52-
{isActiveWorkspace(workspace) && (
55+
{true && (
5356
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" className='my-auto'>
5457
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 6C12.5523 6 13 6.44772 13 7V21C13 21.5523 12.5523 22 12 22C11.4477 22 11 21.5523 11 21V7C11 6.44772 11.4477 6 12 6Z" fill="currentColor"/>
5558
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.7071 9.29289C23.0976 9.68342 23.0976 10.3166 22.7071 10.7071L18.7071 14.7071C18.3166 15.0976 17.6834 15.0976 17.2929 14.7071L15.2929 12.7071C14.9024 12.3166 14.9024 11.6834 15.2929 11.2929C15.6834 10.9024 16.3166 10.9024 16.7071 11.2929L18 12.5858L21.2929 9.29289C21.6834 8.90237 22.3166 8.90237 22.7071 9.29289Z" fill="currentColor"/>

packages/app/src/components/UserInvite/InviteUserDialog.tsx

Lines changed: 80 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -20,59 +20,96 @@ export default function InviteUserDialog(props: {
2020
}) {
2121
const { state } = useContext(StoreContext);
2222
const [open, setOpen] = useState(false);
23-
const [loading, setLoading] = useState(true);
23+
const [loading] = useState(false);
2424
const [userSearch, setUserSearch] = useState("");
25-
const [users, setUsers] = useState<UsersAndInvites[]>([]);
25+
const [users] = useState<any[]>([
26+
{
27+
id: 1,
28+
name: "John Doe",
29+
email: "",
30+
avatar: "https://randomuser.me/api/portraits/men/75.jpg",
31+
workspaces: [],
32+
oauths: [],
33+
userWorkspaceRole: [{
34+
role: "admin",
35+
}],
36+
createdAt: new Date().toISOString(),
37+
updatedAt: new Date().toISOString(),
38+
},
39+
{
40+
id: 2,
41+
name: "Jane Doe",
42+
email: "",
43+
avatar: "https://randomuser.me/api/portraits/women/75.jpg",
44+
workspaces: [],
45+
oauths: [],
46+
userWorkspaceRole: [{
47+
role: "user",
48+
}],
49+
createdAt: new Date().toISOString(),
50+
updatedAt: new Date().toISOString(),
51+
},
52+
{
53+
id: 2,
54+
claimed: false,
55+
email: "robert.doe@gmail.com",
56+
uuid: "1234",
57+
role: "user",
58+
workspaceId: 1,
59+
createdAt: new Date().toISOString(),
60+
updatedAt: new Date().toISOString(),
61+
},
62+
]);
2663
const [filteredUsers, setFilteredUsers] = useState<UsersAndInvites[]>([]);
2764

2865
const loadWorkspaceUsers = async () => {
29-
try {
30-
const response = await fetch(`${process.env.REACT_APP_BACKEND_API_URL}/api/v1/users/workspace/${state.activeWorkspace?.id}`, {
31-
headers: {
32-
Authorization: `Bearer ${localStorage.getItem("jwt")}`,
33-
},
34-
});
66+
// try {
67+
// const response = await fetch(`${process.env.REACT_APP_BACKEND_API_URL}/api/v1/users/workspace/${state.activeWorkspace?.id}`, {
68+
// headers: {
69+
// Authorization: `Bearer ${localStorage.getItem("jwt")}`,
70+
// },
71+
// });
3572

36-
if (!response.ok) {
37-
throw new Error("Failed to fetch workspace users");
38-
}
73+
// if (!response.ok) {
74+
// throw new Error("Failed to fetch workspace users");
75+
// }
3976

40-
// Takes the shape of { users, invites }
41-
const usersData = await response.json();
42-
setUsers([...usersData.users, ...usersData.invites]);
43-
setLoading(false);
44-
} catch (error) {
45-
console.error("Failed to fetch workspace users", error);
46-
}
77+
// // Takes the shape of { users, invites }
78+
// const usersData = await response.json();
79+
// setUsers([...usersData.users, ...usersData.invites]);
80+
// setLoading(false);
81+
// } catch (error) {
82+
// console.error("Failed to fetch workspace users", error);
83+
// }
4784
}
4885

49-
const sendWorkspaceInvite = async (e: any, email: string) => {
86+
const sendWorkspaceInvite = async (e: any) => {
5087
e.preventDefault();
51-
try {
52-
const response = await fetch(`${process.env.REACT_APP_BACKEND_API_URL}/api/v1/invitations`, {
53-
method: "POST",
54-
headers: {
55-
"Content-Type": "application/json",
56-
Authorization: `Bearer ${localStorage.getItem("jwt")}`,
57-
},
58-
body: JSON.stringify({
59-
email,
60-
workspaceId: state.activeWorkspace?.id,
61-
}),
62-
});
88+
// try {
89+
// const response = await fetch(`${process.env.REACT_APP_BACKEND_API_URL}/api/v1/invitations`, {
90+
// method: "POST",
91+
// headers: {
92+
// "Content-Type": "application/json",
93+
// Authorization: `Bearer ${localStorage.getItem("jwt")}`,
94+
// },
95+
// body: JSON.stringify({
96+
// email,
97+
// workspaceId: state.activeWorkspace?.id,
98+
// }),
99+
// });
63100

64-
if (!response.ok) {
65-
throw new Error("Failed to send workspace invite");
66-
}
101+
// if (!response.ok) {
102+
// throw new Error("Failed to send workspace invite");
103+
// }
67104

68-
console.log("Workspace invite sent successfully");
69-
setUserSearch("");
70-
setLoading(true);
71-
loadWorkspaceUsers();
72-
}
73-
catch (error) {
74-
console.error("Failed to send workspace invite", error);
75-
}
105+
// console.log("Workspace invite sent successfully");
106+
// setUserSearch("");
107+
// setLoading(true);
108+
// loadWorkspaceUsers();
109+
// }
110+
// catch (error) {
111+
// console.error("Failed to send workspace invite", error);
112+
// }
76113
}
77114

78115
useEffect(() => {
@@ -151,7 +188,7 @@ export default function InviteUserDialog(props: {
151188
disabled={
152189
filteredUsers.length > 0 || !EMAIL_REGEX.test(userSearch)
153190
}
154-
onClick={(e) => sendWorkspaceInvite(e, userSearch)}>
191+
onClick={(e) => sendWorkspaceInvite(e)}>
155192
Invite
156193
</Button>
157194
</TextField.Slot>

packages/app/src/main.tsx

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,22 @@ import "@xyflow/react/dist/style.css";
88
import "@radix-ui/themes/styles.css";
99
import "./index.css";
1010
import SplitConfigure from "./pages/splitConfigure";
11-
import { createBrowserRouter, RouterProvider, Navigate } from "react-router";
11+
import { createBrowserRouter, RouterProvider } from "react-router";
1212
import { ToastContainer } from "react-toastify";
1313
import { ThemeContext, ThemeProvider } from "./contexts/ThemeContext";
1414
import { StoreProvider } from "./contexts/StoreContext";
1515
// import BaseAudit from "./pages/audit";
1616
// import Audit from "./pages/audit/index";
1717
// import AuditFile from "./pages/audit/file";
18-
import LoginPage from "./pages/login";
18+
// import LoginPage from "./pages/login";
19+
import AccessDemoPage from "./pages/accessDemo";
1920
import DashboardPage from "./pages/dashboard";
2021
import ProjectsPage from "./pages/projects";
2122
import Project from "./pages/project";
2223
import WorkspacesPage from "./pages/workspaces";
23-
import Auth from "./pages/auth";
24-
import ClaimInvitePage from "./pages/claimInvite";
25-
import ProtectedRoute from "./components/ProtectedRoute";
24+
// import Auth from "./pages/auth";
25+
// import ClaimInvitePage from "./pages/claimInvite";
26+
import DemoProtectedRoute from "./components/DemoProtectedRoute";
2627

2728
const reactFlowPaths = [
2829
"/splitConfigure",
@@ -32,77 +33,77 @@ const reactFlowPaths = [
3233
const router = createBrowserRouter([
3334
{
3435
path: "/",
35-
element: <Navigate to="/dashboard" />,
36-
},
37-
{
38-
path: "/login",
39-
element: <LoginPage />,
36+
element: <AccessDemoPage />,
4037
},
38+
// {
39+
// path: "/login",
40+
// element: <LoginPage />,
41+
// },
4142
{
4243
path: "/splitConfigure",
4344
element: <SplitConfigure />,
4445
},
4546
{
4647
path: "/dashboard",
47-
element: <ProtectedRoute />,
48+
element: <DemoProtectedRoute />,
4849
children: [
4950
{ index: true, element: <DashboardPage /> },
5051
],
5152
},
5253
{
5354
path: "/projects",
54-
element: <ProtectedRoute />,
55+
element: <DemoProtectedRoute />,
5556
children: [
5657
{ index: true, element: <ProjectsPage /> },
5758
],
5859
},
5960
{
6061
path: "/project/:id/overview",
61-
element: <ProtectedRoute />,
62+
element: <DemoProtectedRoute />,
6263
children: [
6364
{ index: true, element: <Project /> },
6465
],
6566
},
6667
{
6768
path: "/project/:id/splitConfigure", // Shows react flow
68-
element: <ProtectedRoute />,
69+
element: <DemoProtectedRoute />,
6970
children: [
7071
{ index: true, element: <Project /> },
7172
],
7273
},
7374
{
7475
path: "/project/:id/audit", // Shows react flow
75-
element: <ProtectedRoute />,
76+
element: <DemoProtectedRoute />,
7677
children: [
7778
{ index: true, element: <Project /> },
7879
],
7980
},
8081
{
8182
path: "/workspaces",
82-
element: <ProtectedRoute />,
83+
element: <DemoProtectedRoute />,
8384
children: [
8485
{ index: true, element: <WorkspacesPage /> },
8586
],
8687
},
87-
{
88-
path: "/invitations/claim/:inviteUuid",
89-
element: <ProtectedRoute />,
90-
children: [
91-
{ index: true, element: <ClaimInvitePage /> },
92-
],
93-
},
94-
{
95-
path: "/auth/github",
96-
element: <Auth provider="github" />,
97-
},
98-
{
99-
path: "/auth/gitlab",
100-
element: <Auth provider="gitlab" />,
101-
},
102-
{
103-
path: "/auth/bitbucket",
104-
element: <Auth provider="bitbucket" />,
105-
},
88+
// {
89+
// path: "/invitations/claim/:inviteUuid",
90+
// element: <ProtectedRoute />,
91+
// children: [
92+
// { index: true, element: <ClaimInvitePage /> },
93+
// ],
94+
// },
95+
// {
96+
// path: "/auth/github",
97+
// element: <Auth provider="github" />,
98+
// },
99+
// {
100+
// path: "/auth/gitlab",
101+
// element: <Auth provider="gitlab" />,
102+
// },
103+
// {
104+
// path: "/auth/bitbucket",
105+
// element: <Auth provider="bitbucket" />,
106+
// },
106107
// {
107108
// path: "/audit",
108109
// element: <BaseAudit />,

0 commit comments

Comments
 (0)