@@ -28,6 +28,10 @@ const messages = defineMessages({
2828 id : 'settings.account.headlineInvoices' ,
2929 defaultMessage : '!!Invoices' ,
3030 } ,
31+ headlineDangerZone : {
32+ id : 'settings.account.headlineDangerZone' ,
33+ defaultMessage : '!!Danger Zone' ,
34+ } ,
3135 manageSubscriptionButtonLabel : {
3236 id : 'settings.account.manageSubscription.label' ,
3337 defaultMessage : '!!!Manage your subscription' ,
@@ -72,6 +76,18 @@ const messages = defineMessages({
7276 id : 'settings.account.mining.cancel' ,
7377 defaultMessage : '!!!Cancel mining' ,
7478 } ,
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+ } ,
7591} ) ;
7692
7793@observer
@@ -90,6 +106,9 @@ export default class AccountDashboard extends Component {
90106 openExternalUrl : PropTypes . func . isRequired ,
91107 onCloseSubscriptionWindow : PropTypes . func . isRequired ,
92108 stopMiner : PropTypes . func . isRequired ,
109+ deleteAccount : PropTypes . func . isRequired ,
110+ isLoadingDeleteAccount : PropTypes . bool . isRequired ,
111+ isDeleteAccountSuccessful : PropTypes . bool . isRequired ,
93112 } ;
94113
95114 static contextTypes = {
@@ -111,6 +130,9 @@ export default class AccountDashboard extends Component {
111130 retryUserInfoRequest,
112131 onCloseSubscriptionWindow,
113132 stopMiner,
133+ deleteAccount,
134+ isLoadingDeleteAccount,
135+ isDeleteAccountSuccessful,
114136 } = this . props ;
115137 const { intl } = this . context ;
116138
@@ -201,7 +223,7 @@ export default class AccountDashboard extends Component {
201223 />
202224 </ div >
203225 </ div >
204- < div className = "account__box account__box--last " >
226+ < div className = "account__box" >
205227 < h2 > { intl . formatMessage ( messages . headlineInvoices ) } </ h2 >
206228 < table className = "invoices" >
207229 < tbody >
@@ -230,7 +252,7 @@ export default class AccountDashboard extends Component {
230252
231253 { user . isMiner && (
232254 < div className = "account franz-form" >
233- < div className = "account__box" >
255+ < div className = "account__box account__box--last " >
234256 < h2 > { intl . formatMessage ( messages . headlineSubscription ) } </ h2 >
235257 < div className = "account__subscription" >
236258 < div >
@@ -267,7 +289,7 @@ export default class AccountDashboard extends Component {
267289 < Loader />
268290 ) : (
269291 < div className = "account franz-form" >
270- < div className = "account__box account__box--last " >
292+ < div className = "account__box" >
271293 < h2 > { intl . formatMessage ( messages . headlineUpgrade ) } </ h2 >
272294 < SubscriptionForm
273295 onCloseWindow = { onCloseSubscriptionWindow }
@@ -276,8 +298,29 @@ export default class AccountDashboard extends Component {
276298 </ div >
277299 )
278300 ) }
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 >
279321 </ div >
280322 ) }
323+
281324 </ div >
282325 < ReactTooltip place = "right" type = "dark" effect = "solid" />
283326 </ div >
0 commit comments