2022-01-21 17:45:04 +03:00
import ' package:flutter/material.dart ' ;
import ' package:flutter_riverpod/flutter_riverpod.dart ' ;
2022-03-25 17:43:32 +03:00
import ' ../../app/message.dart ' ;
2022-03-31 12:50:40 +03:00
import ' ../../widgets/responsive_dialog.dart ' ;
2022-01-21 17:45:04 +03:00
import ' ../models.dart ' ;
import ' ../state.dart ' ;
import ' ../../app/models.dart ' ;
import ' ../../app/state.dart ' ;
class DeleteAccountDialog extends ConsumerWidget {
final DeviceNode device ;
final OathCredential credential ;
const DeleteAccountDialog ( this . device , this . credential , { Key ? key } )
: super ( key: key ) ;
@ override
Widget build ( BuildContext context , WidgetRef ref ) {
// If current device changes, we need to pop back to the main Page.
ref . listen < DeviceNode ? > ( currentDeviceProvider , ( previous , next ) {
2022-03-02 10:23:29 +03:00
Navigator . of ( context ) . pop ( false ) ;
2022-01-21 17:45:04 +03:00
} ) ;
final label = credential . issuer ! = null
? ' ${ credential . issuer } ( ${ credential . name } ) '
: credential . name ;
2022-03-16 11:13:17 +03:00
return ResponsiveDialog (
title: const Text ( ' Delete account ' ) ,
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
2022-01-21 17:45:04 +03:00
children: [
const Text (
' Warning! This action will delete the account from your YubiKey. ' ) ,
Text (
' You will no longer be able to generate OTPs for this account. Make sure to first disable this credential from the website to avoid being locked out of your account. ' ,
style: Theme . of ( context ) . textTheme . bodyText1 ,
) ,
2022-03-16 11:13:17 +03:00
Text ( ' Account: $ label ' ) ,
]
. map ( ( e ) = > Padding (
child: e ,
padding: const EdgeInsets . symmetric ( vertical: 8.0 ) ,
) )
. toList ( ) ,
2022-01-21 17:45:04 +03:00
) ,
actions: [
2022-03-16 11:13:17 +03:00
TextButton (
2022-01-21 17:45:04 +03:00
onPressed: ( ) async {
await ref
. read ( credentialListProvider ( device . path ) . notifier )
. deleteAccount ( credential ) ;
2022-03-02 10:23:29 +03:00
Navigator . of ( context ) . pop ( true ) ;
2022-03-25 17:43:32 +03:00
showMessage ( context , ' Account deleted ' ) ;
2022-01-21 17:45:04 +03:00
} ,
2022-03-16 11:13:17 +03:00
child: const Text ( ' Delete ' ) ,
2022-01-21 17:45:04 +03:00
) ,
] ,
) ;
}
}