added flush bar for keys gen/delete

This commit is contained in:
Rylee Davis 2023-05-15 14:32:54 -06:00
parent 651a4e2421
commit 834af8472a
2 changed files with 64 additions and 76 deletions

View File

@ -2,9 +2,9 @@ import 'package:dart_nostr/dart_nostr.dart';
import 'package:drifter/models/keys.dart';
import 'package:drifter/pages/profile_screen/widgets/delete_keys_dialog.dart';
import 'package:drifter/pages/profile_screen/widgets/key_exist_dialog.dart';
import 'package:drifter/pages/profile_screen/widgets/keys_option_modal_bottom_sheet.dart';
import 'package:drifter/pages/profile_screen/widgets/message_snack_bar.dart';
import 'package:drifter/pages/profile_screen/widgets/user_info_widget.dart';
import 'package:drifter/pages/widgets/flust_bar_type.dart';
import 'package:drifter/pages/widgets/show_flush_bar.dart';
import 'package:drifter/theme/app_colors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
@ -126,6 +126,20 @@ class ProfileScreenState extends State<ProfileScreen> {
});
}
void keysExistDialog(String npubEncode, String nsecEncode) async {
await showDialog(
context: context,
builder: ((context) {
return KeysExistDialog(
npubEncoded: npubEncode,
nsecEncoded: nsecEncode,
hexPriv: Keys.privateKey,
hexPub: Keys.publicKey,
);
}),
);
}
@override
Widget build(BuildContext context) {
privateKeyInput.text = Keys.nsecKey;
@ -133,11 +147,14 @@ class ProfileScreenState extends State<ProfileScreen> {
return ListView(
children: [
SizedBox(
const SizedBox(
height: 60,
),
UserInfo(),
SizedBox(
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: UserInfo(),
),
const SizedBox(
height: 40,
),
FormKeys(),
@ -161,18 +178,32 @@ class ProfileScreenState extends State<ProfileScreen> {
);
},
child: Text(
'Keys',
"Keys",
),
)
: ElevatedButton(
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(
AppColors.mainDarkBlue)),
backgroundColor:
MaterialStateProperty.all(AppColors.background)),
onPressed: () {
modalBottomSheet();
final currentContext = context;
generateNewKeys().then(
(keysGenerated) async {
if (keysGenerated) {
await Future<void>.delayed(
const Duration(milliseconds: 300));
showFloatingFlushBar(
type: FlushBarType.success,
message: "Keys generated!",
context: context,
);
}
},
);
},
child: Text(
'Generate Keys',
"Generate Keys",
),
),
Keys.keysExist
@ -180,7 +211,27 @@ class ProfileScreenState extends State<ProfileScreen> {
children: [
IconButton(
onPressed: () {
deleteKeysDialog();
showDialog(
context: context,
builder: (context) => DeleteKeysDialog(
onNoPressed: () {
Navigator.pop(context);
},
onYesPressed: () {
final currentContext = context;
_deleteKeysStorage().then((_) {
if (!Keys.keysExist) {
showFloatingFlushBar(
type: FlushBarType.warning,
message: "Keys deleted!",
context: context,
);
}
});
Navigator.pop(context);
},
),
);
},
icon: const Icon(Icons.delete)),
],
@ -234,66 +285,4 @@ class ProfileScreenState extends State<ProfileScreen> {
),
);
}
void modalBottomSheet() {
showModalBottomSheet(
context: context,
builder: (BuildContext context) {
return KeysOptionModalBottomSheet(
generateNewKeyPressed: () {
final currentContext = context;
generateNewKeys().then(
(keysGenerated) {
if (keysGenerated) {
ScaffoldMessenger.of(currentContext).showSnackBar(
MessageSnackBar(label: 'Keys Generated!'));
}
},
);
Navigator.pop(context);
},
);
});
}
void keysExistDialog(String npubEncode, String nsecEncode) async {
await showDialog(
context: context,
builder: ((context) {
return KeysExistDialog(
npubEncoded: npubEncode,
nsecEncoded: nsecEncode,
hexPriv: Keys.privateKey,
hexPub: Keys.publicKey,
);
}),
);
}
void deleteKeysDialog() async {
await showDialog(
context: context,
builder: ((context) {
return DeleteKeysDialog(
onNoPressed: () {
Navigator.pop(context);
},
onYesPressed: () {
final currentContext = context;
_deleteKeysStorage().then((_) {
if (!Keys.keysExist) {
ScaffoldMessenger.of(currentContext).showSnackBar(
MessageSnackBar(
label: 'Keys successfully deleted!',
isWarning: true,
),
);
}
});
Navigator.pop(context);
},
);
}),
);
}
}

View File

@ -1,11 +1,10 @@
import 'package:drifter/pages/animated_widgets/rotate_icon.dart';
import 'package:drifter/pages/main_screen/main_screen_widget.dart';
import 'package:drifter/pages/widgets/animated_widgets/rotate_icon.dart';
import 'package:drifter/theme/app_colors.dart';
import 'package:drifter/utilities/assets.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import '../../utilities/assets.dart';
class Splash extends StatefulWidget {
const Splash({super.key});