From dc4310c301c932d31dec93b900886f95f793cd59 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Wed, 15 Jan 2025 22:36:38 +0800 Subject: [PATCH] code refactor --- src/lib/services.ts | 80 ++++++++++++------------- src/stores/exchangeRates.ts | 8 +-- src/stores/overview.ts | 14 ++--- src/stores/token.ts | 7 +-- src/stores/transactionCategory.ts | 97 ++++++++++++++----------------- src/stores/transactionTag.ts | 70 ++++++++++------------ src/stores/user.ts | 10 ++-- 7 files changed, 134 insertions(+), 152 deletions(-) diff --git a/src/lib/services.ts b/src/lib/services.ts index 7d632a69..2eccd036 100644 --- a/src/lib/services.ts +++ b/src/lib/services.ts @@ -200,30 +200,30 @@ export default { authorize: (data: UserLoginRequest): ApiResponsePromise => { return axios.post>('authorize.json', data); }, - authorize2FA: (req: { passcode: string, token: string }): ApiResponsePromise => { + authorize2FA: ({ passcode, token }: { passcode: string, token: string }): ApiResponsePromise => { return axios.post>('2fa/authorize.json', { - passcode: req.passcode + passcode: passcode }, { headers: { - Authorization: `Bearer ${req.token}` + Authorization: `Bearer ${token}` } }); }, - authorize2FAByBackupCode: (req: { recoveryCode: string, token: string }): ApiResponsePromise => { + authorize2FAByBackupCode: ({ recoveryCode, token }: { recoveryCode: string, token: string }): ApiResponsePromise => { return axios.post>('2fa/recovery.json', { - recoveryCode: req.recoveryCode + recoveryCode: recoveryCode }, { headers: { - Authorization: `Bearer ${req.token}` + Authorization: `Bearer ${token}` } }); }, register: (req: UserRegisterRequest): ApiResponsePromise => { return axios.post>('register.json', req); }, - verifyEmail: (req: { token: string, requestNewToken: boolean }): ApiResponsePromise => { - return axios.post>('verify_email/by_token.json?token=' + req.token, { - requestNewToken: req.requestNewToken + verifyEmail: ({ token, requestNewToken }: { token: string, requestNewToken: boolean }): ApiResponsePromise => { + return axios.post>('verify_email/by_token.json?token=' + token, { + requestNewToken: requestNewToken }, { noAuth: true, ignoreError: true @@ -235,10 +235,10 @@ export default { requestResetPassword: (req: ForgetPasswordRequest): ApiResponsePromise => { return axios.post>('forget_password/request.json', req); }, - resetPassword: (req: { email: string, token: string, password: string }): ApiResponsePromise => { - return axios.post>('forget_password/reset/by_token.json?token=' + req.token, { - email: req.email, - password: req.password + resetPassword: ({ email, token, password }: { email: string, token: string, password: string }): ApiResponsePromise => { + return axios.post>('forget_password/reset/by_token.json?token=' + token, { + email: email, + password: password }, { noAuth: true, ignoreError: true @@ -269,11 +269,11 @@ export default { getTokens: (): ApiResponsePromise => { return axios.get>('v1/tokens/list.json'); }, - revokeToken: (req: { tokenId: string, ignoreError?: boolean }): ApiResponsePromise => { + revokeToken: ({ tokenId, ignoreError }: { tokenId: string, ignoreError?: boolean }): ApiResponsePromise => { return axios.post>('v1/tokens/revoke.json', { - tokenId: req.tokenId + tokenId: tokenId }, { - ignoreError: !!req.ignoreError + ignoreError: !!ignoreError } as ApiRequestConfig); }, revokeAllTokens: (): ApiResponsePromise => { @@ -285,9 +285,9 @@ export default { updateProfile: (req: UserProfileUpdateRequest): ApiResponsePromise => { return axios.post>('v1/users/profile/update.json', req); }, - updateAvatar: (req: { avatarFile: unknown }): ApiResponsePromise => { + updateAvatar: ({ avatarFile }: { avatarFile: unknown }): ApiResponsePromise => { return axios.postForm>('v1/users/avatar/update.json', { - avatar: req.avatarFile + avatar: avatarFile }, { timeout: DEFAULT_UPLOAD_API_TIMEOUT }); @@ -328,11 +328,11 @@ export default { clearData: (req: ClearDataRequest): ApiResponsePromise => { return axios.post>('v1/data/clear.json', req); }, - getAllAccounts: (req: { visibleOnly: boolean }): ApiResponsePromise => { - return axios.get>('v1/accounts/list.json?visible_only=' + req.visibleOnly); + getAllAccounts: ({ visibleOnly }: { visibleOnly: boolean }): ApiResponsePromise => { + return axios.get>('v1/accounts/list.json?visible_only=' + visibleOnly); }, - getAccount: (req: { id: string }): ApiResponsePromise => { - return axios.get>('v1/accounts/get.json?id=' + req.id); + getAccount: ({ id }: { id: string }): ApiResponsePromise => { + return axios.get>('v1/accounts/get.json?id=' + id); }, addAccount: (req: AccountCreateRequest): ApiResponsePromise => { return axios.post>('v1/accounts/add.json', req); @@ -405,12 +405,12 @@ export default { const req = TransactionAmountsRequest.of(params); return axios.get>(`v1/transactions/amounts.json?${req.buildQuery()}`); }, - getTransaction: (req: { id: string, withPictures: boolean | undefined }): ApiResponsePromise => { - if (!isDefined(req.withPictures)) { - req.withPictures = true; + getTransaction: ({ id, withPictures }: { id: string, withPictures: boolean | undefined }): ApiResponsePromise => { + if (!isDefined(withPictures)) { + withPictures = true; } - return axios.get>(`v1/transactions/get.json?id=${req.id}&with_pictures=${req.withPictures}&trim_account=true&trim_category=true&trim_tag=true`); + return axios.get>(`v1/transactions/get.json?id=${id}&with_pictures=${withPictures}&trim_account=true&trim_category=true&trim_tag=true`); }, addTransaction: (req: TransactionCreateRequest): ApiResponsePromise => { return axios.post>('v1/transactions/add.json', req); @@ -421,10 +421,10 @@ export default { deleteTransaction: (req: TransactionDeleteRequest): ApiResponsePromise => { return axios.post>('v1/transactions/delete.json', req); }, - parseImportTransaction: (req: { fileType: string, importFile: unknown }): ApiResponsePromise => { + parseImportTransaction: ({ fileType, importFile }: { fileType: string, importFile: unknown }): ApiResponsePromise => { return axios.postForm>('v1/transactions/parse_import.json', { - fileType: req.fileType, - file: req.importFile + fileType: fileType, + file: importFile }, { timeout: DEFAULT_UPLOAD_API_TIMEOUT } as ApiRequestConfig); @@ -434,10 +434,10 @@ export default { timeout: DEFAULT_IMPORT_API_TIMEOUT } as ApiRequestConfig); }, - uploadTransactionPicture: (req: { pictureFile: unknown, clientSessionId: string }): ApiResponsePromise => { + uploadTransactionPicture: ({ pictureFile, clientSessionId }: { pictureFile: unknown, clientSessionId: string }): ApiResponsePromise => { return axios.postForm>('v1/transaction/pictures/upload.json', { - picture: req.pictureFile, - clientSessionId: req.clientSessionId + picture: pictureFile, + clientSessionId: clientSessionId }, { timeout: DEFAULT_UPLOAD_API_TIMEOUT } as ApiRequestConfig); @@ -448,8 +448,8 @@ export default { getAllTransactionCategories: (): ApiResponsePromise> => { return axios.get>>('v1/transaction/categories/list.json'); }, - getTransactionCategory: (req: { id: string }): ApiResponsePromise => { - return axios.get>('v1/transaction/categories/get.json?id=' + req.id); + getTransactionCategory: ({ id }: { id: string }): ApiResponsePromise => { + return axios.get>('v1/transaction/categories/get.json?id=' + id); }, addTransactionCategory: (req: TransactionCategoryCreateRequest): ApiResponsePromise => { return axios.post>('v1/transaction/categories/add.json', req); @@ -472,8 +472,8 @@ export default { getAllTransactionTags: (): ApiResponsePromise => { return axios.get>('v1/transaction/tags/list.json'); }, - getTransactionTag: (req: { id: string }): ApiResponsePromise => { - return axios.get>('v1/transaction/tags/get.json?id=' + req.id); + getTransactionTag: ({ id }: { id: string }): ApiResponsePromise => { + return axios.get>('v1/transaction/tags/get.json?id=' + id); }, addTransactionTag: (req: TransactionTagCreateRequest): ApiResponsePromise => { return axios.post>('v1/transaction/tags/add.json', req); @@ -490,11 +490,11 @@ export default { deleteTransactionTag: (req: TransactionTagDeleteRequest): ApiResponsePromise => { return axios.post>('v1/transaction/tags/delete.json', req); }, - getAllTransactionTemplates: (req: { templateType: number }): ApiResponsePromise => { - return axios.get>('v1/transaction/templates/list.json?templateType=' + req.templateType); + getAllTransactionTemplates: ({ templateType }: { templateType: number }): ApiResponsePromise => { + return axios.get>('v1/transaction/templates/list.json?templateType=' + templateType); }, - getTransactionTemplate: (req: { id: string }): ApiResponsePromise => { - return axios.get>('v1/transaction/templates/get.json?id=' + req.id); + getTransactionTemplate: ({ id }: { id: string }): ApiResponsePromise => { + return axios.get>('v1/transaction/templates/get.json?id=' + id); }, addTransactionTemplate: (req: TransactionTemplateCreateRequest): ApiResponsePromise => { return axios.post>('v1/transaction/templates/add.json', req); diff --git a/src/stores/exchangeRates.ts b/src/stores/exchangeRates.ts index 7db82703..1a13b0f7 100644 --- a/src/stores/exchangeRates.ts +++ b/src/stores/exchangeRates.ts @@ -59,11 +59,11 @@ export const useExchangeRatesStore = defineStore('exchangeRates', () => { clearExchangeRatesFromLocalStorage(); } - function getLatestExchangeRates(req: { silent: boolean, force: boolean }): Promise { + function getLatestExchangeRates({ silent, force }: { silent: boolean, force: boolean }): Promise { const currentExchangeRateData = latestExchangeRates.value; const now = getCurrentUnixTime(); - if (!req.force) { + if (!force) { if (currentExchangeRateData && currentExchangeRateData.time && currentExchangeRateData.data && formatUnixTime(currentExchangeRateData.data.updateTime, 'YYYY-MM-DD') === formatUnixTime(now, 'YYYY-MM-DD')) { return Promise.resolve(currentExchangeRateData.data); @@ -77,7 +77,7 @@ export const useExchangeRatesStore = defineStore('exchangeRates', () => { return new Promise((resolve, reject) => { services.getLatestExchangeRates({ - ignoreError: req.silent + ignoreError: silent }).then(response => { const data = response.data; @@ -88,7 +88,7 @@ export const useExchangeRatesStore = defineStore('exchangeRates', () => { const currentData = getExchangeRatesFromLocalStorage(); - if (req.force && currentData && currentData.data && isEquals(currentData.data, data.result)) { + if (force && currentData && currentData.data && isEquals(currentData.data, data.result)) { reject({ message: 'Exchange rates data is up to date' }); return; } diff --git a/src/stores/overview.ts b/src/stores/overview.ts index 818a4a5c..09934cff 100644 --- a/src/stores/overview.ts +++ b/src/stores/overview.ts @@ -276,7 +276,7 @@ export const useOverviewStore = defineStore('overview', () => { transactionOverviewStateInvalid.value = true; } - function loadTransactionOverview(params: { force: boolean, loadLast11Months: boolean }): Promise { + function loadTransactionOverview({ force, loadLast11Months }: { force: boolean, loadLast11Months: boolean }): Promise { let dateChanged = false; let rangeChanged = false; @@ -285,11 +285,11 @@ export const useOverviewStore = defineStore('overview', () => { updateTransactionDateRange(); } - if (params.loadLast11Months && !transactionOverviewOptions.value.loadLast11Months) { + if (loadLast11Months && !transactionOverviewOptions.value.loadLast11Months) { rangeChanged = true; } - if (!dateChanged && !rangeChanged && !params.force && !transactionOverviewStateInvalid.value) { + if (!dateChanged && !rangeChanged && !force && !transactionOverviewStateInvalid.value) { return new Promise((resolve) => { resolve(transactionOverviewData.value); }); @@ -303,7 +303,7 @@ export const useOverviewStore = defineStore('overview', () => { thisYear: transactionDataRange.value.thisYear }; - if (params.loadLast11Months) { + if (loadLast11Months) { requestParams.lastMonth = transactionDataRange.value.lastMonth; requestParams.monthBeforeLastMonth = transactionDataRange.value.monthBeforeLastMonth; requestParams.monthBeforeLast2Months = transactionDataRange.value.monthBeforeLast2Months; @@ -330,17 +330,17 @@ export const useOverviewStore = defineStore('overview', () => { updateTransactionOverviewInvalidState(false); } - if (params.force && data.result && isEquals(transactionOverviewData.value, data.result)) { + if (force && data.result && isEquals(transactionOverviewData.value, data.result)) { reject({ message: 'Data is up to date' }); return; } transactionOverviewData.value = data.result; - transactionOverviewOptions.value.loadLast11Months = params.loadLast11Months; + transactionOverviewOptions.value.loadLast11Months = loadLast11Months; resolve(data.result); }).catch(error => { - if (params.force) { + if (force) { logger.error('failed to force load transaction overview', error); } else { logger.error('failed to load transaction overview', error); diff --git a/src/stores/token.ts b/src/stores/token.ts index 7e282f84..4b8dd698 100644 --- a/src/stores/token.ts +++ b/src/stores/token.ts @@ -62,12 +62,9 @@ export const useTokensStore = defineStore('tokens', () => { }); } - function revokeToken(req: { tokenId: string, ignoreError?: boolean }): Promise { + function revokeToken({ tokenId, ignoreError }: { tokenId: string, ignoreError?: boolean }): Promise { return new Promise((resolve, reject) => { - services.revokeToken({ - tokenId: req.tokenId, - ignoreError: !!req.ignoreError - }).then(response => { + services.revokeToken({ tokenId, ignoreError }).then(response => { const data = response.data; if (!data || !data.success || !data.result) { diff --git a/src/stores/transactionCategory.ts b/src/stores/transactionCategory.ts index fd18f52f..b5a00df3 100644 --- a/src/stores/transactionCategory.ts +++ b/src/stores/transactionCategory.ts @@ -94,23 +94,23 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' return true; } - function updateCategoryDisplayOrderInCategoryList(params: { category: TransactionCategory, from: number, to: number }): void { + function updateCategoryDisplayOrderInCategoryList({ category, from, to }: { category: TransactionCategory, from: number, to: number }): void { let categoryList: TransactionCategory[] | undefined = undefined; - if (!params.category.parentId || params.category.parentId === '0') { - categoryList = allTransactionCategories.value[params.category.type]; - } else if (allTransactionCategoriesMap.value[params.category.parentId]) { - categoryList = allTransactionCategoriesMap.value[params.category.parentId].secondaryCategories; + if (!category.parentId || category.parentId === '0') { + categoryList = allTransactionCategories.value[category.type]; + } else if (allTransactionCategoriesMap.value[category.parentId]) { + categoryList = allTransactionCategoriesMap.value[category.parentId].secondaryCategories; } if (categoryList) { - categoryList.splice(params.to, 0, categoryList.splice(params.from, 1)[0]); + categoryList.splice(to, 0, categoryList.splice(from, 1)[0]); } } - function updateCategoryVisibilityInTransactionCategoryList(params: { category: TransactionCategory, hidden: boolean }): void { - if (allTransactionCategoriesMap.value[params.category.id]) { - allTransactionCategoriesMap.value[params.category.id].visible = !params.hidden; + function updateCategoryVisibilityInTransactionCategoryList({ category, hidden }: { category: TransactionCategory, hidden: boolean }): void { + if (allTransactionCategoriesMap.value[category.id]) { + allTransactionCategoriesMap.value[category.id].visible = !hidden; } } @@ -160,8 +160,8 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' transactionCategoryListStateInvalid.value = true; } - function loadAllCategories(params: { force?: boolean }): Promise> { - if (!params.force && !transactionCategoryListStateInvalid.value) { + function loadAllCategories({ force }: { force?: boolean }): Promise> { + if (!force && !transactionCategoryListStateInvalid.value) { return new Promise((resolve) => { resolve(allTransactionCategories.value); }); @@ -194,7 +194,7 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' const transactionCategories = TransactionCategory.ofMap(data.result); - if (params.force && data.result && isEquals(allTransactionCategories.value, transactionCategories)) { + if (force && data.result && isEquals(allTransactionCategories.value, transactionCategories)) { reject({ message: 'Category list is up to date' }); return; } @@ -203,7 +203,7 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' resolve(transactionCategories); }).catch(error => { - if (params.force) { + if (force) { logger.error('failed to force load category list', error); } else { logger.error('failed to load category list', error); @@ -220,10 +220,10 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' }); } - function getCategory(params: { categoryId: string }): Promise { + function getCategory({ categoryId }: { categoryId: string }): Promise { return new Promise((resolve, reject) => { services.getTransactionCategory({ - id: params.categoryId + id: categoryId }).then(response => { const data = response.data; @@ -249,21 +249,21 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' }); } - function saveCategory(params: { category: TransactionCategory, isEdit: boolean, clientSessionId: string }): Promise { + function saveCategory({ category, isEdit, clientSessionId }: { category: TransactionCategory, isEdit: boolean, clientSessionId: string }): Promise { return new Promise((resolve, reject) => { let promise: ApiResponsePromise; - if (!params.isEdit) { - promise = services.addTransactionCategory(params.category.toCreateRequest(params.clientSessionId)); + if (!isEdit) { + promise = services.addTransactionCategory(category.toCreateRequest(clientSessionId)); } else { - promise = services.modifyTransactionCategory(params.category.toModifyRequest()); + promise = services.modifyTransactionCategory(category.toModifyRequest()); } promise.then(response => { const data = response.data; if (!data || !data.success || !data.result) { - if (!params.isEdit) { + if (!isEdit) { reject({ message: 'Unable to add category' }); } else { reject({ message: 'Unable to save category' }); @@ -273,10 +273,10 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' const transactionCategory = TransactionCategory.of(data.result); - if (!params.isEdit) { + if (!isEdit) { addCategoryToTransactionCategoryList(transactionCategory); } else { - const result = updateCategoryInTransactionCategoryList(transactionCategory, allTransactionCategoriesMap.value[params.category.id]); + const result = updateCategoryInTransactionCategoryList(transactionCategory, allTransactionCategoriesMap.value[category.id]); if (!result && !transactionCategoryListStateInvalid.value) { updateTransactionCategoryListInvalidState(true); @@ -290,7 +290,7 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' if (error.response && error.response.data && error.response.data.errorMessage) { reject({ error: error.response.data }); } else if (!error.processed) { - if (!params.isEdit) { + if (!isEdit) { reject({ message: 'Unable to add category' }); } else { reject({ message: 'Unable to save category' }); @@ -333,8 +333,8 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' }); } - function changeCategoryDisplayOrder(params: { categoryId: string, from: number, to: number }): Promise { - const category = allTransactionCategoriesMap.value[params.categoryId]; + function changeCategoryDisplayOrder({ categoryId, from, to }: { categoryId: string, from: number, to: number }): Promise { + const category = allTransactionCategoriesMap.value[categoryId]; return new Promise((resolve, reject) => { if (!category) { @@ -344,14 +344,14 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' if (!category.parentId || category.parentId === '0') { if (!allTransactionCategories.value[category.type] || - !allTransactionCategories.value[category.type][params.to]) { + !allTransactionCategories.value[category.type][to]) { reject({ message: 'Unable to move category' }); return; } } else { const subCategoryList = allTransactionCategoriesMap.value[category.parentId].secondaryCategories; - if (!subCategoryList || !subCategoryList[params.to]) { + if (!subCategoryList || !subCategoryList[to]) { reject({ message: 'Unable to move category' }); return; } @@ -361,25 +361,21 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' updateTransactionCategoryListInvalidState(true); } - updateCategoryDisplayOrderInCategoryList({ - category: category, - from: params.from, - to: params.to - }); + updateCategoryDisplayOrderInCategoryList({ category, from, to }); resolve(); }); } - function updateCategoryDisplayOrders(params: { type: CategoryType, parentId: string }): Promise { + function updateCategoryDisplayOrders({ type, parentId }: { type: CategoryType, parentId: string }): Promise { const newDisplayOrders: TransactionCategoryNewDisplayOrderRequest[] = []; let categoryList: TransactionCategory[] | undefined = undefined; - if (!params.parentId || params.parentId === '0') { - categoryList = allTransactionCategories.value[params.type]; - } else if (allTransactionCategoriesMap.value[params.parentId]) { - categoryList = allTransactionCategoriesMap.value[params.parentId].secondaryCategories; + if (!parentId || parentId === '0') { + categoryList = allTransactionCategories.value[type]; + } else if (allTransactionCategoriesMap.value[parentId]) { + categoryList = allTransactionCategoriesMap.value[parentId].secondaryCategories; } if (categoryList) { @@ -421,16 +417,16 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' }); } - function hideCategory(params: { category: TransactionCategory, hidden: boolean }): Promise { + function hideCategory({ category, hidden }: { category: TransactionCategory, hidden: boolean }): Promise { return new Promise((resolve, reject) => { services.hideTransactionCategory({ - id: params.category.id, - hidden: params.hidden + id: category.id, + hidden: hidden }).then(response => { const data = response.data; if (!data || !data.success || !data.result) { - if (params.hidden) { + if (hidden) { reject({ message: 'Unable to hide this category' }); } else { reject({ message: 'Unable to unhide this category' }); @@ -439,10 +435,7 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' return; } - updateCategoryVisibilityInTransactionCategoryList({ - category: params.category, - hidden: params.hidden - }); + updateCategoryVisibilityInTransactionCategoryList({ category, hidden }); resolve(data.result); }).catch(error => { @@ -451,7 +444,7 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' if (error.response && error.response.data && error.response.data.errorMessage) { reject({ error: error.response.data }); } else if (!error.processed) { - if (params.hidden) { + if (hidden) { reject({ message: 'Unable to hide this category' }); } else { reject({ message: 'Unable to unhide this category' }); @@ -463,10 +456,10 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' }); } - function deleteCategory(params: { category: TransactionCategory, beforeResolve: BeforeResolveFunction }): Promise { + function deleteCategory({ category, beforeResolve }: { category: TransactionCategory, beforeResolve: BeforeResolveFunction }): Promise { return new Promise((resolve, reject) => { services.deleteTransactionCategory({ - id: params.category.id + id: category.id }).then(response => { const data = response.data; @@ -475,12 +468,12 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories' return; } - if (params.beforeResolve) { - params.beforeResolve(() => { - removeCategoryFromTransactionCategoryList(params.category); + if (beforeResolve) { + beforeResolve(() => { + removeCategoryFromTransactionCategoryList(category); }); } else { - removeCategoryFromTransactionCategoryList(params.category); + removeCategoryFromTransactionCategoryList(category); } resolve(data.result); diff --git a/src/stores/transactionTag.ts b/src/stores/transactionTag.ts index ef7303b1..b5af6146 100644 --- a/src/stores/transactionTag.ts +++ b/src/stores/transactionTag.ts @@ -59,13 +59,13 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { allTransactionTagsMap.value[tag.id] = tag; } - function updateTagDisplayOrderInTransactionTagList(params: { from: number, to: number }): void { - allTransactionTags.value.splice(params.to, 0, allTransactionTags.value.splice(params.from, 1)[0]); + function updateTagDisplayOrderInTransactionTagList({ from, to }: { from: number, to: number }): void { + allTransactionTags.value.splice(to, 0, allTransactionTags.value.splice(from, 1)[0]); } - function updateTagVisibilityInTransactionTagList(params: { tag: TransactionTag, hidden: boolean }): void { - if (allTransactionTagsMap.value[params.tag.id]) { - allTransactionTagsMap.value[params.tag.id].hidden = params.hidden; + function updateTagVisibilityInTransactionTagList({ tag, hidden }: { tag: TransactionTag, hidden: boolean }): void { + if (allTransactionTagsMap.value[tag.id]) { + allTransactionTagsMap.value[tag.id].hidden = hidden; } } @@ -92,8 +92,8 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { transactionTagListStateInvalid.value = true; } - function loadAllTags(params: { force?: boolean }): Promise { - if (!params.force && !transactionTagListStateInvalid.value) { + function loadAllTags({ force }: { force?: boolean }): Promise { + if (!force && !transactionTagListStateInvalid.value) { return new Promise((resolve) => { resolve(allTransactionTags.value); }); @@ -114,7 +114,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { const transactionTags = TransactionTag.ofMany(data.result); - if (params.force && data.result && isEquals(allTransactionTags.value, transactionTags)) { + if (force && data.result && isEquals(allTransactionTags.value, transactionTags)) { reject({ message: 'Tag list is up to date' }); return; } @@ -123,7 +123,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { resolve(transactionTags); }).catch(error => { - if (params.force) { + if (force) { logger.error('failed to force load tag list', error); } else { logger.error('failed to load tag list', error); @@ -140,21 +140,21 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { }); } - function saveTag(params: { tag: TransactionTag }): Promise { + function saveTag({ tag }: { tag: TransactionTag }): Promise { return new Promise((resolve, reject) => { let promise: ApiResponsePromise; - if (!params.tag.id) { - promise = services.addTransactionTag(params.tag.toCreateRequest()); + if (!tag.id) { + promise = services.addTransactionTag(tag.toCreateRequest()); } else { - promise = services.modifyTransactionTag(params.tag.toModifyRequest()); + promise = services.modifyTransactionTag(tag.toModifyRequest()); } promise.then(response => { const data = response.data; if (!data || !data.success || !data.result) { - if (!params.tag.id) { + if (!tag.id) { reject({ message: 'Unable to add tag' }); } else { reject({ message: 'Unable to save tag' }); @@ -164,7 +164,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { const transactionTag = TransactionTag.of(data.result); - if (!params.tag.id) { + if (!tag.id) { addTagToTransactionTagList(transactionTag); } else { updateTagInTransactionTagList(transactionTag); @@ -177,7 +177,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { if (error.response && error.response.data && error.response.data.errorMessage) { reject({ error: error.response.data }); } else if (!error.processed) { - if (!params.tag.id) { + if (!tag.id) { reject({ message: 'Unable to add tag' }); } else { reject({ message: 'Unable to save tag' }); @@ -189,18 +189,18 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { }); } - function changeTagDisplayOrder(params: { tagId: string, from: number, to: number }): Promise { + function changeTagDisplayOrder({ tagId, from, to }: { tagId: string, from: number, to: number }): Promise { return new Promise((resolve, reject) => { let tag: TransactionTag | null = null; for (let i = 0; i < allTransactionTags.value.length; i++) { - if (allTransactionTags.value[i].id === params.tagId) { + if (allTransactionTags.value[i].id === tagId) { tag = allTransactionTags.value[i]; break; } } - if (!tag || !allTransactionTags.value[params.to]) { + if (!tag || !allTransactionTags.value[to]) { reject({ message: 'Unable to move tag' }); return; } @@ -209,10 +209,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { updateTransactionTagListInvalidState(true); } - updateTagDisplayOrderInTransactionTagList({ - from: params.from, - to: params.to - }); + updateTagDisplayOrderInTransactionTagList({ from, to }); resolve(); }); @@ -258,16 +255,16 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { }); } - function hideTag(params: { tag: TransactionTag, hidden: boolean }): Promise { + function hideTag({ tag, hidden }: { tag: TransactionTag, hidden: boolean }): Promise { return new Promise((resolve, reject) => { services.hideTransactionTag({ - id: params.tag.id, - hidden: params.hidden + id: tag.id, + hidden: hidden }).then(response => { const data = response.data; if (!data || !data.success || !data.result) { - if (params.hidden) { + if (hidden) { reject({ message: 'Unable to hide this tag' }); } else { reject({ message: 'Unable to unhide this tag' }); @@ -275,10 +272,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { return; } - updateTagVisibilityInTransactionTagList({ - tag: params.tag, - hidden: params.hidden - }); + updateTagVisibilityInTransactionTagList({ tag, hidden }); resolve(data.result); }).catch(error => { @@ -287,7 +281,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { if (error.response && error.response.data && error.response.data.errorMessage) { reject({ error: error.response.data }); } else if (!error.processed) { - if (params.hidden) { + if (hidden) { reject({ message: 'Unable to hide this tag' }); } else { reject({ message: 'Unable to unhide this tag' }); @@ -299,10 +293,10 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { }); } - function deleteTag(params: { tag: TransactionTag, beforeResolve?: BeforeResolveFunction }): Promise { + function deleteTag({ tag, beforeResolve }: { tag: TransactionTag, beforeResolve?: BeforeResolveFunction }): Promise { return new Promise((resolve, reject) => { services.deleteTransactionTag({ - id: params.tag.id + id: tag.id }).then(response => { const data = response.data; @@ -311,12 +305,12 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => { return; } - if (params.beforeResolve) { - params.beforeResolve(() => { - removeTagFromTransactionTagList(params.tag); + if (beforeResolve) { + beforeResolve(() => { + removeTagFromTransactionTagList(tag); }); } else { - removeTagFromTransactionTagList(params.tag); + removeTagFromTransactionTagList(tag); } resolve(data.result); diff --git a/src/stores/user.ts b/src/stores/user.ts index 8e8f6861..27f8dc20 100644 --- a/src/stores/user.ts +++ b/src/stores/user.ts @@ -154,11 +154,9 @@ export const useUserStore = defineStore('user', () => { }); } - function updateUserTransactionEditScope(req: { transactionEditScope: number }): Promise { + function updateUserTransactionEditScope({ transactionEditScope }: { transactionEditScope: number }): Promise { return new Promise((resolve, reject) => { - services.updateProfile({ - transactionEditScope: req.transactionEditScope, - }).then(response => { + services.updateProfile({ transactionEditScope }).then(response => { const data = response.data; if (!data || !data.success || !data.result || !data.result.user || !isObject(data.result.user)) { @@ -183,9 +181,9 @@ export const useUserStore = defineStore('user', () => { }); } - function updateUserAvatar(req: { avatarFile: unknown }): Promise { + function updateUserAvatar({ avatarFile }: { avatarFile: unknown }): Promise { return new Promise((resolve, reject) => { - services.updateAvatar({ avatarFile: req.avatarFile }).then(response => { + services.updateAvatar({ avatarFile }).then(response => { const data = response.data; if (!data || !data.success || !data.result) {