Skip to content

Commit d484a32

Browse files
committed
cleaned up routes list, routes layout
1 parent afa563c commit d484a32

18 files changed

+287
-528
lines changed

Diff for: .vscode/settings.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99
"i18n-ally.localesPaths": ["src/locale"],
1010
"i18n-ally.keystyle": "nested",
1111
"[svelte]": {
12-
"editor.defaultFormatter": "svelte.svelte-vscode"
12+
"editor.defaultFormatter": "esbenp.prettier-vscode"
1313
}
1414
}

Diff for: src/App.svelte

+23-43
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script>
22
// importing Modules
3-
import { Router, Route } from "svelte-navigator";
3+
import { Router, Route, navigate } from "svelte-navigator";
44
import { onMount } from "svelte";
55
import fetchUserPermissions from "./api/userPermissions";
66
import fetchPeriods from "./api/periods";
@@ -9,10 +9,7 @@
99
import Login from "./routes/Login.svelte";
1010
import Home from "./routes/Home.svelte";
1111
import Admin from "./routes/Admin.svelte";
12-
import MyProject from "./routes/MyProject.svelte";
13-
import Projects from "./routes/Projects.svelte";
1412
import ForgotPassword from "./routes/ForgotPassword.svelte";
15-
import Layout from "./routes/Layout.svelte";
1613
import ChangePassword from "./routes/ChangePassword.svelte";
1714
import Register from "./routes/Register.svelte";
1815
import RequestActivation from "./routes/RequestActivation.svelte";
@@ -23,8 +20,9 @@
2320
import Indicator from "./lib/Indicator.svelte";
2421
import { getCurrentUserInfoAndStore } from "./api/user";
2522
import Profile from "./routes/Profile.svelte";
26-
import SupervisedProjects from "./routes/SupervisedProjects.svelte";
27-
import ValidateProjects from "./routes/ValidateProjects.svelte";
23+
import Navbar from "./lib/Navbar.svelte";
24+
import ProjectsRoutes from "./routes/ProjectsRoutes.svelte";
25+
import { routesStore } from "./stores/routesStore";
2826
2927
let indicatorVisible = false;
3028
let indicatorContent;
@@ -38,9 +36,12 @@
3836
3937
let loadPage = false;
4038
onMount(async () => {
41-
await fetchUserPermissions();
42-
await fetchPeriods();
43-
await getCurrentUserInfoAndStore();
39+
// performance enhancement
40+
await Promise.allSettled([
41+
fetchUserPermissions(),
42+
fetchPeriods(),
43+
getCurrentUserInfoAndStore(),
44+
]);
4445
loadPage = true;
4546
});
4647
@@ -51,6 +52,7 @@
5152
// now gotta verify if his token is still valid by sending GET /auth , if 200 status he is logged in, else he is not, I will do this later (mor l ftour)
5253
} else {
5354
userIsLoggedIn = false;
55+
navigate("/login");
5456
}
5557
</script>
5658

@@ -91,44 +93,22 @@
9193
</Route>
9294

9395
<!-- Components that need navbar and sidebar -->
94-
<Route path="/">
95-
<Layout>
96+
<Route>
97+
<Navbar />
98+
99+
<Route path="/">
96100
<Home />
97-
</Layout>
98-
</Route>
99-
<Route path="/profile/">
100-
<Layout showSidebar={false}>
101+
</Route>
102+
<Route path="/profile/">
101103
<Profile on:showIndicator={showIndicator} />
102-
</Layout>
103-
</Route>
104-
<Route path="/admin/*">
105-
<Layout>
104+
</Route>
105+
<Route path="/admin/*">
106106
<Admin on:showIndicator={showIndicator} />
107-
</Layout>
108-
</Route>
109-
<Route path="/my%20project">
110-
<Layout showSidebar={false}>
111-
<MyProject on:showIndicator={showIndicator} />
112-
</Layout>
113-
</Route>
114-
<Route path="/supervised%20projects">
115-
<Layout showSidebar={false}>
116-
<SupervisedProjects on:showIndicator={showIndicator} />
117-
</Layout>
118-
</Route>
119-
<Route path="/validate%20projects">
120-
<Layout showSidebar={false}>
121-
<ValidateProjects on:showIndicator={showIndicator} />
122-
</Layout>
123-
</Route>
124-
<Route path="/projects/*">
125-
<Layout showSidebar={false}>
126-
<Projects on:showIndicator={showIndicator} />
127-
</Layout>
107+
</Route>
108+
<Route path="/projects/*">
109+
<ProjectsRoutes on:showIndicator={showIndicator} />
110+
</Route>
128111
</Route>
129112
</main>
130113
</Router>
131114
{/if}
132-
133-
<style>
134-
</style>

Diff for: src/config/routesList.ts

+12-13
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
11
// this file stores the routes that will appear in the navbar for each user, if you want to add a route just change the array.
22
let routesByUsers = {
33
admin: [
4-
{ path: "admin", index: 0 },
5-
{ path: "projects", index: 1 },
6-
// { path: "announcements", index: 2 },
7-
{ path: "profile", index: 3 },
4+
{ path: "admin", name: "admin" },
5+
{ path: "announcements", name: "announcements" },
6+
{ path: "profile", index: "profile" },
87
],
98
student: [
10-
{ path: "my project", index: 0 },
11-
// { path: "announcements", index: 1 },
12-
{ path: "profile", index: 2 },
9+
{ path: "/projects?type=my", name: "my project" },
10+
// { path: "announcements", name: 1 },
11+
{ path: "profile", name: "profile" },
1312
],
1413
teacher: [
15-
{ path: "my project", index: 0 },
16-
// { path: "announcements", index: 1 },
17-
{ path: "profile", index: 2 },
18-
{ path: "supervised projects", index: 3 },
14+
{ path: "/projects?type=my", name: "my projects" },
15+
{ path: "/projects?type=supervisor", name: "supervised projects" },
16+
{ path: "announcements", name: "announcements" },
17+
{ path: "profile", name: "profile" },
1918
],
2019
sc: [
21-
{ path: "profile", index: 0 },
22-
{ path: "validate projects", index: 1 },
20+
{ path: "profile", name: "profile" },
21+
{ path: "/projects?type=sc", name: "submitted projects" }, // to validate
2322
],
2423
guest: [],
2524
};

Diff for: src/config/sidebarList.ts

+8-14
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
// this file stores the elements that will appear in the sidebar for each user, if you want to add an element just change the array.
2-
let elementsByUsers = {
2+
export const sidebarLists = {
33
admin: [
4-
{ path: "users", index: 0 },
5-
{ path: "roles", index: 1 },
6-
{ path: "periods", index: 2 },
4+
{ path: "users", name: "users" },
5+
{ path: "roles", name: "roles" },
6+
{ path: "periods", name: "periods" },
77
],
8-
student: [
9-
{ path: "student1", index: 0 },
10-
{ path: "student2", index: 1 },
11-
{ path: "student3", index: 2 },
12-
],
13-
teacher: [
14-
{ path: "teacher1", index: 0 },
15-
{ path: "teacher2", index: 1 },
16-
{ path: "teacher3", index: 2 },
8+
project: [
9+
{ path: "", name: "general information" },
10+
{ path: "tasks", name: "tasks" },
11+
{ path: "soutenance", name: "defense" },
1712
],
1813
};
19-
export default elementsByUsers;

Diff for: src/lib/HomeAuthorizedUser.svelte

+2-25
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,10 @@
22
<script>
33
import { onMount } from "svelte";
44
import { useNavigate } from "svelte-navigator";
5-
import { userPermissions } from "../stores/userPermissions";
6-
import routes from "../config/routesList";
7-
import { currentUserInfo } from "src/stores/currentUserInfo";
5+
import { routesStore } from "src/stores/routesStore";
86
97
const navigate = useNavigate();
10-
11-
let userIsAdmin = $userPermissions.some(
12-
(obj) => obj.name === "canManageAll"
13-
);
14-
15-
let userIsStudent = $currentUserInfo.type == "student";
16-
17-
let userIsTeacher = $currentUserInfo.type == "teacher";
18-
19-
let routesList = [];
20-
let userIsSc = $userPermissions.some((obj) => obj.name === "sc");
21-
if (userIsSc) {
22-
routesList = routes.sc;
23-
} else if (userIsAdmin) {
24-
routesList = routes.admin;
25-
} else if (userIsTeacher) {
26-
routesList = routes.teacher;
27-
} else if (userIsStudent) {
28-
routesList = routes.student;
29-
}
30-
318
onMount(() => {
32-
navigate(routesList[0].path);
9+
navigate($routesStore[0].path);
3310
});
3411
</script>

Diff for: src/lib/Menu.svelte

+3-28
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,10 @@
11
<script>
22
import { Link } from "svelte-navigator";
3-
import { userPermissions } from "../stores/userPermissions";
4-
import routes from "../config/routesList";
53
import { _ } from "svelte-i18n";
6-
import { currentUserInfo } from "src/stores/currentUserInfo";
4+
import { routesStore } from "src/stores/routesStore";
75
86
export let menu;
9-
10-
let userIsAdmin = $userPermissions.some(
11-
(obj) => obj.name === "canManageAll"
12-
);
13-
14-
let userIsStudent = $currentUserInfo.type == "student";
15-
16-
let userIsTeacher = $currentUserInfo.type == "teacher";
17-
18-
let routesList;
19-
let userIsSc = $userPermissions.some((obj) => obj.name === "sc");
20-
if (userIsSc) {
21-
routesList = routes.sc;
22-
} else if (userIsAdmin) {
23-
routesList = routes.admin;
24-
} else if (userIsTeacher) {
25-
routesList = routes.teacher;
26-
} else if (userIsStudent) {
27-
routesList = routes.student;
28-
} else {
29-
routesList = routes.guest;
30-
}
31-
32-
console.log(routesList);
7+
let routesList = $routesStore;
338
</script>
349

3510
<div
@@ -52,7 +27,7 @@
5227
d="M9 5l7 7-7 7"
5328
/></svg
5429
>
55-
<Link to="/{route.path}">{$_(`navbar.${route.path}`)} + hello</Link>
30+
<Link to="/{route.path}">{$_(`navbar.${route.name}`)}</Link>
5631
</div>
5732
{:else}
5833
<div class="flex justify-start gap-4 px-2">

Diff for: src/lib/Navbar.svelte

+4-23
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,11 @@
1010
import DarkModeTogglerLogin from "../lib/DarkModeTogglerLogin.svelte";
1111
import LanguageMenuLogin from "../lib/LanguageMenuLogin.svelte";
1212
import { currentUserInfo } from "src/stores/currentUserInfo";
13+
import { routesStore } from "src/stores/routesStore";
1314
1415
const dispatch = createEventDispatcher();
1516
16-
let userIsAdmin = $userPermissions.some(
17-
(obj) => obj.name === "canManageAll"
18-
);
19-
20-
let userIsStudent = $currentUserInfo.type == "student";
21-
22-
let userIsTeacher = $currentUserInfo.type == "teacher";
23-
24-
let routesList = [];
25-
let userIsSc = $userPermissions.some((obj) => obj.name === "sc");
26-
if (userIsSc) {
27-
routesList = routes.sc;
28-
} else if (userIsAdmin) {
29-
routesList = routes.admin;
30-
} else if (userIsTeacher) {
31-
routesList = routes.teacher;
32-
} else if (userIsStudent) {
33-
routesList = routes.student;
34-
} else {
35-
routesList = routes.guest;
36-
}
17+
let routesList = $routesStore;
3718
3819
let toggleMenu = () => {
3920
dispatch("toggleMenu");
@@ -94,11 +75,11 @@
9475
<li
9576
class="relative cursor-pointer px-2 hover:opacity-100 {$location.pathname
9677
.replace(/%20/g, ' ')
97-
.startsWith(`/${route.path}`)
78+
.startsWith(`/${route.name}`)
9879
? 'opacity-100'
9980
: 'opacity-60'} transition-all"
10081
>
101-
<Link to="/{route.path}">{$_(`navbar.${route.path}`)}</Link>
82+
<Link to="/{route.path}">{$_(`navbar.${route.name}`)}</Link>
10283
<span
10384
class="absolute -bottom-1 left-0 h-1 {$location.pathname
10485
.replace(/%20/g, ' ')

0 commit comments

Comments
 (0)