diff --git a/src/locales/en.js b/src/locales/en.js index a632f1c9..5566ffac 100644 --- a/src/locales/en.js +++ b/src/locales/en.js @@ -648,6 +648,11 @@ export default { 'Unable to update user profile': 'Unable to update user profile', 'Data Management': 'Data Management', 'Export Data': 'Export Data', + 'Clear User Data': 'Clear User Data', + 'Are you sure you want to clear all data?': 'Are you sure you want to clear all data?', + 'You CANNOT undo this action. This will clear your accounts, categories, tags and transactions data. Please input your current password to confirm.': 'You CANNOT undo this action. This will clear your accounts, categories, tags and transactions data. Please input your current password to confirm.', + 'All user data has been cleared': 'All user data has been cleared', + 'Unable to clear user data': 'Unable to clear user data', 'Device & Sessions': 'Device & Sessions', 'Logout All': 'Logout All', 'Unable to get session list': 'Unable to get session list', diff --git a/src/locales/zh_Hans.js b/src/locales/zh_Hans.js index b153925f..6cef5e38 100644 --- a/src/locales/zh_Hans.js +++ b/src/locales/zh_Hans.js @@ -648,6 +648,11 @@ export default { 'Unable to update user profile': '无法更新用户信息', 'Data Management': '数据管理', 'Export Data': '导出数据', + 'Clear User Data': '清除用户数据', + 'Are you sure you want to clear all data?': '您确定要清除所有数据?', + 'You CANNOT undo this action. This will clear your accounts, categories, tags and transactions data. Please input your current password to confirm.': '您不能撤销该操作。该操作将会清除您的账号、分类、标签以及交易数据。请输入您当前的密码以确认。', + 'All user data has been cleared': '用户所有数据已经清空', + 'Unable to clear user data': '无法清除用户数据', 'Device & Sessions': '设备和会话', 'Logout All': '注销全部', 'Unable to get session list': '无法获取会话列表', diff --git a/src/store/index.js b/src/store/index.js index 85910e70..c6f53cd9 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -52,6 +52,7 @@ import { logout, getCurrentUserProfile, updateUserProfile, + clearUserData, clearUserInfoState, resetState, currentUserNickname, @@ -735,6 +736,7 @@ const stores = { logout, getCurrentUserProfile, updateUserProfile, + clearUserData, clearUserInfoState, resetState, diff --git a/src/store/user.js b/src/store/user.js index 39306937..7eed9ae1 100644 --- a/src/store/user.js +++ b/src/store/user.js @@ -11,7 +11,9 @@ import { CLEAR_USER_INFO, UPDATE_ACCOUNT_LIST_INVALID_STATE, - UPDATE_TRANSACTION_OVERVIEW_INVALID_STATE + UPDATE_TRANSACTION_OVERVIEW_INVALID_STATE, + UPDATE_TRANSACTION_CATEGORY_LIST_INVALID_STATE, + UPDATE_TRANSACTION_TAG_LIST_INVALID_STATE } from './mutations.js'; export function authorize(context, { loginName, password }) { @@ -271,6 +273,49 @@ export function updateUserProfile(context, { profile, currentPassword }) { }); } +export function clearUserData(context, { password }) { + return new Promise((resolve, reject) => { + services.clearData({ + password: password + }).then(response => { + const data = response.data; + + if (!data || !data.success || !data.result) { + reject({ message: 'Unable to clear user data' }); + return; + } + + if (!context.state.accountListStateInvalid) { + context.commit(UPDATE_ACCOUNT_LIST_INVALID_STATE, true); + } + + if (!context.state.transactionCategoryListStateInvalid) { + context.commit(UPDATE_TRANSACTION_CATEGORY_LIST_INVALID_STATE, true); + } + + if (!context.state.transactionTagListStateInvalid) { + context.commit(UPDATE_TRANSACTION_TAG_LIST_INVALID_STATE, true); + } + + if (!context.state.transactionOverviewStateInvalid) { + context.commit(UPDATE_TRANSACTION_OVERVIEW_INVALID_STATE, true); + } + + resolve(data.result); + }).catch(error => { + logger.error('failed to clear user data', error); + + if (error && error.processed) { + reject(error); + } else if (error.response && error.response.data && error.response.data.errorMessage) { + reject({ error: error.response.data }); + } else { + reject({ message: 'Unable to clear user data' }); + } + }); + }); +} + export function clearUserInfoState(context) { context.commit(CLEAR_USER_INFO); } diff --git a/src/views/mobile/users/DataManagement.vue b/src/views/mobile/users/DataManagement.vue index a069e1b4..10c99498 100644 --- a/src/views/mobile/users/DataManagement.vue +++ b/src/views/mobile/users/DataManagement.vue @@ -6,16 +6,61 @@ {{ $t('Export Data') }} + {{ $t('Clear User Data') }} + + +