From 2e954801b889a688cf6a9f4eab0ac27707d871c4 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Mon, 24 Jul 2023 20:06:26 +0200 Subject: [PATCH] Always use a static back route (#2028) Fixes: https://github.com/woodpecker-ci/woodpecker/issues/1998 --------- Co-authored-by: 6543 <6543@obermui.de> --- web/src/compositions/useRouteBack.ts | 9 +++++++++ web/src/compositions/useRouteBackOrDefault.ts | 13 ------------- web/src/views/RepoAdd.vue | 4 ++-- web/src/views/org/OrgSettings.vue | 4 ++-- web/src/views/repo/RepoSettings.vue | 4 ++-- web/src/views/repo/pipeline/PipelineWrapper.vue | 4 ++-- 6 files changed, 17 insertions(+), 21 deletions(-) create mode 100644 web/src/compositions/useRouteBack.ts delete mode 100644 web/src/compositions/useRouteBackOrDefault.ts diff --git a/web/src/compositions/useRouteBack.ts b/web/src/compositions/useRouteBack.ts new file mode 100644 index 000000000..6d774d695 --- /dev/null +++ b/web/src/compositions/useRouteBack.ts @@ -0,0 +1,9 @@ +import { RouteLocationRaw, useRouter } from 'vue-router'; + +export function useRouteBack(to: RouteLocationRaw) { + const router = useRouter(); + + return async () => { + await router.replace(to); + }; +} diff --git a/web/src/compositions/useRouteBackOrDefault.ts b/web/src/compositions/useRouteBackOrDefault.ts deleted file mode 100644 index 6acafa4f3..000000000 --- a/web/src/compositions/useRouteBackOrDefault.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { RouteLocationRaw, useRouter } from 'vue-router'; - -export function useRouteBackOrDefault(to: RouteLocationRaw) { - const router = useRouter(); - - return async () => { - if ((window.history.state as { back: string }).back === null) { - await router.replace(to); - return; - } - router.back(); - }; -} diff --git a/web/src/views/RepoAdd.vue b/web/src/views/RepoAdd.vue index 6eb9a65f4..809d5bef3 100644 --- a/web/src/views/RepoAdd.vue +++ b/web/src/views/RepoAdd.vue @@ -37,7 +37,7 @@ import useApiClient from '~/compositions/useApiClient'; import { useAsyncAction } from '~/compositions/useAsyncAction'; import useNotifications from '~/compositions/useNotifications'; import { useRepoSearch } from '~/compositions/useRepoSearch'; -import { useRouteBackOrDefault } from '~/compositions/useRouteBackOrDefault'; +import { useRouteBack } from '~/compositions/useRouteBack'; import { Repo } from '~/lib/api/types'; const router = useRouter(); @@ -62,5 +62,5 @@ const { doSubmit: activateRepo, isLoading: isActivatingRepo } = useAsyncAction(a await router.push({ name: 'repo', params: { repoId: _repo.id } }); }); -const goBack = useRouteBackOrDefault({ name: 'repos' }); +const goBack = useRouteBack({ name: 'repos' }); diff --git a/web/src/views/org/OrgSettings.vue b/web/src/views/org/OrgSettings.vue index b8a8c232c..90d3f61b6 100644 --- a/web/src/views/org/OrgSettings.vue +++ b/web/src/views/org/OrgSettings.vue @@ -25,7 +25,7 @@ import Tab from '~/components/layout/scaffold/Tab.vue'; import OrgSecretsTab from '~/components/org/settings/OrgSecretsTab.vue'; import { inject } from '~/compositions/useInjectProvide'; import useNotifications from '~/compositions/useNotifications'; -import { useRouteBackOrDefault } from '~/compositions/useRouteBackOrDefault'; +import { useRouteBack } from '~/compositions/useRouteBack'; const notifications = useNotifications(); const router = useRouter(); @@ -41,5 +41,5 @@ onMounted(async () => { } }); -const goBack = useRouteBackOrDefault({ name: 'repos-owner' }); +const goBack = useRouteBack({ name: 'org' }); diff --git a/web/src/views/repo/RepoSettings.vue b/web/src/views/repo/RepoSettings.vue index 9238f3ffa..bdaed99c8 100644 --- a/web/src/views/repo/RepoSettings.vue +++ b/web/src/views/repo/RepoSettings.vue @@ -49,7 +49,7 @@ import GeneralTab from '~/components/repo/settings/GeneralTab.vue'; import RegistriesTab from '~/components/repo/settings/RegistriesTab.vue'; import SecretsTab from '~/components/repo/settings/SecretsTab.vue'; import useNotifications from '~/compositions/useNotifications'; -import { useRouteBackOrDefault } from '~/compositions/useRouteBackOrDefault'; +import { useRouteBack } from '~/compositions/useRouteBack'; import { Repo, RepoPermissions } from '~/lib/api/types'; const notifications = useNotifications(); @@ -73,5 +73,5 @@ onMounted(async () => { } }); -const goBack = useRouteBackOrDefault({ name: 'repo' }); +const goBack = useRouteBack({ name: 'repo' }); diff --git a/web/src/views/repo/pipeline/PipelineWrapper.vue b/web/src/views/repo/pipeline/PipelineWrapper.vue index 45a08dfbd..bfaed74c0 100644 --- a/web/src/views/repo/pipeline/PipelineWrapper.vue +++ b/web/src/views/repo/pipeline/PipelineWrapper.vue @@ -91,7 +91,7 @@ import { useAsyncAction } from '~/compositions/useAsyncAction'; import { useFavicon } from '~/compositions/useFavicon'; import useNotifications from '~/compositions/useNotifications'; import usePipeline from '~/compositions/usePipeline'; -import { useRouteBackOrDefault } from '~/compositions/useRouteBackOrDefault'; +import { useRouteBack } from '~/compositions/useRouteBack'; import { Repo, RepoPermissions } from '~/lib/api/types'; import { usePipelineStore } from '~/store/pipelines'; @@ -196,5 +196,5 @@ const activeTab = computed({ }, }); -const goBack = useRouteBackOrDefault({ name: 'repo' }); +const goBack = useRouteBack({ name: 'repo' });