Don't navigate on save error

This commit is contained in:
rijkvanzanten
2020-11-11 15:57:32 -05:00
parent 8a4578fee6
commit ef901218a5
4 changed files with 87 additions and 42 deletions

View File

@@ -117,8 +117,9 @@ export function useItem(collection: Ref<string>, primaryKey: Ref<string | number
});
} else {
unexpectedError(err);
throw err;
}
throw err;
} finally {
saving.value = false;
}

View File

@@ -393,39 +393,55 @@ export default defineComponent({
async function saveAndQuit() {
if (isSavable.value === false) return;
await save();
if (props.singleton === false) router.push(`/collections/${props.collection}`);
try {
await save();
if (props.singleton === false) router.push(`/collections/${props.collection}`);
} catch {
// Save shows unexpected error dialog
}
}
async function saveAndStay() {
if (isSavable.value === false) return;
const savedItem: Record<string, any> = await save();
try {
const savedItem: Record<string, any> = await save();
revisionsDrawerDetail.value?.$data?.refresh?.();
revisionsDrawerDetail.value?.$data?.refresh?.();
if (props.primaryKey === '+') {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const newPrimaryKey = savedItem[primaryKeyField.value!.field];
router.replace(`/collections/${props.collection}/${newPrimaryKey}`);
if (props.primaryKey === '+') {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const newPrimaryKey = savedItem[primaryKeyField.value!.field];
router.replace(`/collections/${props.collection}/${newPrimaryKey}`);
}
} catch {
// Save shows unexpected error dialog
}
}
async function saveAndAddNew() {
if (isSavable.value === false) return;
await save();
try {
await save();
if (isNew.value === true) {
refresh();
} else {
router.push(`/collections/${props.collection}/+`);
if (isNew.value === true) {
refresh();
} else {
router.push(`/collections/${props.collection}/+`);
}
} catch {
// Save shows unexpected error dialog
}
}
async function saveAsCopyAndNavigate() {
const newPrimaryKey = await saveAsCopy();
router.push(`/collections/${props.collection}/${newPrimaryKey}`);
try {
const newPrimaryKey = await saveAsCopy();
router.push(`/collections/${props.collection}/${newPrimaryKey}`);
} catch {
// Save shows unexpected error dialog
}
}
async function deleteAndQuit() {
@@ -438,12 +454,16 @@ export default defineComponent({
}
async function toggleArchive() {
await archive();
try {
await archive();
if (isArchived.value === true) {
router.push(`/collections/${props.collection}`);
} else {
confirmArchive.value = false;
if (isArchived.value === true) {
router.push(`/collections/${props.collection}`);
} else {
confirmArchive.value = false;
}
} catch {
// `archive` will show the unexpected error dialog
}
}

View File

@@ -379,13 +379,21 @@ export default defineComponent({
}
async function saveAndQuit() {
await save();
router.push(`/files`);
try {
await save();
router.push(`/files`);
} catch {
// `save` will show unexpected error dialog
}
}
async function saveAndStay() {
await save();
revisionsDrawerDetail.value?.$data?.refresh?.();
try {
await save();
revisionsDrawerDetail.value?.$data?.refresh?.();
} catch {
// `save` will show unexpected error dialog
}
}
async function saveAsCopyAndNavigate() {

View File

@@ -356,35 +356,51 @@ export default defineComponent({
}
async function saveAndQuit() {
const savedItem: Record<string, any> = await save();
await setLang(savedItem);
await refreshCurrentUser();
router.push(`/users`);
try {
const savedItem: Record<string, any> = await save();
await setLang(savedItem);
await refreshCurrentUser();
router.push(`/users`);
} catch {
// `save` will show unexpected error dialog
}
}
async function saveAndStay() {
const savedItem: Record<string, any> = await save();
await setLang(savedItem);
try {
const savedItem: Record<string, any> = await save();
await setLang(savedItem);
revisionsDrawerDetail.value?.$data?.refresh?.();
revisionsDrawerDetail.value?.$data?.refresh?.();
if (props.primaryKey === '+') {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const newPrimaryKey = savedItem.id;
router.replace(`/collections/users/${newPrimaryKey}`);
if (props.primaryKey === '+') {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const newPrimaryKey = savedItem.id;
router.replace(`/collections/users/${newPrimaryKey}`);
}
} catch {
// `save` will show unexpected error dialog
}
}
async function saveAndAddNew() {
const savedItem: Record<string, any> = await save();
await setLang(savedItem);
await refreshCurrentUser();
router.push(`/users/+`);
try {
const savedItem: Record<string, any> = await save();
await setLang(savedItem);
await refreshCurrentUser();
router.push(`/users/+`);
} catch {
// `save` will show unexpected error dialog
}
}
async function saveAsCopyAndNavigate() {
const newPrimaryKey = await saveAsCopy();
router.push(`/users/${newPrimaryKey}`);
try {
const newPrimaryKey = await saveAsCopy();
router.push(`/users/${newPrimaryKey}`);
} catch {
// `save` will show unexpected error dialog
}
}
async function deleteAndQuit() {