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> => { authorize: (data: UserLoginRequest): ApiResponsePromise<AuthResponse> => {
return axios.post<ApiResponse<AuthResponse>>('authorize.json', data); 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', { return axios.post<ApiResponse<AuthResponse>>('2fa/authorize.json', {
passcode: req.passcode passcode: passcode
}, { }, {
headers: { 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', { return axios.post<ApiResponse<AuthResponse>>('2fa/recovery.json', {
recoveryCode: req.recoveryCode recoveryCode: recoveryCode
}, { }, {
headers: { headers: {
Authorization: `Bearer ${req.token}` Authorization: `Bearer ${token}`
} }
}); });
}, },
register: (req: UserRegisterRequest): ApiResponsePromise<RegisterResponse> => { register: (req: UserRegisterRequest): ApiResponsePromise<RegisterResponse> => {
return axios.post<ApiResponse<RegisterResponse>>('register.json', req); return axios.post<ApiResponse<RegisterResponse>>('register.json', req);
}, },
verifyEmail: (req: { token: string, requestNewToken: boolean }): ApiResponsePromise<UserVerifyEmailResponse> => { verifyEmail: ({ token, requestNewToken }: { token: string, requestNewToken: boolean }): ApiResponsePromise<UserVerifyEmailResponse> => {
return axios.post<ApiResponse<UserVerifyEmailResponse>>('verify_email/by_token.json?token=' + req.token, { return axios.post<ApiResponse<UserVerifyEmailResponse>>('verify_email/by_token.json?token=' + token, {
requestNewToken: req.requestNewToken requestNewToken: requestNewToken
}, { }, {
noAuth: true, noAuth: true,
ignoreError: true ignoreError: true
@@ -235,10 +235,10 @@ export default {
requestResetPassword: (req: ForgetPasswordRequest): ApiResponsePromise<boolean> => { requestResetPassword: (req: ForgetPasswordRequest): ApiResponsePromise<boolean> => {
return axios.post<ApiResponse<boolean>>('forget_password/request.json', req); return axios.post<ApiResponse<boolean>>('forget_password/request.json', req);
}, },
resetPassword: (req: { email: string, token: string, password: string }): ApiResponsePromise<boolean> => { resetPassword: ({ email, token, password }: { email: string, token: string, password: string }): ApiResponsePromise<boolean> => {
return axios.post<ApiResponse<boolean>>('forget_password/reset/by_token.json?token=' + req.token, { return axios.post<ApiResponse<boolean>>('forget_password/reset/by_token.json?token=' + token, {
email: req.email, email: email,
password: req.password password: password
}, { }, {
noAuth: true, noAuth: true,
ignoreError: true ignoreError: true
@@ -269,11 +269,11 @@ export default {
getTokens: (): ApiResponsePromise<TokenInfoResponse[]> => { getTokens: (): ApiResponsePromise<TokenInfoResponse[]> => {
return axios.get<ApiResponse<TokenInfoResponse[]>>('v1/tokens/list.json'); 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', { return axios.post<ApiResponse<boolean>>('v1/tokens/revoke.json', {
tokenId: req.tokenId tokenId: tokenId
}, { }, {
ignoreError: !!req.ignoreError ignoreError: !!ignoreError
} as ApiRequestConfig); } as ApiRequestConfig);
}, },
revokeAllTokens: (): ApiResponsePromise<boolean> => { revokeAllTokens: (): ApiResponsePromise<boolean> => {
@@ -285,9 +285,9 @@ export default {
updateProfile: (req: UserProfileUpdateRequest): ApiResponsePromise<UserProfileUpdateResponse> => { updateProfile: (req: UserProfileUpdateRequest): ApiResponsePromise<UserProfileUpdateResponse> => {
return axios.post<ApiResponse<UserProfileUpdateResponse>>('v1/users/profile/update.json', req); 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', { return axios.postForm<ApiResponse<UserProfileResponse>>('v1/users/avatar/update.json', {
avatar: req.avatarFile avatar: avatarFile
}, { }, {
timeout: DEFAULT_UPLOAD_API_TIMEOUT timeout: DEFAULT_UPLOAD_API_TIMEOUT
}); });
@@ -328,11 +328,11 @@ export default {
clearData: (req: ClearDataRequest): ApiResponsePromise<boolean> => { clearData: (req: ClearDataRequest): ApiResponsePromise<boolean> => {
return axios.post<ApiResponse<boolean>>('v1/data/clear.json', req); return axios.post<ApiResponse<boolean>>('v1/data/clear.json', req);
}, },
getAllAccounts: (req: { visibleOnly: boolean }): ApiResponsePromise<AccountInfoResponse[]> => { getAllAccounts: ({ visibleOnly }: { visibleOnly: boolean }): ApiResponsePromise<AccountInfoResponse[]> => {
return axios.get<ApiResponse<AccountInfoResponse[]>>('v1/accounts/list.json?visible_only=' + req.visibleOnly); return axios.get<ApiResponse<AccountInfoResponse[]>>('v1/accounts/list.json?visible_only=' + visibleOnly);
}, },
getAccount: (req: { id: string }): ApiResponsePromise<AccountInfoResponse> => { getAccount: ({ id }: { id: string }): ApiResponsePromise<AccountInfoResponse> => {
return axios.get<ApiResponse<AccountInfoResponse>>('v1/accounts/get.json?id=' + req.id); return axios.get<ApiResponse<AccountInfoResponse>>('v1/accounts/get.json?id=' + id);
}, },
addAccount: (req: AccountCreateRequest): ApiResponsePromise<AccountInfoResponse> => { addAccount: (req: AccountCreateRequest): ApiResponsePromise<AccountInfoResponse> => {
return axios.post<ApiResponse<AccountInfoResponse>>('v1/accounts/add.json', req); return axios.post<ApiResponse<AccountInfoResponse>>('v1/accounts/add.json', req);
@@ -405,12 +405,12 @@ export default {
const req = TransactionAmountsRequest.of(params); const req = TransactionAmountsRequest.of(params);
return axios.get<ApiResponse<TransactionAmountsResponse>>(`v1/transactions/amounts.json?${req.buildQuery()}`); return axios.get<ApiResponse<TransactionAmountsResponse>>(`v1/transactions/amounts.json?${req.buildQuery()}`);
}, },
getTransaction: (req: { id: string, withPictures: boolean | undefined }): ApiResponsePromise<TransactionInfoResponse> => { getTransaction: ({ id, withPictures }: { id: string, withPictures: boolean | undefined }): ApiResponsePromise<TransactionInfoResponse> => {
if (!isDefined(req.withPictures)) { if (!isDefined(withPictures)) {
req.withPictures = true; 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> => { addTransaction: (req: TransactionCreateRequest): ApiResponsePromise<TransactionInfoResponse> => {
return axios.post<ApiResponse<TransactionInfoResponse>>('v1/transactions/add.json', req); return axios.post<ApiResponse<TransactionInfoResponse>>('v1/transactions/add.json', req);
@@ -421,10 +421,10 @@ export default {
deleteTransaction: (req: TransactionDeleteRequest): ApiResponsePromise<boolean> => { deleteTransaction: (req: TransactionDeleteRequest): ApiResponsePromise<boolean> => {
return axios.post<ApiResponse<boolean>>('v1/transactions/delete.json', req); 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', { return axios.postForm<ApiResponse<ImportTransactionResponsePageWrapper>>('v1/transactions/parse_import.json', {
fileType: req.fileType, fileType: fileType,
file: req.importFile file: importFile
}, { }, {
timeout: DEFAULT_UPLOAD_API_TIMEOUT timeout: DEFAULT_UPLOAD_API_TIMEOUT
} as ApiRequestConfig); } as ApiRequestConfig);
@@ -434,10 +434,10 @@ export default {
timeout: DEFAULT_IMPORT_API_TIMEOUT timeout: DEFAULT_IMPORT_API_TIMEOUT
} as ApiRequestConfig); } 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', { return axios.postForm<ApiResponse<TransactionPictureInfoBasicResponse>>('v1/transaction/pictures/upload.json', {
picture: req.pictureFile, picture: pictureFile,
clientSessionId: req.clientSessionId clientSessionId: clientSessionId
}, { }, {
timeout: DEFAULT_UPLOAD_API_TIMEOUT timeout: DEFAULT_UPLOAD_API_TIMEOUT
} as ApiRequestConfig); } as ApiRequestConfig);
@@ -448,8 +448,8 @@ export default {
getAllTransactionCategories: (): ApiResponsePromise<Record<number, TransactionCategoryInfoResponse[]>> => { getAllTransactionCategories: (): ApiResponsePromise<Record<number, TransactionCategoryInfoResponse[]>> => {
return axios.get<ApiResponse<Record<number, TransactionCategoryInfoResponse[]>>>('v1/transaction/categories/list.json'); return axios.get<ApiResponse<Record<number, TransactionCategoryInfoResponse[]>>>('v1/transaction/categories/list.json');
}, },
getTransactionCategory: (req: { id: string }): ApiResponsePromise<TransactionCategoryInfoResponse> => { getTransactionCategory: ({ id }: { id: string }): ApiResponsePromise<TransactionCategoryInfoResponse> => {
return axios.get<ApiResponse<TransactionCategoryInfoResponse>>('v1/transaction/categories/get.json?id=' + req.id); return axios.get<ApiResponse<TransactionCategoryInfoResponse>>('v1/transaction/categories/get.json?id=' + id);
}, },
addTransactionCategory: (req: TransactionCategoryCreateRequest): ApiResponsePromise<TransactionCategoryInfoResponse> => { addTransactionCategory: (req: TransactionCategoryCreateRequest): ApiResponsePromise<TransactionCategoryInfoResponse> => {
return axios.post<ApiResponse<TransactionCategoryInfoResponse>>('v1/transaction/categories/add.json', req); return axios.post<ApiResponse<TransactionCategoryInfoResponse>>('v1/transaction/categories/add.json', req);
@@ -472,8 +472,8 @@ export default {
getAllTransactionTags: (): ApiResponsePromise<TransactionTagInfoResponse[]> => { getAllTransactionTags: (): ApiResponsePromise<TransactionTagInfoResponse[]> => {
return axios.get<ApiResponse<TransactionTagInfoResponse[]>>('v1/transaction/tags/list.json'); return axios.get<ApiResponse<TransactionTagInfoResponse[]>>('v1/transaction/tags/list.json');
}, },
getTransactionTag: (req: { id: string }): ApiResponsePromise<TransactionTagInfoResponse> => { getTransactionTag: ({ id }: { id: string }): ApiResponsePromise<TransactionTagInfoResponse> => {
return axios.get<ApiResponse<TransactionTagInfoResponse>>('v1/transaction/tags/get.json?id=' + req.id); return axios.get<ApiResponse<TransactionTagInfoResponse>>('v1/transaction/tags/get.json?id=' + id);
}, },
addTransactionTag: (req: TransactionTagCreateRequest): ApiResponsePromise<TransactionTagInfoResponse> => { addTransactionTag: (req: TransactionTagCreateRequest): ApiResponsePromise<TransactionTagInfoResponse> => {
return axios.post<ApiResponse<TransactionTagInfoResponse>>('v1/transaction/tags/add.json', req); return axios.post<ApiResponse<TransactionTagInfoResponse>>('v1/transaction/tags/add.json', req);
@@ -490,11 +490,11 @@ export default {
deleteTransactionTag: (req: TransactionTagDeleteRequest): ApiResponsePromise<boolean> => { deleteTransactionTag: (req: TransactionTagDeleteRequest): ApiResponsePromise<boolean> => {
return axios.post<ApiResponse<boolean>>('v1/transaction/tags/delete.json', req); return axios.post<ApiResponse<boolean>>('v1/transaction/tags/delete.json', req);
}, },
getAllTransactionTemplates: (req: { templateType: number }): ApiResponsePromise<TransactionTemplateInfoResponse[]> => { getAllTransactionTemplates: ({ templateType }: { templateType: number }): ApiResponsePromise<TransactionTemplateInfoResponse[]> => {
return axios.get<ApiResponse<TransactionTemplateInfoResponse[]>>('v1/transaction/templates/list.json?templateType=' + req.templateType); return axios.get<ApiResponse<TransactionTemplateInfoResponse[]>>('v1/transaction/templates/list.json?templateType=' + templateType);
}, },
getTransactionTemplate: (req: { id: string }): ApiResponsePromise<TransactionTemplateInfoResponse> => { getTransactionTemplate: ({ id }: { id: string }): ApiResponsePromise<TransactionTemplateInfoResponse> => {
return axios.get<ApiResponse<TransactionTemplateInfoResponse>>('v1/transaction/templates/get.json?id=' + req.id); return axios.get<ApiResponse<TransactionTemplateInfoResponse>>('v1/transaction/templates/get.json?id=' + id);
}, },
addTransactionTemplate: (req: TransactionTemplateCreateRequest): ApiResponsePromise<TransactionTemplateInfoResponse> => { addTransactionTemplate: (req: TransactionTemplateCreateRequest): ApiResponsePromise<TransactionTemplateInfoResponse> => {
return axios.post<ApiResponse<TransactionTemplateInfoResponse>>('v1/transaction/templates/add.json', req); 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(); 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 currentExchangeRateData = latestExchangeRates.value;
const now = getCurrentUnixTime(); const now = getCurrentUnixTime();
if (!req.force) { if (!force) {
if (currentExchangeRateData && currentExchangeRateData.time && currentExchangeRateData.data && if (currentExchangeRateData && currentExchangeRateData.time && currentExchangeRateData.data &&
formatUnixTime(currentExchangeRateData.data.updateTime, 'YYYY-MM-DD') === formatUnixTime(now, 'YYYY-MM-DD')) { formatUnixTime(currentExchangeRateData.data.updateTime, 'YYYY-MM-DD') === formatUnixTime(now, 'YYYY-MM-DD')) {
return Promise.resolve(currentExchangeRateData.data); return Promise.resolve(currentExchangeRateData.data);
@@ -77,7 +77,7 @@ export const useExchangeRatesStore = defineStore('exchangeRates', () => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
services.getLatestExchangeRates({ services.getLatestExchangeRates({
ignoreError: req.silent ignoreError: silent
}).then(response => { }).then(response => {
const data = response.data; const data = response.data;
@@ -88,7 +88,7 @@ export const useExchangeRatesStore = defineStore('exchangeRates', () => {
const currentData = getExchangeRatesFromLocalStorage(); 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' }); reject({ message: 'Exchange rates data is up to date' });
return; return;
} }
+7 -7
View File
@@ -276,7 +276,7 @@ export const useOverviewStore = defineStore('overview', () => {
transactionOverviewStateInvalid.value = true; 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 dateChanged = false;
let rangeChanged = false; let rangeChanged = false;
@@ -285,11 +285,11 @@ export const useOverviewStore = defineStore('overview', () => {
updateTransactionDateRange(); updateTransactionDateRange();
} }
if (params.loadLast11Months && !transactionOverviewOptions.value.loadLast11Months) { if (loadLast11Months && !transactionOverviewOptions.value.loadLast11Months) {
rangeChanged = true; rangeChanged = true;
} }
if (!dateChanged && !rangeChanged && !params.force && !transactionOverviewStateInvalid.value) { if (!dateChanged && !rangeChanged && !force && !transactionOverviewStateInvalid.value) {
return new Promise((resolve) => { return new Promise((resolve) => {
resolve(transactionOverviewData.value); resolve(transactionOverviewData.value);
}); });
@@ -303,7 +303,7 @@ export const useOverviewStore = defineStore('overview', () => {
thisYear: transactionDataRange.value.thisYear thisYear: transactionDataRange.value.thisYear
}; };
if (params.loadLast11Months) { if (loadLast11Months) {
requestParams.lastMonth = transactionDataRange.value.lastMonth; requestParams.lastMonth = transactionDataRange.value.lastMonth;
requestParams.monthBeforeLastMonth = transactionDataRange.value.monthBeforeLastMonth; requestParams.monthBeforeLastMonth = transactionDataRange.value.monthBeforeLastMonth;
requestParams.monthBeforeLast2Months = transactionDataRange.value.monthBeforeLast2Months; requestParams.monthBeforeLast2Months = transactionDataRange.value.monthBeforeLast2Months;
@@ -330,17 +330,17 @@ export const useOverviewStore = defineStore('overview', () => {
updateTransactionOverviewInvalidState(false); 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' }); reject({ message: 'Data is up to date' });
return; return;
} }
transactionOverviewData.value = data.result; transactionOverviewData.value = data.result;
transactionOverviewOptions.value.loadLast11Months = params.loadLast11Months; transactionOverviewOptions.value.loadLast11Months = loadLast11Months;
resolve(data.result); resolve(data.result);
}).catch(error => { }).catch(error => {
if (params.force) { if (force) {
logger.error('failed to force load transaction overview', error); logger.error('failed to force load transaction overview', error);
} else { } else {
logger.error('failed to load transaction overview', error); 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) => { return new Promise((resolve, reject) => {
services.revokeToken({ services.revokeToken({ tokenId, ignoreError }).then(response => {
tokenId: req.tokenId,
ignoreError: !!req.ignoreError
}).then(response => {
const data = response.data; const data = response.data;
if (!data || !data.success || !data.result) { if (!data || !data.success || !data.result) {
+45 -52
View File
@@ -94,23 +94,23 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories'
return true; 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; let categoryList: TransactionCategory[] | undefined = undefined;
if (!params.category.parentId || params.category.parentId === '0') { if (!category.parentId || category.parentId === '0') {
categoryList = allTransactionCategories.value[params.category.type]; categoryList = allTransactionCategories.value[category.type];
} else if (allTransactionCategoriesMap.value[params.category.parentId]) { } else if (allTransactionCategoriesMap.value[category.parentId]) {
categoryList = allTransactionCategoriesMap.value[params.category.parentId].secondaryCategories; categoryList = allTransactionCategoriesMap.value[category.parentId].secondaryCategories;
} }
if (categoryList) { 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 { function updateCategoryVisibilityInTransactionCategoryList({ category, hidden }: { category: TransactionCategory, hidden: boolean }): void {
if (allTransactionCategoriesMap.value[params.category.id]) { if (allTransactionCategoriesMap.value[category.id]) {
allTransactionCategoriesMap.value[params.category.id].visible = !params.hidden; allTransactionCategoriesMap.value[category.id].visible = !hidden;
} }
} }
@@ -160,8 +160,8 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories'
transactionCategoryListStateInvalid.value = true; transactionCategoryListStateInvalid.value = true;
} }
function loadAllCategories(params: { force?: boolean }): Promise<Record<number, TransactionCategory[]>> { function loadAllCategories({ force }: { force?: boolean }): Promise<Record<number, TransactionCategory[]>> {
if (!params.force && !transactionCategoryListStateInvalid.value) { if (!force && !transactionCategoryListStateInvalid.value) {
return new Promise((resolve) => { return new Promise((resolve) => {
resolve(allTransactionCategories.value); resolve(allTransactionCategories.value);
}); });
@@ -194,7 +194,7 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories'
const transactionCategories = TransactionCategory.ofMap(data.result); 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' }); reject({ message: 'Category list is up to date' });
return; return;
} }
@@ -203,7 +203,7 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories'
resolve(transactionCategories); resolve(transactionCategories);
}).catch(error => { }).catch(error => {
if (params.force) { if (force) {
logger.error('failed to force load category list', error); logger.error('failed to force load category list', error);
} else { } else {
logger.error('failed to load category list', error); 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) => { return new Promise((resolve, reject) => {
services.getTransactionCategory({ services.getTransactionCategory({
id: params.categoryId id: categoryId
}).then(response => { }).then(response => {
const data = response.data; 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) => { return new Promise((resolve, reject) => {
let promise: ApiResponsePromise<TransactionCategoryInfoResponse>; let promise: ApiResponsePromise<TransactionCategoryInfoResponse>;
if (!params.isEdit) { if (!isEdit) {
promise = services.addTransactionCategory(params.category.toCreateRequest(params.clientSessionId)); promise = services.addTransactionCategory(category.toCreateRequest(clientSessionId));
} else { } else {
promise = services.modifyTransactionCategory(params.category.toModifyRequest()); promise = services.modifyTransactionCategory(category.toModifyRequest());
} }
promise.then(response => { promise.then(response => {
const data = response.data; const data = response.data;
if (!data || !data.success || !data.result) { if (!data || !data.success || !data.result) {
if (!params.isEdit) { if (!isEdit) {
reject({ message: 'Unable to add category' }); reject({ message: 'Unable to add category' });
} else { } else {
reject({ message: 'Unable to save category' }); reject({ message: 'Unable to save category' });
@@ -273,10 +273,10 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories'
const transactionCategory = TransactionCategory.of(data.result); const transactionCategory = TransactionCategory.of(data.result);
if (!params.isEdit) { if (!isEdit) {
addCategoryToTransactionCategoryList(transactionCategory); addCategoryToTransactionCategoryList(transactionCategory);
} else { } else {
const result = updateCategoryInTransactionCategoryList(transactionCategory, allTransactionCategoriesMap.value[params.category.id]); const result = updateCategoryInTransactionCategoryList(transactionCategory, allTransactionCategoriesMap.value[category.id]);
if (!result && !transactionCategoryListStateInvalid.value) { if (!result && !transactionCategoryListStateInvalid.value) {
updateTransactionCategoryListInvalidState(true); updateTransactionCategoryListInvalidState(true);
@@ -290,7 +290,7 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories'
if (error.response && error.response.data && error.response.data.errorMessage) { if (error.response && error.response.data && error.response.data.errorMessage) {
reject({ error: error.response.data }); reject({ error: error.response.data });
} else if (!error.processed) { } else if (!error.processed) {
if (!params.isEdit) { if (!isEdit) {
reject({ message: 'Unable to add category' }); reject({ message: 'Unable to add category' });
} else { } else {
reject({ message: 'Unable to save category' }); 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> { function changeCategoryDisplayOrder({ categoryId, from, to }: { categoryId: string, from: number, to: number }): Promise<void> {
const category = allTransactionCategoriesMap.value[params.categoryId]; const category = allTransactionCategoriesMap.value[categoryId];
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (!category) { if (!category) {
@@ -344,14 +344,14 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories'
if (!category.parentId || category.parentId === '0') { if (!category.parentId || category.parentId === '0') {
if (!allTransactionCategories.value[category.type] || if (!allTransactionCategories.value[category.type] ||
!allTransactionCategories.value[category.type][params.to]) { !allTransactionCategories.value[category.type][to]) {
reject({ message: 'Unable to move category' }); reject({ message: 'Unable to move category' });
return; return;
} }
} else { } else {
const subCategoryList = allTransactionCategoriesMap.value[category.parentId].secondaryCategories; const subCategoryList = allTransactionCategoriesMap.value[category.parentId].secondaryCategories;
if (!subCategoryList || !subCategoryList[params.to]) { if (!subCategoryList || !subCategoryList[to]) {
reject({ message: 'Unable to move category' }); reject({ message: 'Unable to move category' });
return; return;
} }
@@ -361,25 +361,21 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories'
updateTransactionCategoryListInvalidState(true); updateTransactionCategoryListInvalidState(true);
} }
updateCategoryDisplayOrderInCategoryList({ updateCategoryDisplayOrderInCategoryList({ category, from, to });
category: category,
from: params.from,
to: params.to
});
resolve(); resolve();
}); });
} }
function updateCategoryDisplayOrders(params: { type: CategoryType, parentId: string }): Promise<boolean> { function updateCategoryDisplayOrders({ type, parentId }: { type: CategoryType, parentId: string }): Promise<boolean> {
const newDisplayOrders: TransactionCategoryNewDisplayOrderRequest[] = []; const newDisplayOrders: TransactionCategoryNewDisplayOrderRequest[] = [];
let categoryList: TransactionCategory[] | undefined = undefined; let categoryList: TransactionCategory[] | undefined = undefined;
if (!params.parentId || params.parentId === '0') { if (!parentId || parentId === '0') {
categoryList = allTransactionCategories.value[params.type]; categoryList = allTransactionCategories.value[type];
} else if (allTransactionCategoriesMap.value[params.parentId]) { } else if (allTransactionCategoriesMap.value[parentId]) {
categoryList = allTransactionCategoriesMap.value[params.parentId].secondaryCategories; categoryList = allTransactionCategoriesMap.value[parentId].secondaryCategories;
} }
if (categoryList) { 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) => { return new Promise((resolve, reject) => {
services.hideTransactionCategory({ services.hideTransactionCategory({
id: params.category.id, id: category.id,
hidden: params.hidden hidden: hidden
}).then(response => { }).then(response => {
const data = response.data; const data = response.data;
if (!data || !data.success || !data.result) { if (!data || !data.success || !data.result) {
if (params.hidden) { if (hidden) {
reject({ message: 'Unable to hide this category' }); reject({ message: 'Unable to hide this category' });
} else { } else {
reject({ message: 'Unable to unhide this category' }); reject({ message: 'Unable to unhide this category' });
@@ -439,10 +435,7 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories'
return; return;
} }
updateCategoryVisibilityInTransactionCategoryList({ updateCategoryVisibilityInTransactionCategoryList({ category, hidden });
category: params.category,
hidden: params.hidden
});
resolve(data.result); resolve(data.result);
}).catch(error => { }).catch(error => {
@@ -451,7 +444,7 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories'
if (error.response && error.response.data && error.response.data.errorMessage) { if (error.response && error.response.data && error.response.data.errorMessage) {
reject({ error: error.response.data }); reject({ error: error.response.data });
} else if (!error.processed) { } else if (!error.processed) {
if (params.hidden) { if (hidden) {
reject({ message: 'Unable to hide this category' }); reject({ message: 'Unable to hide this category' });
} else { } else {
reject({ message: 'Unable to unhide this category' }); 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) => { return new Promise((resolve, reject) => {
services.deleteTransactionCategory({ services.deleteTransactionCategory({
id: params.category.id id: category.id
}).then(response => { }).then(response => {
const data = response.data; const data = response.data;
@@ -475,12 +468,12 @@ export const useTransactionCategoriesStore = defineStore('transactionCategories'
return; return;
} }
if (params.beforeResolve) { if (beforeResolve) {
params.beforeResolve(() => { beforeResolve(() => {
removeCategoryFromTransactionCategoryList(params.category); removeCategoryFromTransactionCategoryList(category);
}); });
} else { } else {
removeCategoryFromTransactionCategoryList(params.category); removeCategoryFromTransactionCategoryList(category);
} }
resolve(data.result); resolve(data.result);
+32 -38
View File
@@ -59,13 +59,13 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
allTransactionTagsMap.value[tag.id] = tag; allTransactionTagsMap.value[tag.id] = tag;
} }
function updateTagDisplayOrderInTransactionTagList(params: { from: number, to: number }): void { function updateTagDisplayOrderInTransactionTagList({ from, to }: { from: number, to: number }): void {
allTransactionTags.value.splice(params.to, 0, allTransactionTags.value.splice(params.from, 1)[0]); allTransactionTags.value.splice(to, 0, allTransactionTags.value.splice(from, 1)[0]);
} }
function updateTagVisibilityInTransactionTagList(params: { tag: TransactionTag, hidden: boolean }): void { function updateTagVisibilityInTransactionTagList({ tag, hidden }: { tag: TransactionTag, hidden: boolean }): void {
if (allTransactionTagsMap.value[params.tag.id]) { if (allTransactionTagsMap.value[tag.id]) {
allTransactionTagsMap.value[params.tag.id].hidden = params.hidden; allTransactionTagsMap.value[tag.id].hidden = hidden;
} }
} }
@@ -92,8 +92,8 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
transactionTagListStateInvalid.value = true; transactionTagListStateInvalid.value = true;
} }
function loadAllTags(params: { force?: boolean }): Promise<TransactionTag[]> { function loadAllTags({ force }: { force?: boolean }): Promise<TransactionTag[]> {
if (!params.force && !transactionTagListStateInvalid.value) { if (!force && !transactionTagListStateInvalid.value) {
return new Promise((resolve) => { return new Promise((resolve) => {
resolve(allTransactionTags.value); resolve(allTransactionTags.value);
}); });
@@ -114,7 +114,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
const transactionTags = TransactionTag.ofMany(data.result); 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' }); reject({ message: 'Tag list is up to date' });
return; return;
} }
@@ -123,7 +123,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
resolve(transactionTags); resolve(transactionTags);
}).catch(error => { }).catch(error => {
if (params.force) { if (force) {
logger.error('failed to force load tag list', error); logger.error('failed to force load tag list', error);
} else { } else {
logger.error('failed to load tag list', error); 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) => { return new Promise((resolve, reject) => {
let promise: ApiResponsePromise<TransactionTagInfoResponse>; let promise: ApiResponsePromise<TransactionTagInfoResponse>;
if (!params.tag.id) { if (!tag.id) {
promise = services.addTransactionTag(params.tag.toCreateRequest()); promise = services.addTransactionTag(tag.toCreateRequest());
} else { } else {
promise = services.modifyTransactionTag(params.tag.toModifyRequest()); promise = services.modifyTransactionTag(tag.toModifyRequest());
} }
promise.then(response => { promise.then(response => {
const data = response.data; const data = response.data;
if (!data || !data.success || !data.result) { if (!data || !data.success || !data.result) {
if (!params.tag.id) { if (!tag.id) {
reject({ message: 'Unable to add tag' }); reject({ message: 'Unable to add tag' });
} else { } else {
reject({ message: 'Unable to save tag' }); reject({ message: 'Unable to save tag' });
@@ -164,7 +164,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
const transactionTag = TransactionTag.of(data.result); const transactionTag = TransactionTag.of(data.result);
if (!params.tag.id) { if (!tag.id) {
addTagToTransactionTagList(transactionTag); addTagToTransactionTagList(transactionTag);
} else { } else {
updateTagInTransactionTagList(transactionTag); updateTagInTransactionTagList(transactionTag);
@@ -177,7 +177,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
if (error.response && error.response.data && error.response.data.errorMessage) { if (error.response && error.response.data && error.response.data.errorMessage) {
reject({ error: error.response.data }); reject({ error: error.response.data });
} else if (!error.processed) { } else if (!error.processed) {
if (!params.tag.id) { if (!tag.id) {
reject({ message: 'Unable to add tag' }); reject({ message: 'Unable to add tag' });
} else { } else {
reject({ message: 'Unable to save tag' }); 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) => { return new Promise((resolve, reject) => {
let tag: TransactionTag | null = null; let tag: TransactionTag | null = null;
for (let i = 0; i < allTransactionTags.value.length; i++) { 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]; tag = allTransactionTags.value[i];
break; break;
} }
} }
if (!tag || !allTransactionTags.value[params.to]) { if (!tag || !allTransactionTags.value[to]) {
reject({ message: 'Unable to move tag' }); reject({ message: 'Unable to move tag' });
return; return;
} }
@@ -209,10 +209,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
updateTransactionTagListInvalidState(true); updateTransactionTagListInvalidState(true);
} }
updateTagDisplayOrderInTransactionTagList({ updateTagDisplayOrderInTransactionTagList({ from, to });
from: params.from,
to: params.to
});
resolve(); 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) => { return new Promise((resolve, reject) => {
services.hideTransactionTag({ services.hideTransactionTag({
id: params.tag.id, id: tag.id,
hidden: params.hidden hidden: hidden
}).then(response => { }).then(response => {
const data = response.data; const data = response.data;
if (!data || !data.success || !data.result) { if (!data || !data.success || !data.result) {
if (params.hidden) { if (hidden) {
reject({ message: 'Unable to hide this tag' }); reject({ message: 'Unable to hide this tag' });
} else { } else {
reject({ message: 'Unable to unhide this tag' }); reject({ message: 'Unable to unhide this tag' });
@@ -275,10 +272,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
return; return;
} }
updateTagVisibilityInTransactionTagList({ updateTagVisibilityInTransactionTagList({ tag, hidden });
tag: params.tag,
hidden: params.hidden
});
resolve(data.result); resolve(data.result);
}).catch(error => { }).catch(error => {
@@ -287,7 +281,7 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
if (error.response && error.response.data && error.response.data.errorMessage) { if (error.response && error.response.data && error.response.data.errorMessage) {
reject({ error: error.response.data }); reject({ error: error.response.data });
} else if (!error.processed) { } else if (!error.processed) {
if (params.hidden) { if (hidden) {
reject({ message: 'Unable to hide this tag' }); reject({ message: 'Unable to hide this tag' });
} else { } else {
reject({ message: 'Unable to unhide this tag' }); 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) => { return new Promise((resolve, reject) => {
services.deleteTransactionTag({ services.deleteTransactionTag({
id: params.tag.id id: tag.id
}).then(response => { }).then(response => {
const data = response.data; const data = response.data;
@@ -311,12 +305,12 @@ export const useTransactionTagsStore = defineStore('transactionTags', () => {
return; return;
} }
if (params.beforeResolve) { if (beforeResolve) {
params.beforeResolve(() => { beforeResolve(() => {
removeTagFromTransactionTagList(params.tag); removeTagFromTransactionTagList(tag);
}); });
} else { } else {
removeTagFromTransactionTagList(params.tag); removeTagFromTransactionTagList(tag);
} }
resolve(data.result); 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) => { return new Promise((resolve, reject) => {
services.updateProfile({ services.updateProfile({ transactionEditScope }).then(response => {
transactionEditScope: req.transactionEditScope,
}).then(response => {
const data = response.data; const data = response.data;
if (!data || !data.success || !data.result || !data.result.user || !isObject(data.result.user)) { 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) => { return new Promise((resolve, reject) => {
services.updateAvatar({ avatarFile: req.avatarFile }).then(response => { services.updateAvatar({ avatarFile }).then(response => {
const data = response.data; const data = response.data;
if (!data || !data.success || !data.result) { if (!data || !data.success || !data.result) {