From 2facd8cd7f47f957af02648e385a6fae075bc694 Mon Sep 17 00:00:00 2001
From: poka <poka@p2p.legal>
Date: Sun, 21 Aug 2022 01:30:26 +0200
Subject: [PATCH] lock identity name format on confirmation

---
 lib/providers/wallet_options.dart         | 20 +++++++++++++++-----
 lib/screens/myWallets/wallet_options.dart |  2 +-
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/lib/providers/wallet_options.dart b/lib/providers/wallet_options.dart
index f2b5b2ae..c1a28217 100644
--- a/lib/providers/wallet_options.dart
+++ b/lib/providers/wallet_options.dart
@@ -3,6 +3,7 @@
 import 'dart:io';
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
 import 'dart:async';
 import 'package:gecko/globals.dart';
 import 'package:gecko/providers/duniter_indexer.dart';
@@ -214,7 +215,7 @@ class WalletOptionsProvider with ChangeNotifier {
     return await sub.idtyStatus(address) == 'Validated';
   }
 
-  Future<String?> validateIdentity(BuildContext context) async {
+  Future<String?> confirmIdentityPopup(BuildContext context) async {
     TextEditingController idtyName = TextEditingController();
     SubstrateSdk sub = Provider.of<SubstrateSdk>(context, listen: false);
     WalletOptionsProvider walletOptions =
@@ -238,6 +239,11 @@ class WalletOptionsProvider with ChangeNotifier {
               const SizedBox(height: 20),
               TextField(
                 onChanged: (_) => notifyListeners(),
+                inputFormatters: <TextInputFormatter>[
+                  // FilteringTextInputFormatter.allow(RegExp("[0-9a-zA-Z]")),
+                  FilteringTextInputFormatter.deny(RegExp(r'^ ')),
+                  // FilteringTextInputFormatter.deny(RegExp(r' $')),
+                ],
                 textAlign: TextAlign.center,
                 autofocus: true,
                 controller: idtyName,
@@ -257,13 +263,17 @@ class WalletOptionsProvider with ChangeNotifier {
                       "validate".tr(),
                       style: TextStyle(
                         fontSize: 21,
-                        color: idtyName.text.length >= 2
+                        color: idtyName.text.length.clamp(3, 64) ==
+                                idtyName.text.length
                             ? const Color(0xffD80000)
                             : Colors.grey,
                       ),
                     ),
                     onPressed: () async {
-                      if (idtyName.text.length >= 2) {
+                      idtyName.text = idtyName.text.trim().replaceAll('  ', '');
+
+                      if (idtyName.text.length.clamp(3, 64) ==
+                          idtyName.text.length) {
                         WalletData? defaultWallet =
                             myWalletProvider.getDefaultWallet();
 
@@ -291,8 +301,8 @@ class WalletOptionsProvider with ChangeNotifier {
                             MaterialPageRoute(builder: (context) {
                               return TransactionInProgress(
                                 transType: 'comfirmIdty',
-                                fromAddress: wallet.address,
-                                toAddress: wallet.address,
+                                fromAddress: getShortPubkey(wallet.address!),
+                                toAddress: getShortPubkey(wallet.address!),
                               );
                             }),
                           );
diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart
index 3d5743b7..58f58eed 100644
--- a/lib/screens/myWallets/wallet_options.dart
+++ b/lib/screens/myWallets/wallet_options.dart
@@ -298,7 +298,7 @@ class WalletOptions extends StatelessWidget {
                       onPrimary: Colors.white, // foreground
                     ),
                     onPressed: () {
-                      walletProvider.validateIdentity(context);
+                      walletProvider.confirmIdentityPopup(context);
                       // Navigator.push(
                       //   context,
                       //   MaterialPageRoute(builder: (context) {
-- 
GitLab