Use router.replace() to prevent invalid back navigations (#9959)

This commit is contained in:
ian
2021-11-23 00:50:09 +08:00
committed by GitHub
parent 37dc1d44b1
commit 89bf066056
12 changed files with 16 additions and 15 deletions

View File

@@ -154,7 +154,7 @@ export default defineComponent({
deleteActive.value = false;
if (navigateTo) {
router.push(navigateTo);
router.replace(navigateTo);
}
} catch (err: any) {
unexpectedError(err);

View File

@@ -481,7 +481,7 @@ export default defineComponent({
try {
await remove();
edits.value = {};
router.push(`/content/${props.collection}`);
router.replace(`/content/${props.collection}`);
} catch {
// `remove` will show the unexpected error dialog
}

View File

@@ -276,9 +276,9 @@ export default defineComponent({
await api.delete(`/folders/${props.folder.id}`);
if (newParent) {
router.push(`/files/folders/${newParent}`);
router.replace(`/files/folders/${newParent}`);
} else {
router.push('/files');
router.replace('/files');
}
deleteActive.value = false;

View File

@@ -404,7 +404,7 @@ export default defineComponent({
async function deleteAndQuit() {
try {
await remove();
router.push(to.value);
router.replace(to.value);
} catch {
// `remove` will show the unexpected error dialog
confirmDelete.value = false;

View File

@@ -90,7 +90,7 @@
:dashboard-key="primaryKey"
:panel="panelKey ? panels.find((panel) => panel.id === panelKey) : null"
@save="stageConfiguration"
@cancel="$router.push(`/insights/${primaryKey}`)"
@cancel="$router.replace(`/insights/${primaryKey}`)"
/>
<v-dialog :model-value="!!movePanelID" @update:model-value="movePanelID = null" @esc="movePanelID = null">
@@ -361,7 +361,7 @@ export default defineComponent({
function stageConfiguration(edits: Partial<Panel>) {
stagePanelEdits({ edits });
router.push(`/insights/${props.primaryKey}`);
router.replace(`/insights/${props.primaryKey}`);
}
async function saveChanges() {

View File

@@ -204,7 +204,7 @@ export default defineComponent({
await remove();
await collectionsStore.hydrate();
await fieldsStore.hydrate();
router.push(`/settings/data-model`);
router.replace(`/settings/data-model`);
}
async function saveAndStay() {

View File

@@ -264,7 +264,7 @@ export default defineComponent({
type: 'success',
});
router.push(`/settings/data-model/${collectionName.value}`);
router.replace(`/settings/data-model/${collectionName.value}`);
} catch (err: any) {
unexpectedError(err);
} finally {

View File

@@ -314,7 +314,7 @@ export default defineComponent({
try {
await api.delete(`/presets/${props.id}`);
router.push(`/settings/presets`);
router.replace(`/settings/presets`);
} catch (err: any) {
unexpectedError(err);
} finally {

View File

@@ -232,7 +232,7 @@ export default defineComponent({
async function deleteAndQuit() {
await remove();
router.push(`/settings/roles`);
router.replace(`/settings/roles`);
}
function discardAndLeave() {

View File

@@ -179,9 +179,10 @@ export default defineComponent({
async function close() {
if (permission.value && isPermissionEmpty(permission.value)) {
await api.delete(`/permissions/${permission.value.id}`);
router.replace(`/settings/roles/${props.roleKey || 'public'}`);
} else {
router.push(`/settings/roles/${props.roleKey || 'public'}`);
}
router.push(`/settings/roles/${props.roleKey || 'public'}`);
}
async function load() {

View File

@@ -210,7 +210,7 @@ export default defineComponent({
async function deleteAndQuit() {
await remove();
router.push(`/settings/webhooks`);
router.replace(`/settings/webhooks`);
}
function discardAndLeave() {

View File

@@ -432,7 +432,7 @@ export default defineComponent({
async function deleteAndQuit() {
try {
await remove();
router.push(`/users`);
router.replace(`/users`);
} catch {
// `remove` will show the unexpected error dialog
}