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 ;
2022-05-12 10:56:55 +03:00
const DeleteAccountDialog ( this . device , this . credential , { super . key } ) ;
2022-01-21 17:45:04 +03:00
@ 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 ' ) ,
2022-05-12 09:34:51 +03:00
actions: [
TextButton (
onPressed: ( ) async {
await ref
. read ( credentialListProvider ( device . path ) . notifier )
. deleteAccount ( credential ) ;
await ref . read ( withContextProvider ) (
( context ) async {
Navigator . of ( context ) . pop ( ) ;
showMessage ( context , ' Account deleted ' ) ;
} ,
) ;
} ,
child: const Text ( ' Delete ' ) ,
) ,
] ,
2022-03-16 11:13:17 +03:00
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 (
padding: const EdgeInsets . symmetric ( vertical: 8.0 ) ,
2022-05-12 09:34:51 +03:00
child: e ,
2022-03-16 11:13:17 +03:00
) )
. toList ( ) ,
2022-01-21 17:45:04 +03:00
) ,
) ;
}
}