diff --git a/src/views/base/transactions/TransactionEditPageBase.ts b/src/views/base/transactions/TransactionEditPageBase.ts index b44d792a..fa291c7a 100644 --- a/src/views/base/transactions/TransactionEditPageBase.ts +++ b/src/views/base/transactions/TransactionEditPageBase.ts @@ -42,6 +42,11 @@ import { getCurrentUnixTime } from '@/lib/datetime.ts'; +import { + type SetTransactionOptions, + setTransactionModelByTransaction +} from '@/lib/transaction.ts'; + export enum TransactionEditPageType { Transaction = 'transaction', Template = 'template' @@ -365,6 +370,31 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo return newTransaction; } + function setTransactionModel(newTransaction: Transaction | null, options: SetTransactionOptions | undefined, setContextData: boolean): void { + setTransactionModelByTransaction( + transaction.value, + newTransaction, + allCategories.value, + allCategoriesMap.value, + allVisibleAccounts.value, + allAccountsMap.value, + allTagsMap.value, + defaultAccountId.value, + { + time: options?.time, + type: options?.type, + categoryId: options?.categoryId, + accountId: options?.accountId, + destinationAccountId: options?.destinationAccountId, + amount: options?.amount, + destinationAmount: options?.destinationAmount, + tagIds: options?.tagIds, + comment: options?.comment + }, + setContextData + ); + } + function updateTransactionTime(newTime: number): void { transaction.value.time = newTime; updateTransactionTimezone(transaction.value.timeZone ?? ''); @@ -502,6 +532,7 @@ export function useTransactionEditPageBase(type: TransactionEditPageType, initMo inputIsEmpty, // functions createNewTransactionModel, + setTransactionModel, updateTransactionTime, updateTransactionTimezone, swapTransactionData, diff --git a/src/views/desktop/transactions/list/dialogs/EditDialog.vue b/src/views/desktop/transactions/list/dialogs/EditDialog.vue index f66bcef9..3d7a53c4 100644 --- a/src/views/desktop/transactions/list/dialogs/EditDialog.vue +++ b/src/views/desktop/transactions/list/dialogs/EditDialog.vue @@ -506,7 +506,7 @@ import { getTransactionPrimaryCategoryName, getTransactionSecondaryCategoryName } from '@/lib/category.ts'; -import { type SetTransactionOptions, setTransactionModelByTransaction } from '@/lib/transaction.ts'; +import { type SetTransactionOptions } from '@/lib/transaction.ts'; import { isTransactionPicturesEnabled, getMapProvider @@ -568,15 +568,11 @@ const { setGeoLocationByClickMap, transaction, defaultCurrency, - defaultAccountId, coordinateDisplayType, allTimezones, allVisibleAccounts, - allAccountsMap, allVisibleCategorizedAccounts, allCategories, - allCategoriesMap, - allTagsMap, firstVisibleAccountId, hasVisibleExpenseCategories, hasVisibleIncomeCategories, @@ -599,6 +595,7 @@ const { inputEmptyProblemMessage, inputIsEmpty, createNewTransactionModel, + setTransactionModel, updateTransactionTime, updateTransactionTimezone, swapTransactionData, @@ -625,10 +622,7 @@ const noTransactionDraft = ref(false); const geoMenuState = ref(false); const removingPictureId = ref(''); -const initAmount = ref(undefined); -const initCategoryId = ref(undefined); -const initAccountId = ref(undefined); -const initTagIds = ref(undefined); +const initOptions = ref(undefined); let resolveFunc: ((response?: TransactionEditResponse) => void) | null = null; let rejectFunc: ((reason?: unknown) => void) | null = null; @@ -645,11 +639,9 @@ const sourceAmountColor = computed(() => { return undefined; }); - - const isTransactionModified = computed(() => { if (mode.value === TransactionEditPageMode.Add) { - return transactionsStore.isTransactionDraftModified(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value, firstVisibleAccountId.value); + return transactionsStore.isTransactionDraftModified(transaction.value, initOptions.value?.amount, initOptions.value?.categoryId, initOptions.value?.accountId, initOptions.value?.tagIds, firstVisibleAccountId.value); } else if (mode.value === TransactionEditPageMode.Edit) { return true; } else { @@ -657,31 +649,6 @@ const isTransactionModified = computed(() => { } }); -function setTransaction(newTransaction: Transaction | null, options: SetTransactionOptions, setContextData: boolean): void { - setTransactionModelByTransaction( - transaction.value, - newTransaction, - allCategories.value, - allCategoriesMap.value, - allVisibleAccounts.value, - allAccountsMap.value, - allTagsMap.value, - defaultAccountId.value, - { - time: options.time, - type: options.type, - categoryId: options.categoryId, - accountId: options.accountId, - destinationAccountId: options.destinationAccountId, - amount: options.amount, - destinationAmount: options.destinationAmount, - tagIds: options.tagIds, - comment: options.comment - }, - setContextData - ); -} - function open(options: TransactionEditOptions): Promise { addByTemplateId.value = null; duplicateFromId.value = null; @@ -694,13 +661,10 @@ function open(options: TransactionEditOptions): Promise[] = [ accountsStore.loadAllAccounts({ force: false }), @@ -711,7 +675,7 @@ function open(options: TransactionEditOptions): Promise { - transactionsStore.saveTransactionDraft(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value, firstVisibleAccountId.value); + transactionsStore.saveTransactionDraft(transaction.value, initOptions.value?.amount, initOptions.value?.categoryId, initOptions.value?.accountId, initOptions.value?.tagIds, firstVisibleAccountId.value); doClose(); }).catch(() => { transactionsStore.clearTransactionDraft(); @@ -1020,7 +984,7 @@ function cancel(): void { doClose(); } } else if (settingsStore.appSettings.autoSaveTransactionDraft === 'enabled') { - transactionsStore.saveTransactionDraft(transaction.value, initAmount.value, initCategoryId.value, initAccountId.value, initTagIds.value, firstVisibleAccountId.value); + transactionsStore.saveTransactionDraft(transaction.value, initOptions.value?.amount, initOptions.value?.categoryId, initOptions.value?.accountId, initOptions.value?.tagIds, firstVisibleAccountId.value); doClose(); } else { doClose(); diff --git a/src/views/mobile/transactions/EditPage.vue b/src/views/mobile/transactions/EditPage.vue index f240eb0e..4b09fbc7 100644 --- a/src/views/mobile/transactions/EditPage.vue +++ b/src/views/mobile/transactions/EditPage.vue @@ -523,7 +523,6 @@ import { import { formatCoordinate } from '@/lib/coordinate.ts'; import { generateRandomUUID } from '@/lib/misc.ts'; import { getTransactionPrimaryCategoryName, getTransactionSecondaryCategoryName } from '@/lib/category.ts'; -import { setTransactionModelByTransaction } from '@/lib/transaction.ts'; import { getMapProvider, isTransactionPicturesEnabled } from '@/lib/server_settings.ts'; import logger from '@/lib/logger.ts'; @@ -562,15 +561,12 @@ const { numeralSystem, currentTimezoneOffsetMinutes, defaultCurrency, - defaultAccountId, firstDayOfWeek, coordinateDisplayType, allTimezones, allVisibleAccounts, - allAccountsMap, allVisibleCategorizedAccounts, allCategories, - allCategoriesMap, allTagsMap, firstVisibleAccountId, hasVisibleExpenseCategories, @@ -591,6 +587,7 @@ const { geoLocationStatusInfo, inputEmptyProblemMessage, inputIsEmpty, + setTransactionModel, updateTransactionTime, updateTransactionTimezone, swapTransactionData, @@ -927,15 +924,8 @@ function init(): void { } } - setTransactionModelByTransaction( - transaction.value, + setTransactionModel( fromTransaction, - allCategories.value, - allCategoriesMap.value, - allVisibleAccounts.value, - allAccountsMap.value, - allTagsMap.value, - defaultAccountId.value, { time: query['time'] ? parseInt(query['time']) : undefined, type: queryType,