diff --git a/src/stores/transaction.js b/src/stores/transaction.js index 063b21db..caf62d43 100644 --- a/src/stores/transaction.js +++ b/src/stores/transaction.js @@ -13,6 +13,7 @@ import services from '@/lib/services.js'; import logger from '@/lib/logger.js'; import { isNumber, isString } from '@/lib/common.js'; import { + getCurrentUnixTime, getTimezoneOffsetMinutes, parseDateFromUnixTime, getShortDate, @@ -292,6 +293,37 @@ export const useTransactionsStore = defineStore('transactions', { } }, actions: { + generateNewTransactionModel(type) { + const settingsStore = useSettingsStore(); + const now = getCurrentUnixTime(); + const currentTimezone = settingsStore.appSettings.timeZone; + + let defaultType = transactionConstants.allTransactionTypes.Expense; + + if (type === transactionConstants.allTransactionTypes.Income.toString()) { + defaultType = transactionConstants.allTransactionTypes.Income; + } else if (type === transactionConstants.allTransactionTypes.Transfer.toString()) { + defaultType = transactionConstants.allTransactionTypes.Transfer; + } + + return { + type: defaultType, + time: now, + timeZone: currentTimezone, + utcOffset: getTimezoneOffsetMinutes(currentTimezone), + expenseCategory: '', + incomeCategory: '', + transferCategory: '', + sourceAccountId: '', + destinationAccountId: '', + sourceAmount: 0, + destinationAmount: 0, + hideAmount: false, + tagIds: [], + comment: '', + geoLocation: null + }; + }, updateTransactionListInvalidState(invalidState) { this.transactionListStateInvalid = invalidState; }, diff --git a/src/views/mobile/transactions/EditPage.vue b/src/views/mobile/transactions/EditPage.vue index 2f6ee1ad..71fb2b8d 100644 --- a/src/views/mobile/transactions/EditPage.vue +++ b/src/views/mobile/transactions/EditPage.vue @@ -347,7 +347,6 @@ import { getNameByKeyValue } from '@/lib/common.js'; import { - getCurrentUnixTime, getTimeDifferenceHoursAndMinutes, getTimezoneOffsetMinutes, getBrowserTimezoneOffsetMinutes, @@ -375,40 +374,14 @@ export default { 'f7router' ], data() { - const self = this; - const settingsStore = useSettingsStore(); - const query = self.f7route.query; - const now = getCurrentUnixTime(); - const currentTimezone = settingsStore.appSettings.timeZone; - - let defaultType = transactionConstants.allTransactionTypes.Expense; - - if (query.type === transactionConstants.allTransactionTypes.Income.toString()) { - defaultType = transactionConstants.allTransactionTypes.Income; - } else if (query.type === transactionConstants.allTransactionTypes.Transfer.toString()) { - defaultType = transactionConstants.allTransactionTypes.Transfer; - } + const query = this.f7route.query; + const transactionsStore = useTransactionsStore(); + const newTransaction = transactionsStore.generateNewTransactionModel(query.type); return { mode: 'add', editTransactionId: null, - transaction: { - type: defaultType, - time: now, - timeZone: currentTimezone, - utcOffset: getTimezoneOffsetMinutes(currentTimezone), - expenseCategory: '', - incomeCategory: '', - transferCategory: '', - sourceAccountId: '', - destinationAccountId: '', - sourceAmount: 0, - destinationAmount: 0, - hideAmount: false, - tagIds: [], - comment: '', - geoLocation: null - }, + transaction: newTransaction, loading: true, loadingError: null, geoLocationStatus: null,