mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-14 06:57:35 +08:00
code refactor
This commit is contained in:
+40
-40
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user