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') }}
+
+
+