support using duplicate checker to prevent duplicate submissions for new transaction record

This commit is contained in:
MaysWind
2024-07-07 21:28:07 +08:00
parent a2d6aff28b
commit 847349dcbd
28 changed files with 371 additions and 31 deletions
+5 -1
View File
@@ -428,6 +428,7 @@ import iconConstants from '@/consts/icon.js';
import colorConstants from '@/consts/color.js';
import transactionConstants from '@/consts/transaction.js';
import { getNameByKeyValue } from '@/lib/common.js';
import { generateRandomUUID } from '@/lib/misc.js';
import {
setAccountModelByAnotherAccount,
setAccountSuitableIcon
@@ -447,6 +448,7 @@ export default {
return {
editAccountId: null,
clientSessionId: '',
loading: false,
loadingError: null,
account: newAccount,
@@ -547,6 +549,7 @@ export default {
}
});
} else {
self.clientSessionId = generateRandomUUID();
self.loading = false;
}
},
@@ -614,7 +617,8 @@ export default {
self.accountsStore.saveAccount({
account: self.account,
subAccounts: self.subAccounts,
isEdit: !!self.editAccountId
isEdit: !!self.editAccountId,
clientSessionId: self.clientSessionId
}).then(() => {
self.submitting = false;
self.$hideLoading();
+5 -1
View File
@@ -153,6 +153,7 @@ import categoryConstants from '@/consts/category.js';
import iconConstants from '@/consts/icon.js';
import colorConstants from '@/consts/color.js';
import { getNameByKeyValue } from '@/lib/common.js';
import { generateRandomUUID } from '@/lib/misc.js';
import {
setCategoryModelByAnotherCategory,
allVisiblePrimaryTransactionCategoriesByType
@@ -172,6 +173,7 @@ export default {
return {
editCategoryId: null,
clientSessionId: '',
loading: false,
loadingError: null,
category: newTransactionCategory,
@@ -257,6 +259,7 @@ export default {
return;
}
self.clientSessionId = generateRandomUUID();
self.loading = false;
}
},
@@ -280,7 +283,8 @@ export default {
self.transactionCategoriesStore.saveCategory({
category: self.category,
isEdit: !!self.editCategoryId
isEdit: !!self.editCategoryId,
clientSessionId: self.clientSessionId
}).then(() => {
self.submitting = false;
self.$hideLoading();
+8 -1
View File
@@ -367,6 +367,7 @@ import {
getUtcOffsetByUtcOffsetMinutes,
getActualUnixTimeForStore
} from '@/lib/datetime.js';
import { generateRandomUUID } from '@/lib/misc.js';
import {
getTransactionPrimaryCategoryName,
getTransactionSecondaryCategoryName,
@@ -389,6 +390,7 @@ export default {
mode: 'add',
editTransactionId: null,
transaction: newTransaction,
clientSessionId: '',
loading: true,
loadingError: null,
geoLocationStatus: null,
@@ -663,6 +665,10 @@ export default {
self.transaction.type = parseInt(query.type);
}
if (self.mode === 'add') {
self.clientSessionId = generateRandomUUID();
}
Promise.all(promises).then(function (responses) {
if (query.id && !responses[3]) {
self.$toast('Unable to retrieve transaction');
@@ -723,7 +729,8 @@ export default {
self.transactionsStore.saveTransaction({
transaction: self.transaction,
defaultCurrency: self.defaultCurrency,
isEdit: self.mode === 'edit'
isEdit: self.mode === 'edit',
clientSessionId: self.clientSessionId
}).then(() => {
self.submitting = false;
self.$hideLoading();