From 0b1416ab9af69a05ea8be9c1af99e597620e98b5 Mon Sep 17 00:00:00 2001 From: vjrj <vjrj@comunes.org> Date: Sat, 1 Jul 2023 20:42:34 +0200 Subject: [PATCH] Fix for qr image in contacts --- lib/g1/g1_helper.dart | 8 +++++ .../third_screen/contact_edit_dialog.dart | 32 ++++++++++++------- .../widgets/third_screen/contacts_page.dart | 3 +- test/g1_test.dart | 3 ++ 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/lib/g1/g1_helper.dart b/lib/g1/g1_helper.dart index cc2fd0a5..9d1cecf7 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 cdf32cd6..4d14dc63 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 3f1737f5..d2002e5b 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 aafbb632..8dc5a3e7 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]!}')); }); } } -- GitLab