diff --git a/src/stores/transaction.ts b/src/stores/transaction.ts index bfd86854..90460a10 100644 --- a/src/stores/transaction.ts +++ b/src/stores/transaction.ts @@ -453,7 +453,7 @@ export const useTransactionsStore = defineStore('transactions', () => { } } - function isTransactionDraftModified(transaction?: Transaction, initAmount?: number, initCategoryId?: string, initAccountId?: string, initTagIds?: string): boolean { + function isTransactionDraftModified(transaction?: Transaction, initAmount?: number, initCategoryId?: string, initAccountId?: string, initTagIds?: string, firstVisibleAccountId?: string): boolean { if (!transaction) { return false; } @@ -466,7 +466,7 @@ export const useTransactionsStore = defineStore('transactions', () => { return true; } - if (transaction.sourceAccountId && transaction.sourceAccountId !== '0' && transaction.sourceAccountId !== userStore.currentUserDefaultAccountId && transaction.sourceAccountId !== initAccountId) { + if (transaction.sourceAccountId && transaction.sourceAccountId !== '0' && transaction.sourceAccountId !== userStore.currentUserDefaultAccountId && ((userStore.currentUserDefaultAccountId !== '' && userStore.currentUserDefaultAccountId !== '0') || transaction.sourceAccountId !== firstVisibleAccountId) && transaction.sourceAccountId !== initAccountId) { return true; } @@ -517,14 +517,14 @@ export const useTransactionsStore = defineStore('transactions', () => { return false; } - function saveTransactionDraft(transaction?: Transaction, initAmount?: number, initCategoryId?: string, initAccountId?: string, initTagIds?: string): void { + function saveTransactionDraft(transaction?: Transaction, initAmount?: number, initCategoryId?: string, initAccountId?: string, initTagIds?: string, firstVisibleAccountId?: string): void { if (settingsStore.appSettings.autoSaveTransactionDraft !== 'enabled' && settingsStore.appSettings.autoSaveTransactionDraft !== 'confirmation') { clearTransactionDraft(); return; } if (transaction) { - if (!isTransactionDraftModified(transaction, initAmount, initCategoryId, initAccountId, initTagIds)) { + if (!isTransactionDraftModified(transaction, initAmount, initCategoryId, initAccountId, initTagIds, firstVisibleAccountId)) { clearTransactionDraft(); return; } diff --git a/src/views/base/transactions/TransactionEditPageBase.ts b/src/views/base/transactions/TransactionEditPageBase.ts index aead3a49..2abc3bdd 100644 --- a/src/views/base/transactions/TransactionEditPageBase.ts +++ b/src/views/base/transactions/TransactionEditPageBase.ts @@ -108,6 +108,7 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo const allCategoriesMap = computed>(() => transactionCategoriesStore.allTransactionCategoriesMap); const allTags = computed(() => transactionTagsStore.allTransactionTags); const allTagsMap = computed>(() => transactionTagsStore.allTransactionTagsMap); + const firstVisibleAccountId = computed(() => allVisibleAccounts.value && allVisibleAccounts.value[0] ? allVisibleAccounts.value[0].id : undefined); const hasAvailableExpenseCategories = computed(() => transactionCategoriesStore.hasAvailableExpenseCategories); const hasAvailableIncomeCategories = computed(() => transactionCategoriesStore.hasAvailableIncomeCategories); @@ -436,6 +437,7 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo allCategoriesMap, allTags, allTagsMap, + firstVisibleAccountId, hasAvailableExpenseCategories, hasAvailableIncomeCategories, hasAvailableTransferCategories, diff --git a/src/views/desktop/transactions/list/dialogs/EditDialog.vue b/src/views/desktop/transactions/list/dialogs/EditDialog.vue index e2d4c79c..c329dc9a 100644 --- a/src/views/desktop/transactions/list/dialogs/EditDialog.vue +++ b/src/views/desktop/transactions/list/dialogs/EditDialog.vue @@ -617,6 +617,7 @@ const { allCategoriesMap, allTags, allTagsMap, + firstVisibleAccountId, hasAvailableExpenseCategories, hasAvailableIncomeCategories, hasAvailableTransferCategories, @@ -702,7 +703,7 @@ const isAllFilteredTagHidden = computed(() => { const isTransactionModified = computed(() => { if (mode.value === TransactionEditPageMode.Add) { - return transactionsStore.isTransactionDraftModified(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value); + return transactionsStore.isTransactionDraftModified(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value, firstVisibleAccountId.value); } else if (mode.value === TransactionEditPageMode.Edit) { return true; } else { @@ -1061,9 +1062,9 @@ function cancel(): void { } if (settingsStore.appSettings.autoSaveTransactionDraft === 'confirmation') { - if (transactionsStore.isTransactionDraftModified(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value)) { + if (transactionsStore.isTransactionDraftModified(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value, firstVisibleAccountId.value)) { confirmDialog.value?.open('Do you want to save this transaction draft?').then(() => { - transactionsStore.saveTransactionDraft(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value); + transactionsStore.saveTransactionDraft(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value, firstVisibleAccountId.value); doClose(); }).catch(() => { transactionsStore.clearTransactionDraft(); @@ -1074,7 +1075,7 @@ function cancel(): void { doClose(); } } else if (settingsStore.appSettings.autoSaveTransactionDraft === 'enabled') { - transactionsStore.saveTransactionDraft(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value); + transactionsStore.saveTransactionDraft(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value, firstVisibleAccountId.value); doClose(); } else { doClose(); diff --git a/src/views/mobile/transactions/EditPage.vue b/src/views/mobile/transactions/EditPage.vue index 2cf0cd14..19ca7227 100644 --- a/src/views/mobile/transactions/EditPage.vue +++ b/src/views/mobile/transactions/EditPage.vue @@ -567,6 +567,7 @@ const { allCategoriesMap, allTags, allTagsMap, + firstVisibleAccountId, hasAvailableExpenseCategories, hasAvailableIncomeCategories, hasAvailableTransferCategories, @@ -1235,9 +1236,9 @@ function onPageBeforeOut(): void { const initAmount: number | undefined = query['amount'] ? parseInt(query['amount']) : undefined; if (settingsStore.appSettings.autoSaveTransactionDraft === 'confirmation') { - if (transactionsStore.isTransactionDraftModified(transaction.value, initAmount, query['categoryId'], query['accountId'], query['tagIds'])) { + if (transactionsStore.isTransactionDraftModified(transaction.value, initAmount, query['categoryId'], query['accountId'], query['tagIds'], firstVisibleAccountId.value)) { showConfirm('Do you want to save this transaction draft?', () => { - transactionsStore.saveTransactionDraft(transaction.value, initAmount, query['categoryId'], query['accountId'], query['tagIds']); + transactionsStore.saveTransactionDraft(transaction.value, initAmount, query['categoryId'], query['accountId'], query['tagIds'], firstVisibleAccountId.value); }, () => { transactionsStore.clearTransactionDraft(); }); @@ -1245,7 +1246,7 @@ function onPageBeforeOut(): void { transactionsStore.clearTransactionDraft(); } } else if (settingsStore.appSettings.autoSaveTransactionDraft === 'enabled') { - transactionsStore.saveTransactionDraft(transaction.value, initAmount, query['categoryId'], query['accountId'], query['tagIds']); + transactionsStore.saveTransactionDraft(transaction.value, initAmount, query['categoryId'], query['accountId'], query['tagIds'], firstVisibleAccountId.value); } }