Skip to content

Commit 54c1d9b

Browse files
committed
improvements
1 parent 6d678e5 commit 54c1d9b

File tree

6 files changed

+39
-26
lines changed

6 files changed

+39
-26
lines changed

.devcontainer/devcontainer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"hollowtree.vue-snippets",
2121
"Vue.volar",
2222
"bradlc.vscode-tailwindcss",
23-
"shd101wyy.markdown-preview-enhanced"
23+
"shd101wyy.markdown-preview-enhanced",
24+
"formulahendry.auto-rename-tag"
2425
],
2526
"settings": {
2627
"terminal.integrated.shell.linux": "/bin/sh"

src/App.vue

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
<script setup>
2-
import { RouterView } from "vue-router";
2+
import { RouterView } from 'vue-router';
33
</script>
44

55
<template>
66
<!-- Use key to re-generate the page view component on each navigation :key="$route.path" -->
77
<!-- Alteratively, use a watch() on each component to re-render dynamic data as needed -->
88
<Toast position="top-center" />
9-
<Suspense>
10-
<RouterView />
11-
</Suspense>
9+
<RouterView v-slot="{ Component }">
10+
<Suspense timeout="0">
11+
<template #default>
12+
<component :is="Component" />
13+
</template>
14+
<template #fallback>
15+
<div class="h-screen flex items-center justify-center">
16+
<ProgressSpinner />
17+
</div>
18+
</template>
19+
</Suspense>
20+
</RouterView>
1221
</template>

src/composables/useAxiosForm.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { ref } from 'vue';
22
import axios from '@/utils/axios';
3-
import progress from '@/utils/progress';
43
import { useAxiosErrorHandling } from '@/composables/useAxiosErrorHandling';
54

65
export function useAxiosForm(initialData = {}) {
@@ -28,7 +27,6 @@ export function useAxiosForm(initialData = {}) {
2827
try {
2928
clearErrors();
3029
processing.value = true;
31-
progress.start();
3230

3331
if (options.onBefore) options.onBefore();
3432

@@ -48,9 +46,7 @@ export function useAxiosForm(initialData = {}) {
4846
} finally {
4947
if (onFinishCallback) onFinishCallback();
5048
if (options.onFinish) options.onFinish();
51-
5249
processing.value = false;
53-
progress.done();
5450
}
5551
};
5652

src/middleware/verified.js

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
export default async function verified({ to, from, authStore }) {
2+
if (to.name === 'verifyEmail') return;
3+
24
if (!authStore.user) {
35
await authStore.fetchUser();
46
}
5-
if (
6-
authStore.mustVerifyEmail &&
7-
new Boolean(authStore.user?.id) &&
8-
authStore.user.email_verified_at === null
9-
) {
10-
if (to.name !== 'verifyEmail') {
11-
return { name: 'verifyEmail' };
12-
}
7+
8+
if (authStore.mustVerifyEmail && new Boolean(authStore.user?.id) && authStore.user.email_verified_at === null) {
9+
return { name: 'verifyEmail' };
1310
}
1411
}

src/router/index.js

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,38 @@ const router = createRouter({
1414
{
1515
path: '/:pathMatch(.*)*', // 404 route not found
1616
name: 'NotFound',
17-
component: () => import('@/views/NotFound.vue'),
17+
component: () => import('@/views/error/NotFound.vue'),
1818
},
1919
],
2020
});
2121

22+
let progressTimeout = null;
2223
router.beforeEach(async (to, from) => {
23-
progress.start();
24+
progressTimeout = setTimeout(() => progress.start(), 250);
2425
const authStore = useAuthStore();
2526

2627
// Run middleware pipeline
27-
const context = { to, from, authStore };
28-
const routeMiddleware = to.meta.middleware || [];
29-
for (const middleware of routeMiddleware) {
30-
const result = await middleware(context);
31-
if (result) {
32-
return result; // Exit and redirect if middleware returns a route
28+
try {
29+
const context = { to, from, authStore };
30+
const routeMiddleware = to.meta.middleware || [];
31+
for (const middleware of routeMiddleware) {
32+
const result = await middleware(context);
33+
if (result) {
34+
return result; // Exit and redirect if middleware returns a route
35+
}
36+
}
37+
} finally {
38+
clearTimeout(progressTimeout);
39+
if (progress.isStarted()) {
40+
progress.done();
3341
}
3442
}
3543
});
3644

3745
router.afterEach(() => {
38-
progress.done();
46+
if (progress.isStarted()) {
47+
progress.done();
48+
}
3949
});
4050

4151
export default router;
File renamed without changes.

0 commit comments

Comments
 (0)