From f61723dac251c9d85102beae73c6a03df10bd4bf Mon Sep 17 00:00:00 2001 From: kolaente Date: Sun, 23 Oct 2022 13:12:04 +0200 Subject: [PATCH] fix: redirect with query parameters --- src/composables/useRedirectToLastVisited.ts | 26 +++++++++++++++++++++ src/helpers/saveLastVisited.ts | 4 ++-- src/router/index.ts | 2 +- src/views/user/Login.vue | 16 +++---------- src/views/user/OpenIdAuth.vue | 17 ++++---------- 5 files changed, 36 insertions(+), 29 deletions(-) create mode 100644 src/composables/useRedirectToLastVisited.ts diff --git a/src/composables/useRedirectToLastVisited.ts b/src/composables/useRedirectToLastVisited.ts new file mode 100644 index 000000000..838028cb6 --- /dev/null +++ b/src/composables/useRedirectToLastVisited.ts @@ -0,0 +1,26 @@ +import {useRouter} from 'vue-router' +import {getLastVisited, clearLastVisited} from '@/helpers/saveLastVisited' + +export function useRedirectToLastVisited() { + + const router = useRouter() + + function redirectIfSaved() { + const last = getLastVisited() + if (last !== null) { + router.push({ + name: last.name, + params: last.params, + query: last.query, + }) + clearLastVisited() + return + } + + router.push({name: 'home'}) + } + + return { + redirectIfSaved, + } +} \ No newline at end of file diff --git a/src/helpers/saveLastVisited.ts b/src/helpers/saveLastVisited.ts index fc731d269..a7043ce93 100644 --- a/src/helpers/saveLastVisited.ts +++ b/src/helpers/saveLastVisited.ts @@ -1,7 +1,7 @@ const LAST_VISITED_KEY = 'lastVisited' -export const saveLastVisited = (name: string, params: object) => { - localStorage.setItem(LAST_VISITED_KEY, JSON.stringify({name, params})) +export const saveLastVisited = (name: string, params: object, query: object) => { + localStorage.setItem(LAST_VISITED_KEY, JSON.stringify({name, params, query})) } export const getLastVisited = () => { diff --git a/src/router/index.ts b/src/router/index.ts index 2a10fa4b3..d836fc6b4 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -484,7 +484,7 @@ export function getAuthForRoute(route: RouteLocation) { localStorage.getItem('emailConfirmToken') === null && !(route.name === 'home' && (typeof route.query.userPasswordReset !== 'undefined' || typeof route.query.userEmailConfirm !== 'undefined')) ) { - saveLastVisited(route.name as string, route.params) + saveLastVisited(route.name as string, route.params, route.query) return {name: 'user.login'} } diff --git a/src/views/user/Login.vue b/src/views/user/Login.vue index 133604848..82714ebee 100644 --- a/src/views/user/Login.vue +++ b/src/views/user/Login.vue @@ -104,7 +104,6 @@