@@ -28,6 +28,10 @@ const messages = defineMessages({
28
28
id : 'settings.account.headlineInvoices' ,
29
29
defaultMessage : '!!Invoices' ,
30
30
} ,
31
+ headlineDangerZone : {
32
+ id : 'settings.account.headlineDangerZone' ,
33
+ defaultMessage : '!!Danger Zone' ,
34
+ } ,
31
35
manageSubscriptionButtonLabel : {
32
36
id : 'settings.account.manageSubscription.label' ,
33
37
defaultMessage : '!!!Manage your subscription' ,
@@ -72,6 +76,18 @@ const messages = defineMessages({
72
76
id : 'settings.account.mining.cancel' ,
73
77
defaultMessage : '!!!Cancel mining' ,
74
78
} ,
79
+ deleteAccount : {
80
+ id : 'settings.account.deleteAccount' ,
81
+ defaultMessage : '!!!Delete account' ,
82
+ } ,
83
+ deleteInfo : {
84
+ id : 'settings.account.deleteInfo' ,
85
+ defaultMessage : '!!!If you don\'t need your Franz account any longer, you can delete your account and all related data here.' ,
86
+ } ,
87
+ deleteEmailSent : {
88
+ id : 'settings.account.deleteEmailSent' ,
89
+ defaultMessage : '!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!' ,
90
+ } ,
75
91
} ) ;
76
92
77
93
@observer
@@ -90,6 +106,9 @@ export default class AccountDashboard extends Component {
90
106
openExternalUrl : PropTypes . func . isRequired ,
91
107
onCloseSubscriptionWindow : PropTypes . func . isRequired ,
92
108
stopMiner : PropTypes . func . isRequired ,
109
+ deleteAccount : PropTypes . func . isRequired ,
110
+ isLoadingDeleteAccount : PropTypes . bool . isRequired ,
111
+ isDeleteAccountSuccessful : PropTypes . bool . isRequired ,
93
112
} ;
94
113
95
114
static contextTypes = {
@@ -111,6 +130,9 @@ export default class AccountDashboard extends Component {
111
130
retryUserInfoRequest,
112
131
onCloseSubscriptionWindow,
113
132
stopMiner,
133
+ deleteAccount,
134
+ isLoadingDeleteAccount,
135
+ isDeleteAccountSuccessful,
114
136
} = this . props ;
115
137
const { intl } = this . context ;
116
138
@@ -201,7 +223,7 @@ export default class AccountDashboard extends Component {
201
223
/>
202
224
</ div >
203
225
</ div >
204
- < div className = "account__box account__box--last " >
226
+ < div className = "account__box" >
205
227
< h2 > { intl . formatMessage ( messages . headlineInvoices ) } </ h2 >
206
228
< table className = "invoices" >
207
229
< tbody >
@@ -230,7 +252,7 @@ export default class AccountDashboard extends Component {
230
252
231
253
{ user . isMiner && (
232
254
< div className = "account franz-form" >
233
- < div className = "account__box" >
255
+ < div className = "account__box account__box--last " >
234
256
< h2 > { intl . formatMessage ( messages . headlineSubscription ) } </ h2 >
235
257
< div className = "account__subscription" >
236
258
< div >
@@ -267,7 +289,7 @@ export default class AccountDashboard extends Component {
267
289
< Loader />
268
290
) : (
269
291
< div className = "account franz-form" >
270
- < div className = "account__box account__box--last " >
292
+ < div className = "account__box" >
271
293
< h2 > { intl . formatMessage ( messages . headlineUpgrade ) } </ h2 >
272
294
< SubscriptionForm
273
295
onCloseWindow = { onCloseSubscriptionWindow }
@@ -276,8 +298,29 @@ export default class AccountDashboard extends Component {
276
298
</ div >
277
299
)
278
300
) }
301
+
302
+ < div className = "account franz-form" >
303
+ < div className = "account__box" >
304
+ < h2 > { intl . formatMessage ( messages . headlineDangerZone ) } </ h2 >
305
+ { ! isDeleteAccountSuccessful && (
306
+ < div className = "account__subscription" >
307
+ < p > { intl . formatMessage ( messages . deleteInfo ) } </ p >
308
+ < Button
309
+ label = { intl . formatMessage ( messages . deleteAccount ) }
310
+ buttonType = "danger"
311
+ onClick = { ( ) => deleteAccount ( ) }
312
+ loaded = { ! isLoadingDeleteAccount }
313
+ />
314
+ </ div >
315
+ ) }
316
+ { isDeleteAccountSuccessful && (
317
+ < p > { intl . formatMessage ( messages . deleteEmailSent ) } </ p >
318
+ ) }
319
+ </ div >
320
+ </ div >
279
321
</ div >
280
322
) }
323
+
281
324
</ div >
282
325
< ReactTooltip place = "right" type = "dark" effect = "solid" />
283
326
</ div >
0 commit comments