diff --git a/lib/g1/g1_helper.dart b/lib/g1/g1_helper.dart index cc2fd0a5885515a4823709bab1c8d89a40f84d47..9d1cecf7b85046a2a5e52dd45683e04ccacdedea 100644 --- a/lib/g1/g1_helper.dart +++ b/lib/g1/g1_helper.dart @@ -129,6 +129,14 @@ bool validateKey(String pubKey) { return true; } +String getFullPubKey(String pubKey) { + if (pubKey.contains(':')) { + return pubKey; + } else { + return '$pubKey:${pkChecksum(pubKey)}'; + } +} + String pkChecksum(String pubkey) { List<int> signpkInt8; diff --git a/lib/ui/widgets/third_screen/contact_edit_dialog.dart b/lib/ui/widgets/third_screen/contact_edit_dialog.dart index cdf32cd6beb530760bbfe0a964f3a701a880fc07..4d14dc6334e3aff9b31566c8a1d00d9fa214d190 100644 --- a/lib/ui/widgets/third_screen/contact_edit_dialog.dart +++ b/lib/ui/widgets/third_screen/contact_edit_dialog.dart @@ -1,8 +1,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:qr_flutter/qr_flutter.dart'; import '../../../data/models/contact.dart'; +import '../../../g1/g1_helper.dart'; import '../../ui_helpers.dart'; class ContactEditDialog extends StatefulWidget { @@ -35,17 +35,27 @@ class _ContactEditDialogState extends State<ContactEditDialog> { child: Column( mainAxisSize: MainAxisSize.min, children: <Widget>[ - TextFormField( - initialValue: humanizePubKey(_updatedContact.pubKey), - decoration: InputDecoration( - labelText: tr('form_contact_pub_key'), + Row(mainAxisSize: MainAxisSize.min, children: <Widget>[ + Flexible( + child: TextFormField( + // maxLines: 2, + initialValue: humanizePubKey(_updatedContact.pubKey), + decoration: InputDecoration( + labelText: tr('form_contact_pub_key'), + ), + enabled: false, + )), + GestureDetector( + onTap: () { + showQrDialog( + context: context, + publicKey: getFullPubKey(_updatedContact.pubKey), + noTitle: true, + feedbackText: 'some_key_copied_to_clipboard'); + }, + child: const Icon(Icons.qr_code, size: 50), ), - enabled: false, - ), - Expanded(child: QrImage( - data: _updatedContact.pubKey, - - )), + ]), TextFormField( initialValue: _updatedContact.name, decoration: const InputDecoration(labelText: 'Name'), diff --git a/lib/ui/widgets/third_screen/contacts_page.dart b/lib/ui/widgets/third_screen/contacts_page.dart index 3f1737f5606adf09f3ad4274432f867560a36a85..d2002e5b446043e904b2a4a4e90fa97707f722fa 100644 --- a/lib/ui/widgets/third_screen/contacts_page.dart +++ b/lib/ui/widgets/third_screen/contacts_page.dart @@ -8,6 +8,7 @@ import '../../../data/models/bottom_nav_cubit.dart'; import '../../../data/models/contact.dart'; import '../../../data/models/contact_cubit.dart'; import '../../../data/models/payment_cubit.dart'; +import '../../../g1/g1_helper.dart'; import '../../contacts_cache.dart'; import '../../ui_helpers.dart'; import '../bottom_widget.dart'; @@ -108,7 +109,7 @@ class _ContactsPageState extends State<ContactsPage> { onPressed: (BuildContext c) { showQrDialog( context: context, - publicKey: contact.pubKey, + publicKey: getFullPubKey(contact.pubKey), noTitle: true, feedbackText: 'some_key_copied_to_clipboard'); }, diff --git a/test/g1_test.dart b/test/g1_test.dart index aafbb632f6421219cfe97facbaecd153f64a3d81..8dc5a3e71aef1dca2a82eea99b9872391abbb15c 100644 --- a/test/g1_test.dart +++ b/test/g1_test.dart @@ -185,6 +185,9 @@ void main() { for (final List<String?> data in testData) { test('Checksum of ${data[0]}', () { expect(pkChecksum(data[0]!), equals(data[1])); + expect(getFullPubKey('${data[0]!}:${data[1]!}'), + equals('${data[0]!}:${data[1]!}')); + expect(getFullPubKey(data[0]!), equals('${data[0]!}:${data[1]!}')); }); } }