From 04e98e1c39f31e1987798f154f61f76128b01b7c Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sun, 13 Aug 2023 23:40:29 +0800 Subject: [PATCH] code refactor --- src/lib/i18n.js | 33 ++++++++++++++++++++++ src/views/mobile/transactions/EditPage.vue | 29 +------------------ 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/src/lib/i18n.js b/src/lib/i18n.js index ff2ceebe..f84d435c 100644 --- a/src/lib/i18n.js +++ b/src/lib/i18n.js @@ -26,6 +26,7 @@ import { getTimezoneOffsetMinutes, getBrowserTimezoneOffset, getBrowserTimezoneOffsetMinutes, + getTimeDifferenceHoursAndMinutes, getDateTimeFormatType, getRecentMonthDateRanges, isDateRangeMatchFullYears, @@ -544,6 +545,37 @@ function getAllTimezones(includeSystemDefault, translateFn) { return allTimezoneInfos; } +function getTimezoneDifferenceDisplayText(utcOffset, translateFn) { + const defaultTimezoneOffset = getTimezoneOffsetMinutes(); + const offsetTime = getTimeDifferenceHoursAndMinutes(utcOffset - defaultTimezoneOffset); + + if (utcOffset > defaultTimezoneOffset) { + if (offsetTime.offsetMinutes) { + return translateFn('format.misc.hoursMinutesAheadOfDefaultTimezone', { + hours: offsetTime.offsetHours, + minutes: offsetTime.offsetMinutes + }); + } else { + return translateFn('format.misc.hoursAheadOfDefaultTimezone', { + hours: offsetTime.offsetHours + }); + } + } else if (utcOffset < defaultTimezoneOffset) { + if (offsetTime.offsetMinutes) { + return translateFn('format.misc.hoursMinutesBehindDefaultTimezone', { + hours: offsetTime.offsetHours, + minutes: offsetTime.offsetMinutes + }); + } else { + return translateFn('format.misc.hoursBehindDefaultTimezone', { + hours: offsetTime.offsetHours + }); + } + } else { + return translateFn('Same time as default timezone'); + } +} + function getAllCurrencies(translateFn) { const allCurrencyCodes = currency.all; const allCurrencies = []; @@ -1183,6 +1215,7 @@ export function i18nFunctions(i18nGlobal) { isLongTime24HourFormat: (userStore) => isLongTime24HourFormat(i18nGlobal.t, userStore.currentUserLongTimeFormat), isShortTime24HourFormat: (userStore) => isShortTime24HourFormat(i18nGlobal.t, userStore.currentUserShortTimeFormat), getAllTimezones: (includeSystemDefault) => getAllTimezones(includeSystemDefault, i18nGlobal.t), + getTimezoneDifferenceDisplayText: (utcOffset) => getTimezoneDifferenceDisplayText(utcOffset, i18nGlobal.t), getAllCurrencies: () => getAllCurrencies(i18nGlobal.t), getAllWeekDays: () => getAllWeekDays(i18nGlobal.t), getAllDateRanges: (includeCustom) => getAllDateRanges(includeCustom, i18nGlobal.t), diff --git a/src/views/mobile/transactions/EditPage.vue b/src/views/mobile/transactions/EditPage.vue index 71fb2b8d..918609d5 100644 --- a/src/views/mobile/transactions/EditPage.vue +++ b/src/views/mobile/transactions/EditPage.vue @@ -582,34 +582,7 @@ export default { return getNameByKeyValue(this.allTimezones, this.transaction.timeZone, 'name', 'displayName'); }, transactionTimezoneTimeDifference() { - const defaultTimezoneOffset = getTimezoneOffsetMinutes(); - const offsetTime = getTimeDifferenceHoursAndMinutes(this.transaction.utcOffset - defaultTimezoneOffset); - - if (this.transaction.utcOffset > defaultTimezoneOffset) { - if (offsetTime.offsetMinutes) { - return this.$t('format.misc.hoursMinutesAheadOfDefaultTimezone', { - hours: offsetTime.offsetHours, - minutes: offsetTime.offsetMinutes - }); - } else { - return this.$t('format.misc.hoursAheadOfDefaultTimezone', { - hours: offsetTime.offsetHours - }); - } - } else if (this.transaction.utcOffset < defaultTimezoneOffset) { - if (offsetTime.offsetMinutes) { - return this.$t('format.misc.hoursMinutesBehindDefaultTimezone', { - hours: offsetTime.offsetHours, - minutes: offsetTime.offsetMinutes - }); - } else { - return this.$t('format.misc.hoursBehindDefaultTimezone', { - hours: offsetTime.offsetHours - }); - } - } else { - return this.$t('Same time as default timezone'); - } + return this.$locale.getTimezoneDifferenceDisplayText(this.transaction.utcOffset); }, sourceAmountClass() { const classes = {