code refactor

This commit is contained in:
MaysWind
2025-01-15 22:36:38 +08:00
parent 0b7fd647e6
commit dc4310c301
7 changed files with 134 additions and 152 deletions
+40 -40
View File
@@ -200,30 +200,30 @@ export default {
authorize: (data: UserLoginRequest): ApiResponsePromise<AuthResponse> => {
return axios.post<ApiResponse<AuthResponse>>('authorize.json', data);
},
authorize2FA: (req: { passcode: string, token: string }): ApiResponsePromise<AuthResponse> => {
authorize2FA: ({ passcode, token }: { passcode: string, token: string }): ApiResponsePromise<AuthResponse> => {
return axios.post<ApiResponse<AuthResponse>>('2fa/authorize.json', {
passcode: req.passcode
passcode: passcode
}, {
headers: {
Authorization: `Bearer ${req.token}`
Authorization: `Bearer ${token}`
}
});
},
authorize2FAByBackupCode: (req: { recoveryCode: string, token: string }): ApiResponsePromise<AuthResponse> => {
authorize2FAByBackupCode: ({ recoveryCode, token }: { recoveryCode: string, token: string }): ApiResponsePromise<AuthResponse> => {
return axios.post<ApiResponse<AuthResponse>>('2fa/recovery.json', {
recoveryCode: req.recoveryCode
recoveryCode: recoveryCode
}, {
headers: {
Authorization: `Bearer ${req.token}`
Authorization: `Bearer ${token}`
}
});
},
register: (req: UserRegisterRequest): ApiResponsePromise<RegisterResponse> => {
return axios.post<ApiResponse<RegisterResponse>>('register.json', req);
},
verifyEmail: (req: { token: string, requestNewToken: boolean }): ApiResponsePromise<UserVerifyEmailResponse> => {
return axios.post<ApiResponse<UserVerifyEmailResponse>>('verify_email/by_token.json?token=' + req.token, {
requestNewToken: req.requestNewToken
verifyEmail: ({ token, requestNewToken }: { token: string, requestNewToken: boolean }): ApiResponsePromise<UserVerifyEmailResponse> => {
return axios.post<ApiResponse<UserVerifyEmailResponse>>('verify_email/by_token.json?token=' + token, {
requestNewToken: requestNewToken
}, {
noAuth: true,
ignoreError: true
@@ -235,10 +235,10 @@ export default {
requestResetPassword: (req: ForgetPasswordRequest): ApiResponsePromise<boolean> => {
return axios.post<ApiResponse<boolean>>('forget_password/request.json', req);
},
resetPassword: (req: { email: string, token: string, password: string }): ApiResponsePromise<boolean> => {
return axios.post<ApiResponse<boolean>>('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<boolean> => {
return axios.post<ApiResponse<boolean>>('forget_password/reset/by_token.json?token=' + token, {
email: email,
password: password
}, {
noAuth: true,
ignoreError: true
@@ -269,11 +269,11 @@ export default {
getTokens: (): ApiResponsePromise<TokenInfoResponse[]> => {
return axios.get<ApiResponse<TokenInfoResponse[]>>('v1/tokens/list.json');
},
revokeToken: (req: { tokenId: string, ignoreError?: boolean }): ApiResponsePromise<boolean> => {
revokeToken: ({ tokenId, ignoreError }: { tokenId: string, ignoreError?: boolean }): ApiResponsePromise<boolean> => {
return axios.post<ApiResponse<boolean>>('v1/tokens/revoke.json', {
tokenId: req.tokenId
tokenId: tokenId
}, {
ignoreError: !!req.ignoreError
ignoreError: !!ignoreError
} as ApiRequestConfig);
},
revokeAllTokens: (): ApiResponsePromise<boolean> => {
@@ -285,9 +285,9 @@ export default {
updateProfile: (req: UserProfileUpdateRequest): ApiResponsePromise<UserProfileUpdateResponse> => {
return axios.post<ApiResponse<UserProfileUpdateResponse>>('v1/users/profile/update.json', req);
},
updateAvatar: (req: { avatarFile: unknown }): ApiResponsePromise<UserProfileResponse> => {
updateAvatar: ({ avatarFile }: { avatarFile: unknown }): ApiResponsePromise<UserProfileResponse> => {
return axios.postForm<ApiResponse<UserProfileResponse>>('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<boolean> => {
return axios.post<ApiResponse<boolean>>('v1/data/clear.json', req);
},
getAllAccounts: (req: { visibleOnly: boolean }): ApiResponsePromise<AccountInfoResponse[]> => {
return axios.get<ApiResponse<AccountInfoResponse[]>>('v1/accounts/list.json?visible_only=' + req.visibleOnly);
getAllAccounts: ({ visibleOnly }: { visibleOnly: boolean }): ApiResponsePromise<AccountInfoResponse[]> => {
return axios.get<ApiResponse<AccountInfoResponse[]>>('v1/accounts/list.json?visible_only=' + visibleOnly);
},
getAccount: (req: { id: string }): ApiResponsePromise<AccountInfoResponse> => {
return axios.get<ApiResponse<AccountInfoResponse>>('v1/accounts/get.json?id=' + req.id);
getAccount: ({ id }: { id: string }): ApiResponsePromise<AccountInfoResponse> => {
return axios.get<ApiResponse<AccountInfoResponse>>('v1/accounts/get.json?id=' + id);
},
addAccount: (req: AccountCreateRequest): ApiResponsePromise<AccountInfoResponse> => {
return axios.post<ApiResponse<AccountInfoResponse>>('v1/accounts/add.json', req);
@@ -405,12 +405,12 @@ export default {
const req = TransactionAmountsRequest.of(params);
return axios.get<ApiResponse<TransactionAmountsResponse>>(`v1/transactions/amounts.json?${req.buildQuery()}`);
},
getTransaction: (req: { id: string, withPictures: boolean | undefined }): ApiResponsePromise<TransactionInfoResponse> => {
if (!isDefined(req.withPictures)) {
req.withPictures = true;
getTransaction: ({ id, withPictures }: { id: string, withPictures: boolean | undefined }): ApiResponsePromise<TransactionInfoResponse> => {
if (!isDefined(withPictures)) {
withPictures = true;
}
return axios.get<ApiResponse<TransactionInfoResponse>>(`v1/transactions/get.json?id=${req.id}&with_pictures=${req.withPictures}&trim_account=true&trim_category=true&trim_tag=true`);
return axios.get<ApiResponse<TransactionInfoResponse>>(`v1/transactions/get.json?id=${id}&with_pictures=${withPictures}&trim_account=true&trim_category=true&trim_tag=true`);
},
addTransaction: (req: TransactionCreateRequest): ApiResponsePromise<TransactionInfoResponse> => {
return axios.post<ApiResponse<TransactionInfoResponse>>('v1/transactions/add.json', req);
@@ -421,10 +421,10 @@ export default {
deleteTransaction: (req: TransactionDeleteRequest): ApiResponsePromise<boolean> => {
return axios.post<ApiResponse<boolean>>('v1/transactions/delete.json', req);
},
parseImportTransaction: (req: { fileType: string, importFile: unknown }): ApiResponsePromise<ImportTransactionResponsePageWrapper> => {
parseImportTransaction: ({ fileType, importFile }: { fileType: string, importFile: unknown }): ApiResponsePromise<ImportTransactionResponsePageWrapper> => {
return axios.postForm<ApiResponse<ImportTransactionResponsePageWrapper>>('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<TransactionPictureInfoBasicResponse> => {
uploadTransactionPicture: ({ pictureFile, clientSessionId }: { pictureFile: unknown, clientSessionId: string }): ApiResponsePromise<TransactionPictureInfoBasicResponse> => {
return axios.postForm<ApiResponse<TransactionPictureInfoBasicResponse>>('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<Record<number, TransactionCategoryInfoResponse[]>> => {
return axios.get<ApiResponse<Record<number, TransactionCategoryInfoResponse[]>>>('v1/transaction/categories/list.json');
},
getTransactionCategory: (req: { id: string }): ApiResponsePromise<TransactionCategoryInfoResponse> => {
return axios.get<ApiResponse<TransactionCategoryInfoResponse>>('v1/transaction/categories/get.json?id=' + req.id);
getTransactionCategory: ({ id }: { id: string }): ApiResponsePromise<TransactionCategoryInfoResponse> => {
return axios.get<ApiResponse<TransactionCategoryInfoResponse>>('v1/transaction/categories/get.json?id=' + id);
},
addTransactionCategory: (req: TransactionCategoryCreateRequest): ApiResponsePromise<TransactionCategoryInfoResponse> => {
return axios.post<ApiResponse<TransactionCategoryInfoResponse>>('v1/transaction/categories/add.json', req);
@@ -472,8 +472,8 @@ export default {
getAllTransactionTags: (): ApiResponsePromise<TransactionTagInfoResponse[]> => {
return axios.get<ApiResponse<TransactionTagInfoResponse[]>>('v1/transaction/tags/list.json');
},
getTransactionTag: (req: { id: string }): ApiResponsePromise<TransactionTagInfoResponse> => {
return axios.get<ApiResponse<TransactionTagInfoResponse>>('v1/transaction/tags/get.json?id=' + req.id);
getTransactionTag: ({ id }: { id: string }): ApiResponsePromise<TransactionTagInfoResponse> => {
return axios.get<ApiResponse<TransactionTagInfoResponse>>('v1/transaction/tags/get.json?id=' + id);
},
addTransactionTag: (req: TransactionTagCreateRequest): ApiResponsePromise<TransactionTagInfoResponse> => {
return axios.post<ApiResponse<TransactionTagInfoResponse>>('v1/transaction/tags/add.json', req);
@@ -490,11 +490,11 @@ export default {
deleteTransactionTag: (req: TransactionTagDeleteRequest): ApiResponsePromise<boolean> => {
return axios.post<ApiResponse<boolean>>('v1/transaction/tags/delete.json', req);
},
getAllTransactionTemplates: (req: { templateType: number }): ApiResponsePromise<TransactionTemplateInfoResponse[]> => {
return axios.get<ApiResponse<TransactionTemplateInfoResponse[]>>('v1/transaction/templates/list.json?templateType=' + req.templateType);
getAllTransactionTemplates: ({ templateType }: { templateType: number }): ApiResponsePromise<TransactionTemplateInfoResponse[]> => {
return axios.get<ApiResponse<TransactionTemplateInfoResponse[]>>('v1/transaction/templates/list.json?templateType=' + templateType);
},
getTransactionTemplate: (req: { id: string }): ApiResponsePromise<TransactionTemplateInfoResponse> => {
return axios.get<ApiResponse<TransactionTemplateInfoResponse>>('v1/transaction/templates/get.json?id=' + req.id);
getTransactionTemplate: ({ id }: { id: string }): ApiResponsePromise<TransactionTemplateInfoResponse> => {
return axios.get<ApiResponse<TransactionTemplateInfoResponse>>('v1/transaction/templates/get.json?id=' + id);
},
addTransactionTemplate: (req: TransactionTemplateCreateRequest): ApiResponsePromise<TransactionTemplateInfoResponse> => {
return axios.post<ApiResponse<TransactionTemplateInfoResponse>>('v1/transaction/templates/add.json', req);
+4 -4
View File
@@ -59,11 +59,11 @@ export const useExchangeRatesStore = defineStore('exchangeRates', () => {
clearExchangeRatesFromLocalStorage();
}
function getLatestExchangeRates(req: { silent: boolean, force: boolean }): Promise<LatestExchangeRateResponse> {
function getLatestExchangeRates({ silent, force }: { silent: boolean, force: boolean }): Promise<LatestExchangeRateResponse> {
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;
}
+7 -7
View File
@@ -276,7 +276,7 @@ export const useOverviewStore = defineStore('overview', () => {
transactionOverviewStateInvalid.value = true;
}
function loadTransactionOverview(params: { force: boolean, loadLast11Months: boolean }): Promise<TransactionAmountsResponse> {
function loadTransactionOverview({ force, loadLast11Months }: { force: boolean, loadLast11Months: boolean }): Promise<TransactionAmountsResponse> {
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);
+2 -5
View File
@@ -62,12 +62,9 @@ export const useTokensStore = defineStore('tokens', () => {
});
}
function revokeToken(req: { tokenId: string, ignoreError?: boolean }): Promise<boolean> {
function revokeToken({ tokenId, ignoreError }: { tokenId: string, ignoreError?: boolean }): Promise<boolean> {
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) {
+45 -52
View File
@@ -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<Record<number, TransactionCategory[]>> {
if (!params.force && !transactionCategoryListStateInvalid.value) {
function loadAllCategories({ force }: { force?: boolean }): Promise<Record<number, TransactionCategory[]>> {
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<TransactionCategory> {
function getCategory({ categoryId }: { categoryId: string }): Promise<TransactionCategory> {
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<TransactionCategory> {
function saveCategory({ category, isEdit, clientSessionId }: { category: TransactionCategory, isEdit: boolean, clientSessionId: string }): Promise<TransactionCategory> {
return new Promise((resolve, reject) => {
let promise: ApiResponsePromise<TransactionCategoryInfoResponse>;
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<void> {
const category = allTransactionCategoriesMap.value[params.categoryId];
function changeCategoryDisplayOrder({ categoryId, from, to }: { categoryId: string, from: number, to: number }): Promise<void> {
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<boolean> {
function updateCategoryDisplayOrders({ type, parentId }: { type: CategoryType, parentId: string }): Promise<boolean> {
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<boolean> {
function hideCategory({ category, hidden }: { category: TransactionCategory, hidden: boolean }): Promise<boolean> {
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<boolean> {
function deleteCategory({ category, beforeResolve }: { category: TransactionCategory, beforeResolve: BeforeResolveFunction }): Promise<boolean> {
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);
+32 -38
View File
@@ -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<TransactionTag[]> {
if (!params.force && !transactionTagListStateInvalid.value) {
function loadAllTags({ force }: { force?: boolean }): Promise<TransactionTag[]> {
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<TransactionTag> {
function saveTag({ tag }: { tag: TransactionTag }): Promise<TransactionTag> {
return new Promise((resolve, reject) => {
let promise: ApiResponsePromise<TransactionTagInfoResponse>;
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<void> {
function changeTagDisplayOrder({ tagId, from, to }: { tagId: string, from: number, to: number }): Promise<void> {
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<boolean> {
function hideTag({ tag, hidden }: { tag: TransactionTag, hidden: boolean }): Promise<boolean> {
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<boolean> {
function deleteTag({ tag, beforeResolve }: { tag: TransactionTag, beforeResolve?: BeforeResolveFunction }): Promise<boolean> {
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);
+4 -6
View File
@@ -154,11 +154,9 @@ export const useUserStore = defineStore('user', () => {
});
}
function updateUserTransactionEditScope(req: { transactionEditScope: number }): Promise<UserProfileUpdateResponse> {
function updateUserTransactionEditScope({ transactionEditScope }: { transactionEditScope: number }): Promise<UserProfileUpdateResponse> {
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<UserProfileResponse> {
function updateUserAvatar({ avatarFile }: { avatarFile: unknown }): Promise<UserProfileResponse> {
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) {