From bd87ea5ab81942b33f7906c7541b607601915941 Mon Sep 17 00:00:00 2001
From: poka <poka@p2p.legal>
Date: Tue, 30 Nov 2021 01:25:48 +0100
Subject: [PATCH] Optimize profile view

---
 assets/walletOptions/trash.png                | Bin 14276 -> 14516 bytes
 lib/main.dart                                 |   4 +-
 lib/models/g1_wallets_list.dart               |   6 +-
 lib/models/g1_wallets_list.g.dart             |  13 +-
 lib/models/home.dart                          |   2 +-
 lib/models/search.dart                        |   7 +-
 .../{history.dart => wallets_profiles.dart}   |  50 ++--
 lib/screens/avatar_fullscreen.dart            |  11 +-
 lib/screens/home.dart                         |   5 +-
 .../myWallets/cesium_wallet_options.dart      |  17 +-
 lib/screens/myWallets/unlocking_wallet.dart   |   5 +-
 lib/screens/myWallets/wallet_options.dart     |  33 ++-
 .../{history.dart => old_history_pay.dart}    |  36 ++-
 lib/screens/search_result.dart                | 204 +++++++------
 lib/screens/wallet_view.dart                  | 278 ++++++++++++------
 pubspec.yaml                                  |   2 +-
 16 files changed, 420 insertions(+), 253 deletions(-)
 rename lib/models/{history.dart => wallets_profiles.dart} (92%)
 rename lib/screens/{history.dart => old_history_pay.dart} (93%)

diff --git a/assets/walletOptions/trash.png b/assets/walletOptions/trash.png
index 2d008a034bf97e0244c6f4210ed4bab49c1c70ff..e2c1cbc3b48ac396404355b9a97e587c58b7637e 100644
GIT binary patch
literal 14516
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
N`r0O1wHhw*{{ym&(lh`7

literal 14276
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

diff --git a/lib/main.dart b/lib/main.dart
index 585f1cd3..053d46ac 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -25,7 +25,7 @@ import 'package:gecko/models/chest_data.dart';
 import 'package:gecko/models/chest_provider.dart';
 import 'package:gecko/models/g1_wallets_list.dart';
 import 'package:gecko/models/generate_wallets.dart';
-import 'package:gecko/models/history.dart';
+import 'package:gecko/models/wallets_profiles.dart';
 import 'package:gecko/models/home.dart';
 import 'package:gecko/models/my_wallets.dart';
 import 'package:gecko/models/search.dart';
@@ -139,7 +139,7 @@ class Gecko extends StatelessWidget {
         providers: [
           // Provider(create: (context) => HistoryProvider()),
           ChangeNotifierProvider(create: (_) => HomeProvider()),
-          ChangeNotifierProvider(create: (_) => HistoryProvider('')),
+          ChangeNotifierProvider(create: (_) => WalletsProfilesProvider('')),
           ChangeNotifierProvider(create: (_) => MyWalletsProvider()),
           ChangeNotifierProvider(create: (_) => ChestProvider()),
           ChangeNotifierProvider(create: (_) => GenerateWalletsProvider()),
diff --git a/lib/models/g1_wallets_list.dart b/lib/models/g1_wallets_list.dart
index 286e98e4..2457f9f9 100644
--- a/lib/models/g1_wallets_list.dart
+++ b/lib/models/g1_wallets_list.dart
@@ -1,3 +1,4 @@
+import 'package:flutter/material.dart';
 import 'package:hive_flutter/hive_flutter.dart';
 
 part 'g1_wallets_list.g.dart';
@@ -13,7 +14,10 @@ class G1WalletsList {
   @HiveField(3)
   Id id;
 
-  G1WalletsList({this.pubkey, this.balance, this.id});
+  @HiveField(4)
+  Image avatar;
+
+  G1WalletsList({this.pubkey, this.balance, this.id, this.avatar});
 
   G1WalletsList.fromJson(Map<String, dynamic> json) {
     pubkey = json['pubkey'];
diff --git a/lib/models/g1_wallets_list.g.dart b/lib/models/g1_wallets_list.g.dart
index 31b83c65..b729a6de 100644
--- a/lib/models/g1_wallets_list.g.dart
+++ b/lib/models/g1_wallets_list.g.dart
@@ -1,5 +1,7 @@
 // GENERATED CODE - DO NOT MODIFY BY HAND
 
+// ignore_for_file: unused_local_variable
+
 part of 'g1_wallets_list.dart';
 
 // **************************************************************************
@@ -20,19 +22,22 @@ class G1WalletsListAdapter extends TypeAdapter<G1WalletsList> {
       pubkey: fields[0] as String,
       balance: fields[1] as double,
       id: fields[3] as Id,
+      avatar: fields[4] as Image,
     );
   }
 
   @override
   void write(BinaryWriter writer, G1WalletsList obj) {
     writer
-      ..writeByte(3)
+      ..writeByte(4)
       ..writeByte(0)
       ..write(obj.pubkey)
       ..writeByte(1)
       ..write(obj.balance)
       ..writeByte(3)
-      ..write(obj.id);
+      ..write(obj.id)
+      ..writeByte(4)
+      ..write(obj.avatar);
   }
 
   @override
@@ -52,6 +57,10 @@ class IdAdapter extends TypeAdapter<Id> {
 
   @override
   Id read(BinaryReader reader) {
+    final numOfFields = reader.readByte();
+    final fields = <int, dynamic>{
+      for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
+    };
     return Id();
   }
 
diff --git a/lib/models/home.dart b/lib/models/home.dart
index 1d8aacb4..f8b99eb6 100644
--- a/lib/models/home.dart
+++ b/lib/models/home.dart
@@ -8,7 +8,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'dart:async';
 import 'package:gecko/globals.dart';
-import 'package:gecko/screens/history.dart';
+import 'package:gecko/screens/old_history_pay.dart';
 import 'package:gecko/screens/myWallets/wallets_home.dart';
 import 'package:package_info/package_info.dart';
 
diff --git a/lib/models/search.dart b/lib/models/search.dart
index 67429663..7fa86731 100644
--- a/lib/models/search.dart
+++ b/lib/models/search.dart
@@ -19,14 +19,17 @@ class SearchProvider with ChangeNotifier {
     searchResult.clear();
     int searchTime = DateTime.now().millisecondsSinceEpoch;
 
-    if (cacheTime + cacheDuring <= searchTime) {
+    if (cacheTime + 0 <= searchTime) {
       g1WalletsBox.clear();
       final url = Uri.parse('https://g1-stats.axiom-team.fr/data/forbes.json');
       final response = await http.get(url);
 
       List<G1WalletsList> _listWallets = _parseG1Wallets(response.body);
+      Map<String, G1WalletsList> _mapWallets = {
+        for (var e in _listWallets) e.pubkey: e
+      };
 
-      await g1WalletsBox.addAll(_listWallets);
+      await g1WalletsBox.putAll(_mapWallets);
       cacheTime = DateTime.now().millisecondsSinceEpoch;
     }
 
diff --git a/lib/models/history.dart b/lib/models/wallets_profiles.dart
similarity index 92%
rename from lib/models/history.dart
rename to lib/models/wallets_profiles.dart
index b72d22b3..62a0dfc2 100644
--- a/lib/models/history.dart
+++ b/lib/models/wallets_profiles.dart
@@ -15,10 +15,11 @@ import 'package:truncate/truncate.dart';
 import 'package:crypto/crypto.dart';
 import 'package:fast_base58/fast_base58.dart';
 
-class HistoryProvider with ChangeNotifier {
+class WalletsProfilesProvider with ChangeNotifier {
+  WalletsProfilesProvider(this.pubkey);
+
   String pubkey = '';
   String pubkeyShort = '';
-  HistoryProvider(this.pubkey);
   final TextEditingController outputPubkey = TextEditingController();
   List transBC;
   String fetchMoreCursor;
@@ -38,9 +39,14 @@ class HistoryProvider with ChangeNotifier {
       log.e(e);
       return 'false';
     }
-    if (barcode != null) {
+    if (barcode != null && isPubkey(context, barcode)) {
       outputPubkey.text = barcode;
-      isPubkey(context, barcode);
+      Navigator.push(
+        context,
+        MaterialPageRoute(builder: (context) {
+          return const WalletViewScreen();
+        }),
+      );
     } else {
       return 'false';
     }
@@ -71,7 +77,7 @@ class HistoryProvider with ChangeNotifier {
     }
   }
 
-  String isPubkey(context, pubkey, {bool goHistory}) {
+  bool isPubkey(context, pubkey) {
     final RegExp regExp = RegExp(
       r'^[a-zA-Z0-9]+$',
       caseSensitive: false,
@@ -84,32 +90,22 @@ class HistoryProvider with ChangeNotifier {
       log.d("C'est une pubkey !");
 
       this.pubkey = pubkey;
-      getShortPubkey(pubkey);
-
-      outputPubkey.text = pubkey;
+      // getShortPubkey(pubkey);
 
-      goHistory ??= false;
+      // outputPubkey.text = pubkey;
 
-      if (goHistory) {
-        isHistoryScreen = true;
-        historySwitchButtun = "Payer";
-      } else {
-        isHistoryScreen = false;
-        historySwitchButtun = "Voir l'historique";
-      }
+      // Navigator.push(
+      //   context,
+      //   MaterialPageRoute(builder: (context) {
+      //     return const WalletViewScreen();
+      //   }),
+      // );
+      // notifyListeners();
 
-      Navigator.push(
-        context,
-        MaterialPageRoute(builder: (context) {
-          return WalletViewScreen();
-        }),
-      );
-      notifyListeners();
-
-      return pubkey;
+      return true;
+    } else {
+      return false;
     }
-
-    return '';
   }
 
   String getShortPubkey(String pubkey) {
diff --git a/lib/screens/avatar_fullscreen.dart b/lib/screens/avatar_fullscreen.dart
index d7f5cede..3389e957 100644
--- a/lib/screens/avatar_fullscreen.dart
+++ b/lib/screens/avatar_fullscreen.dart
@@ -8,8 +8,11 @@ import 'package:flutter/material.dart';
 class AvatarFullscreen extends StatelessWidget {
   TextEditingController tplController = TextEditingController();
 
-  AvatarFullscreen(this.avatar, {Key key}) : super(key: key);
+  AvatarFullscreen(this.avatar, {this.title, this.color, Key key})
+      : super(key: key);
   final Image avatar;
+  final String title;
+  final Color color;
 
   @override
   Widget build(BuildContext context) {
@@ -18,7 +21,7 @@ class AvatarFullscreen extends StatelessWidget {
     return Scaffold(
       appBar: AppBar(
           elevation: 0,
-          backgroundColor: Colors.black,
+          backgroundColor: color ?? Colors.black,
           toolbarHeight: 60 * ratio,
           leading: IconButton(
               icon: Icon(Icons.arrow_back, color: orangeC),
@@ -28,14 +31,14 @@ class AvatarFullscreen extends StatelessWidget {
           title: SizedBox(
             height: 22,
             child: Text(
-              'Photo de profil',
+              title ?? 'Photo de profil',
               style: TextStyle(color: orangeC),
             ),
           )),
       body: SafeArea(
         child: SizedBox.expand(
           child: Container(
-            color: Colors.black,
+            color: color ?? Colors.black,
             // alignment: Alignment.center,
             // height: MediaQuery.of(context).size.height,
             // width: MediaQuery.of(context).size.width,
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index eff093ff..da1f1eb7 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -2,7 +2,7 @@ import 'package:bubble/bubble.dart';
 import 'package:dubp/dubp.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/chest_provider.dart';
-import 'package:gecko/models/history.dart';
+import 'package:gecko/models/wallets_profiles.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/models/home.dart';
 import 'package:gecko/models/my_wallets.dart';
@@ -123,7 +123,8 @@ Widget geckHome(context) {
   MyWalletsProvider _myWalletProvider = Provider.of<MyWalletsProvider>(context);
   Provider.of<ChestProvider>(context);
 
-  HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
+  WalletsProfilesProvider _historyProvider =
+      Provider.of<WalletsProfilesProvider>(context);
   final double statusBarHeight = MediaQuery.of(context).padding.top;
   return Container(
     decoration: const BoxDecoration(
diff --git a/lib/screens/myWallets/cesium_wallet_options.dart b/lib/screens/myWallets/cesium_wallet_options.dart
index 115c318f..42a14aa5 100644
--- a/lib/screens/myWallets/cesium_wallet_options.dart
+++ b/lib/screens/myWallets/cesium_wallet_options.dart
@@ -5,11 +5,12 @@ import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
 import 'package:gecko/models/chest_data.dart';
 import 'package:gecko/models/chest_provider.dart';
-import 'package:gecko/models/history.dart';
+import 'package:gecko/models/wallets_profiles.dart';
 import 'package:gecko/models/my_wallets.dart';
 import 'package:gecko/models/queries.dart';
 import 'package:gecko/models/wallet_options.dart';
 import 'package:gecko/screens/myWallets/change_pin.dart';
+import 'package:gecko/screens/wallet_view.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:provider/provider.dart';
 import 'package:flutter/services.dart';
@@ -24,7 +25,8 @@ Widget cesiumWalletOptions(BuildContext context, ChestData cesiumWallet,
       Provider.of<WalletOptionsProvider>(context);
   ChestProvider _chestProvider =
       Provider.of<ChestProvider>(context, listen: false);
-  HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
+  WalletsProfilesProvider _historyProvider =
+      Provider.of<WalletsProfilesProvider>(context);
 
   final String shortPubkey =
       _walletOptions.getShortPubkey(_walletOptions.pubkey.text);
@@ -283,8 +285,15 @@ Widget cesiumWalletOptions(BuildContext context, ChestData cesiumWallet,
           InkWell(
               key: const Key('displayHistory'),
               onTap: () {
-                _historyProvider.isPubkey(ctx, _walletOptions.pubkey.text,
-                    goHistory: true);
+                if (_historyProvider.isPubkey(
+                    context, _walletOptions.pubkey.text)) {
+                  Navigator.push(
+                    context,
+                    MaterialPageRoute(builder: (context) {
+                      return const WalletViewScreen();
+                    }),
+                  );
+                }
               },
               child: SizedBox(
                   height: 50,
diff --git a/lib/screens/myWallets/unlocking_wallet.dart b/lib/screens/myWallets/unlocking_wallet.dart
index 0be8fa1d..56b97523 100644
--- a/lib/screens/myWallets/unlocking_wallet.dart
+++ b/lib/screens/myWallets/unlocking_wallet.dart
@@ -2,7 +2,7 @@ import 'dart:async';
 import 'package:dubp/dubp.dart';
 import 'package:flutter/services.dart';
 import 'package:gecko/models/chest_data.dart';
-import 'package:gecko/models/history.dart';
+import 'package:gecko/models/wallets_profiles.dart';
 import 'package:gecko/models/my_wallets.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/models/wallet_options.dart';
@@ -124,7 +124,8 @@ class UnlockingWallet extends StatelessWidget {
         Provider.of<WalletOptionsProvider>(context);
     MyWalletsProvider _myWalletProvider =
         Provider.of<MyWalletsProvider>(context);
-    HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
+    WalletsProfilesProvider _historyProvider =
+        Provider.of<WalletsProfilesProvider>(context);
 
     FocusNode pinFocus = FocusNode();
 
diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart
index 8f049f2a..27c69b66 100644
--- a/lib/screens/myWallets/wallet_options.dart
+++ b/lib/screens/myWallets/wallet_options.dart
@@ -3,11 +3,12 @@ import 'dart:ui';
 import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/globals.dart';
-import 'package:gecko/models/history.dart';
+import 'package:gecko/models/wallets_profiles.dart';
 import 'package:gecko/models/my_wallets.dart';
 import 'package:gecko/models/queries.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/models/wallet_options.dart';
+import 'package:gecko/screens/wallet_view.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:provider/provider.dart';
 import 'package:flutter/services.dart';
@@ -27,7 +28,8 @@ class WalletOptions extends StatelessWidget {
         Provider.of<WalletOptionsProvider>(context);
     MyWalletsProvider _myWalletProvider =
         Provider.of<MyWalletsProvider>(context);
-    HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
+    WalletsProfilesProvider _historyProvider =
+        Provider.of<WalletsProfilesProvider>(context);
 
     final int _currentChest = _myWalletProvider.getCurrentChest();
     final String shortPubkey =
@@ -263,14 +265,14 @@ class WalletOptions extends StatelessWidget {
                   ])),
               SizedBox(height: 4 * ratio),
               FutureBuilder(
-                  future:
-                      _walletOptions.generateQRcode(_walletOptions.pubkey.text),
-                  builder: (context, snapshot) {
-                    return snapshot.data != null
-                        ? Image.memory(snapshot.data,
-                            height: isTall ? 300 : 270)
-                        : const Text('-', style: TextStyle(fontSize: 20));
-                  }),
+                future:
+                    _walletOptions.generateQRcode(_walletOptions.pubkey.text),
+                builder: (context, snapshot) {
+                  return snapshot.data != null
+                      ? Image.memory(snapshot.data, height: isTall ? 300 : 270)
+                      : const Text('-', style: TextStyle(fontSize: 20));
+                },
+              ),
               SizedBox(height: 15 * ratio),
               GestureDetector(
                 key: const Key('copyPubkey'),
@@ -337,8 +339,15 @@ class WalletOptions extends StatelessWidget {
               InkWell(
                 key: const Key('displayHistory'),
                 onTap: () {
-                  _historyProvider.isPubkey(ctx, _walletOptions.pubkey.text,
-                      goHistory: true);
+                  if (_historyProvider.isPubkey(
+                      context, _walletOptions.pubkey.text)) {
+                    Navigator.push(
+                      context,
+                      MaterialPageRoute(builder: (context) {
+                        return const WalletViewScreen();
+                      }),
+                    );
+                  }
                 },
                 child: SizedBox(
                   height: 50,
diff --git a/lib/screens/history.dart b/lib/screens/old_history_pay.dart
similarity index 93%
rename from lib/screens/history.dart
rename to lib/screens/old_history_pay.dart
index 21fe283e..581251ed 100644
--- a/lib/screens/history.dart
+++ b/lib/screens/old_history_pay.dart
@@ -4,11 +4,12 @@ import 'package:gecko/models/cesium_plus.dart';
 import 'package:gecko/models/home.dart';
 import 'package:gecko/models/my_wallets.dart';
 import 'package:gecko/models/queries.dart';
-import 'package:gecko/models/history.dart';
+import 'package:gecko/models/wallets_profiles.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/foundation.dart';
 import 'package:gecko/models/wallet_data.dart';
 import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
+import 'package:gecko/screens/wallet_view.dart';
 import 'dart:ui';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:provider/provider.dart';
@@ -33,7 +34,8 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
   @override
   Widget build(BuildContext context) {
     SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
-    HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
+    WalletsProfilesProvider _historyProvider =
+        Provider.of<WalletsProfilesProvider>(context);
     HomeProvider _homeProvider = Provider.of<HomeProvider>(context);
     _outputPubkey.text = _historyProvider.pubkey;
     log.i('Build pubkey : ' + _historyProvider.pubkey);
@@ -61,10 +63,14 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                           controller: _homeProvider.searchQuery,
                           onChanged: (text) {
                             log.d("Clé tappé: $text");
-                            final String searchResult =
-                                _historyProvider.isPubkey(context, text);
-                            if (searchResult != '') {
+                            if (_historyProvider.isPubkey(context, text)) {
                               _homeProvider.currentIndex = 0;
+                              Navigator.push(
+                                context,
+                                MaterialPageRoute(builder: (context) {
+                                  return const WalletViewScreen();
+                                }),
+                              );
                             }
                           },
                           style: TextStyle(
@@ -111,7 +117,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
         ]));
   }
 
-  Widget historyQuery(context, HistoryProvider _historyProvider) {
+  Widget historyQuery(context, WalletsProfilesProvider _historyProvider) {
     _pubkeyFocus.unfocus();
     // HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
     CesiumPlusProvider _cesiumPlusProvider =
@@ -327,7 +333,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
     ));
   }
 
-  Widget payView(context, HistoryProvider _historyProvider) {
+  Widget payView(context, WalletsProfilesProvider _historyProvider) {
     MyWalletsProvider _myWalletProvider = MyWalletsProvider();
     WalletData defaultWallet =
         _myWalletProvider.getDefaultWallet(configBox.get('currentChest'));
@@ -407,7 +413,10 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
   }
 
   Widget historyView(context, result) {
-    HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
+    WalletsProfilesProvider _historyProvider =
+        Provider.of<WalletsProfilesProvider>(context);
+    HomeProvider _homeProvider =
+        Provider.of<HomeProvider>(context, listen: false);
     int keyID = 0;
 
     return _historyProvider.transBC == null
@@ -438,8 +447,15 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
                     dense: true,
                     isThreeLine: false,
                     onTap: () {
-                      // this._outputPubkey.text = repository[2];
-                      _historyProvider.isPubkey(context, repository[2]);
+                      if (_historyProvider.isPubkey(context, repository[2])) {
+                        _homeProvider.currentIndex = 0;
+                        Navigator.push(
+                          context,
+                          MaterialPageRoute(builder: (context) {
+                            return const WalletViewScreen();
+                          }),
+                        );
+                      }
                       Navigator.pop(context);
                     }),
               ),
diff --git a/lib/screens/search_result.dart b/lib/screens/search_result.dart
index 1f09f52d..0fc216eb 100644
--- a/lib/screens/search_result.dart
+++ b/lib/screens/search_result.dart
@@ -3,8 +3,9 @@ import 'package:gecko/globals.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/models/cesium_plus.dart';
 import 'package:gecko/models/g1_wallets_list.dart';
-import 'package:gecko/models/history.dart';
+import 'package:gecko/models/wallets_profiles.dart';
 import 'package:gecko/models/search.dart';
+import 'package:gecko/screens/wallet_view.dart';
 import 'package:provider/provider.dart';
 
 class SearchResultScreen extends StatelessWidget {
@@ -16,8 +17,8 @@ class SearchResultScreen extends StatelessWidget {
     SearchProvider _searchProvider = Provider.of<SearchProvider>(context);
     CesiumPlusProvider _cesiumPlusProvider =
         Provider.of<CesiumPlusProvider>(context);
-    HistoryProvider _historyClass =
-        Provider.of<HistoryProvider>(context, listen: false);
+    WalletsProfilesProvider _walletsProfilesClass =
+        Provider.of<WalletsProfilesProvider>(context, listen: false);
 
     int keyID = 0;
     double _avatarSize = 55;
@@ -33,48 +34,55 @@ class SearchResultScreen extends StatelessWidget {
       body: SafeArea(
         child: Padding(
           padding: const EdgeInsets.symmetric(horizontal: 20),
-          child: Column(
-              crossAxisAlignment: CrossAxisAlignment.start,
-              children: <Widget>[
-                const SizedBox(height: 30),
-                RichText(
-                  text: TextSpan(
-                    style: TextStyle(
-                      fontSize: 18,
-                      color: Colors.grey[700],
-                    ),
-                    children: <TextSpan>[
-                      const TextSpan(
-                        text: "Résultats pour ",
-                      ),
-                      TextSpan(
-                        text: '"${_searchProvider.searchController.text}"',
-                        style: const TextStyle(fontStyle: FontStyle.italic),
-                      ),
-                    ],
-                  ),
-                ),
-                const SizedBox(height: 40),
-                const Text(
-                  'Dans la blockchain Äž1',
-                  style: TextStyle(fontSize: 20),
+          child:
+              Column(crossAxisAlignment: CrossAxisAlignment.start, children: <
+                  Widget>[
+            const SizedBox(height: 30),
+            RichText(
+              text: TextSpan(
+                style: TextStyle(
+                  fontSize: 18,
+                  color: Colors.grey[700],
                 ),
-                const SizedBox(height: 20),
-                FutureBuilder(
-                  future: _searchProvider.searchBlockchain(),
-                  builder: (context, snapshot) {
-                    if (snapshot.connectionState == ConnectionState.done) {
-                      return Expanded(
-                        child: ListView(children: <Widget>[
-                          for (G1WalletsList g1Wallet in snapshot.data)
-                            Padding(
-                              padding:
-                                  const EdgeInsets.symmetric(horizontal: 5),
-                              child: ListTile(
-                                  key: Key('searchResult${keyID++}'),
-                                  horizontalTitleGap: 40,
-                                  contentPadding: const EdgeInsets.all(5),
-                                  leading: FutureBuilder(
+                children: <TextSpan>[
+                  const TextSpan(
+                    text: "Résultats pour ",
+                  ),
+                  TextSpan(
+                    text: '"${_searchProvider.searchController.text}"',
+                    style: const TextStyle(fontStyle: FontStyle.italic),
+                  ),
+                ],
+              ),
+            ),
+            const SizedBox(height: 40),
+            const Text(
+              'Dans la blockchain Äž1',
+              style: TextStyle(fontSize: 20),
+            ),
+            const SizedBox(height: 20),
+            FutureBuilder(
+              future: _searchProvider.searchBlockchain(),
+              builder: (context, snapshot) {
+                if (snapshot.connectionState == ConnectionState.done) {
+                  return Expanded(
+                    child: ListView(children: <Widget>[
+                      for (G1WalletsList g1Wallet in snapshot.data)
+                        Padding(
+                          padding: const EdgeInsets.symmetric(horizontal: 5),
+                          child: ListTile(
+                              key: Key('searchResult${keyID++}'),
+                              horizontalTitleGap: 40,
+                              contentPadding: const EdgeInsets.all(5),
+                              leading: g1WalletsBox
+                                          .get(g1Wallet.pubkey)
+                                          .avatar !=
+                                      null
+                                  ? ClipOval(
+                                      child: g1WalletsBox
+                                          .get(g1Wallet.pubkey)
+                                          .avatar)
+                                  : FutureBuilder(
                                       future: _cesiumPlusProvider.getAvatar(
                                           g1Wallet.pubkey, _avatarSize),
                                       builder: (BuildContext context,
@@ -98,52 +106,76 @@ class SearchResultScreen extends StatelessWidget {
                                           ]);
                                         }
                                         if (_avatar.hasData) {
+                                          g1WalletsBox
+                                              .get(g1Wallet.pubkey)
+                                              .avatar = _avatar.data;
                                           return ClipOval(child: _avatar.data);
+                                        } else {
+                                          g1WalletsBox
+                                                  .get(g1Wallet.pubkey)
+                                                  .avatar =
+                                              _cesiumPlusProvider
+                                                  .defaultAvatar(_avatarSize);
+                                          return _cesiumPlusProvider
+                                              .defaultAvatar(_avatarSize);
                                         }
-                                        return _cesiumPlusProvider
-                                            .defaultAvatar(_avatarSize);
                                       }),
-                                  title: Row(children: <Widget>[
-                                    Text(
-                                        _historyClass
-                                            .getShortPubkey(g1Wallet.pubkey),
-                                        style: const TextStyle(
-                                            fontSize: 18,
-                                            fontFamily: 'Monospace',
-                                            fontWeight: FontWeight.w500),
-                                        textAlign: TextAlign.center),
-                                  ]),
-                                  subtitle: Row(children: <Widget>[
-                                    Text(g1Wallet?.id?.username ?? '',
-                                        style: const TextStyle(
-                                            fontSize: 18,
-                                            fontWeight: FontWeight.w500),
-                                        textAlign: TextAlign.center),
-                                  ]),
-                                  dense: false,
-                                  isThreeLine: false,
-                                  onTap: () {
-                                    _historyClass.isPubkey(
-                                        context, g1Wallet.pubkey);
+                              title: Row(children: <Widget>[
+                                Text(
+                                    _walletsProfilesClass
+                                        .getShortPubkey(g1Wallet.pubkey),
+                                    style: const TextStyle(
+                                        fontSize: 18,
+                                        fontFamily: 'Monospace',
+                                        fontWeight: FontWeight.w500),
+                                    textAlign: TextAlign.center),
+                              ]),
+                              subtitle: Row(children: <Widget>[
+                                Text(g1Wallet?.id?.username ?? '',
+                                    style: const TextStyle(
+                                        fontSize: 18,
+                                        fontWeight: FontWeight.w500),
+                                    textAlign: TextAlign.center),
+                              ]),
+                              dense: false,
+                              isThreeLine: false,
+                              onTap: () {
+                                Navigator.push(
+                                  context,
+                                  MaterialPageRoute(builder: (context) {
+                                    _walletsProfilesClass.pubkey =
+                                        g1Wallet.pubkey;
+                                    return WalletViewScreen(
+                                      pubkey: g1Wallet.pubkey,
+                                      username: g1WalletsBox
+                                          .get(g1Wallet.pubkey)
+                                          .id
+                                          ?.username,
+                                      avatar: g1WalletsBox
+                                          .get(g1Wallet.pubkey)
+                                          ?.avatar,
+                                    );
                                   }),
-                            ),
-                        ]),
-                      );
-                    }
-                    return Center(
-                      heightFactor: 5,
-                      child: CircularProgressIndicator(
-                        strokeWidth: 3,
-                        backgroundColor: yellowC,
-                        color: orangeC,
-                      ),
-                    );
-                  },
-                ),
-                // Text(
-                //   _searchProvider.searchResult.toString(),
-                // )
-              ]),
+                                );
+                              }),
+                        ),
+                    ]),
+                  );
+                }
+                return Center(
+                  heightFactor: 5,
+                  child: CircularProgressIndicator(
+                    strokeWidth: 3,
+                    backgroundColor: yellowC,
+                    color: orangeC,
+                  ),
+                );
+              },
+            ),
+            // Text(
+            //   _searchProvider.searchResult.toString(),
+            // )
+          ]),
         ),
       ),
     );
diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart
index 3aeefe57..a625d0e9 100644
--- a/lib/screens/wallet_view.dart
+++ b/lib/screens/wallet_view.dart
@@ -1,39 +1,68 @@
 import 'dart:ui';
-
 import 'package:flutter/services.dart';
 import 'package:gecko/globals.dart';
 import 'package:flutter/material.dart';
 import 'package:gecko/models/cesium_plus.dart';
-import 'package:gecko/models/history.dart';
+import 'package:gecko/models/wallets_profiles.dart';
 import 'package:gecko/models/queries.dart';
+// import 'package:gecko/models/wallet_options.dart';
 import 'package:gecko/screens/avatar_fullscreen.dart';
 import 'package:graphql_flutter/graphql_flutter.dart';
 import 'package:provider/provider.dart';
-// import 'package:gecko/models/home.dart';
-// import 'package:provider/provider.dart';
 
-// ignore: must_be_immutable
 class WalletViewScreen extends StatelessWidget {
-  TextEditingController tplController = TextEditingController();
-
-  WalletViewScreen({Key key}) : super(key: key);
+  const WalletViewScreen({this.pubkey, this.username, this.avatar, Key key})
+      : super(key: key);
+  final String pubkey;
+  final String username;
+  final Image avatar;
 
   @override
   Widget build(BuildContext context) {
     SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
-    HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
+    WalletsProfilesProvider _historyProvider =
+        Provider.of<WalletsProfilesProvider>(context);
     CesiumPlusProvider _cesiumPlusProvider =
         Provider.of<CesiumPlusProvider>(context);
+    // WalletOptionsProvider _walletOptions = WalletOptionsProvider();
     double _avatarSize = 150;
 
     return Scaffold(
         appBar: AppBar(
-            elevation: 0,
-            toolbarHeight: 60 * ratio,
-            title: const SizedBox(
-              height: 22,
-              child: Text('Voir un portefeuille'),
-            )),
+          elevation: 0,
+          toolbarHeight: 60 * ratio,
+          title: const SizedBox(
+            height: 22,
+            child: Text('Voir un portefeuille'),
+          ),
+          // actions: [
+          //   FutureBuilder(
+          //     future: _walletOptions.generateQRcode(_historyProvider.pubkey),
+          //     builder: (context, snapshot) {
+          //       return snapshot.data != null
+          //           ? GestureDetector(
+          //               key: const Key('openAvatar'),
+          //               onTap: () {
+          //                 Navigator.push(
+          //                   context,
+          //                   MaterialPageRoute(builder: (context) {
+          //                     return AvatarFullscreen(
+          //                       Image.memory(snapshot.data),
+          //                       title: 'QrCode du profil',
+          //                     );
+          //                   }),
+          //                 );
+          //                 // isAvatarView = !isAvatarView;
+          //                 // _historyProvider.resetdHistory();
+          //               },
+          //               child: Image.memory(snapshot.data, height: 40 * ratio),
+          //             )
+          //           : const Text('-', style: TextStyle(fontSize: 20));
+          //     },
+          //   ),
+          //   const SizedBox(width: 75)
+          // ],
+        ),
         body: SafeArea(
           child: Column(children: <Widget>[
             Container(
@@ -56,51 +85,62 @@ class WalletViewScreen extends StatelessWidget {
                   Column(
                       crossAxisAlignment: CrossAxisAlignment.start,
                       children: <Widget>[
-                        GestureDetector(
-                          key: const Key('copyPubkey'),
-                          onTap: () {
-                            Clipboard.setData(
-                                ClipboardData(text: _historyProvider.pubkey));
-                            _historyProvider.snackCopyKey(context);
-                          },
-                          child: Text(
-                            _historyProvider
-                                .getShortPubkey(_historyProvider.pubkey),
-                            style: const TextStyle(
-                              fontSize: 30,
-                              fontWeight: FontWeight.w800,
+                        Row(children: [
+                          GestureDetector(
+                            key: const Key('copyPubkey'),
+                            onTap: () {
+                              Clipboard.setData(ClipboardData(
+                                  text: pubkey ?? _historyProvider.pubkey));
+                              _historyProvider.snackCopyKey(context);
+                            },
+                            child: Text(
+                              _historyProvider.getShortPubkey(
+                                  pubkey ?? _historyProvider.pubkey),
+                              style: const TextStyle(
+                                fontSize: 30,
+                                fontWeight: FontWeight.w800,
+                              ),
                             ),
                           ),
-                        ),
+                        ]),
                         const SizedBox(height: 10),
-                        Query(
-                          options: QueryOptions(
-                            document: gql(getId),
-                            variables: {
-                              'pubkey': _historyProvider.pubkey,
+                        if (username == null)
+                          Query(
+                            options: QueryOptions(
+                              document: gql(getId),
+                              variables: {
+                                'pubkey': _historyProvider.pubkey,
+                              },
+                            ),
+                            builder: (QueryResult result,
+                                {VoidCallback refetch, FetchMore fetchMore}) {
+                              if (result.isLoading || result.hasException) {
+                                return const Text('...');
+                              } else if (result.data['idty'] == null ||
+                                  result.data['idty']['username'] == null) {
+                                return const Text('');
+                              } else {
+                                return SizedBox(
+                                  width: 230,
+                                  child: Text(
+                                    result?.data['idty']['username'] ?? '',
+                                    style: const TextStyle(
+                                      fontSize: 27,
+                                      color: Color(0xff814C00),
+                                    ),
+                                  ),
+                                );
+                              }
                             },
                           ),
-                          builder: (QueryResult result,
-                              {VoidCallback refetch, FetchMore fetchMore}) {
-                            if (result.isLoading || result.hasException) {
-                              return const Text('...');
-                            } else if (result.data['idty'] == null ||
-                                result.data['idty']['username'] == null) {
-                              return const Text('');
-                            } else {
-                              return SizedBox(
-                                width: 230,
-                                child: Text(
-                                  result?.data['idty']['username'] ?? '',
-                                  style: const TextStyle(
-                                    fontSize: 27,
-                                    color: Color(0xff814C00),
-                                  ),
-                                ),
-                              );
-                            }
-                          },
-                        ),
+                        if (username != null)
+                          Text(
+                            username,
+                            style: const TextStyle(
+                              fontSize: 27,
+                              color: Color(0xff814C00),
+                            ),
+                          ),
                         const SizedBox(height: 25),
                         FutureBuilder(
                             future: _cesiumPlusProvider
@@ -120,51 +160,72 @@ class WalletViewScreen extends StatelessWidget {
                       ]),
                   const Spacer(),
                   Column(children: <Widget>[
-                    FutureBuilder(
-                        future: _cesiumPlusProvider.getAvatar(
-                            _historyProvider.pubkey, _avatarSize),
-                        builder: (BuildContext context,
-                            AsyncSnapshot<Image> _avatar) {
-                          if (_avatar.connectionState != ConnectionState.done ||
-                              _avatar.hasError) {
-                            return Stack(children: [
-                              ClipOval(
-                                child: _cesiumPlusProvider
-                                    .defaultAvatar(_avatarSize),
-                              ),
-                              Positioned(
-                                top: 16.5,
-                                right: 47.5,
-                                width: 55,
-                                height: 55,
-                                child: CircularProgressIndicator(
-                                  strokeWidth: 6,
-                                  color: orangeC,
+                    if (avatar == null)
+                      FutureBuilder(
+                          future: _cesiumPlusProvider.getAvatar(
+                              _historyProvider.pubkey, _avatarSize),
+                          builder: (BuildContext context,
+                              AsyncSnapshot<Image> _avatar) {
+                            if (_avatar.connectionState !=
+                                    ConnectionState.done ||
+                                _avatar.hasError) {
+                              return Stack(children: [
+                                ClipOval(
+                                  child: _cesiumPlusProvider
+                                      .defaultAvatar(_avatarSize),
                                 ),
-                              ),
-                            ]);
-                          }
-                          if (_avatar.hasData) {
-                            return GestureDetector(
-                              key: const Key('openAvatar'),
-                              onTap: () {
-                                Navigator.push(
-                                  context,
-                                  MaterialPageRoute(builder: (context) {
-                                    return AvatarFullscreen(_avatar.data);
-                                  }),
-                                );
-                              },
-                              child: ClipOval(
-                                child: _avatar.data,
-                              ),
+                                Positioned(
+                                  top: 16.5,
+                                  right: 47.5,
+                                  width: 55,
+                                  height: 55,
+                                  child: CircularProgressIndicator(
+                                    strokeWidth: 6,
+                                    color: orangeC,
+                                  ),
+                                ),
+                              ]);
+                            }
+                            if (_avatar.hasData) {
+                              return GestureDetector(
+                                key: const Key('openAvatar'),
+                                onTap: () {
+                                  Navigator.push(
+                                    context,
+                                    MaterialPageRoute(builder: (context) {
+                                      return AvatarFullscreen(_avatar.data);
+                                    }),
+                                  );
+                                },
+                                child: ClipOval(
+                                  child: _avatar.data,
+                                ),
+                              );
+                            }
+                            return ClipOval(
+                              child: _cesiumPlusProvider
+                                  .defaultAvatar(_avatarSize),
                             );
-                          }
-                          return ClipOval(
-                            child:
-                                _cesiumPlusProvider.defaultAvatar(_avatarSize),
+                          }),
+                    if (avatar != null)
+                      GestureDetector(
+                        key: const Key('openAvatar'),
+                        onTap: () {
+                          Navigator.push(
+                            context,
+                            MaterialPageRoute(builder: (context) {
+                              return AvatarFullscreen(avatar);
+                            }),
                           );
-                        }),
+                        },
+                        child: ClipOval(
+                          child: Image(
+                            image: avatar.image,
+                            height: _avatarSize,
+                            fit: BoxFit.cover,
+                          ),
+                        ),
+                      ),
                     const SizedBox(height: 25),
                   ]),
                 ]),
@@ -230,6 +291,29 @@ class WalletViewScreen extends StatelessWidget {
                 ),
               ]),
             ]),
+            // FutureBuilder(
+            //   future: _walletOptions.generateQRcode(_historyProvider.pubkey),
+            //   builder: (context, snapshot) {
+            //     return snapshot.data != null
+            //         ? GestureDetector(
+            //             key: const Key('openQrcode'),
+            //             onTap: () {
+            //               Navigator.push(
+            //                 context,
+            //                 MaterialPageRoute(builder: (context) {
+            //                   return AvatarFullscreen(
+            //                     Image.memory(snapshot.data),
+            //                     title: 'QrCode du profil',
+            //                     color: Colors.white,
+            //                   );
+            //                 }),
+            //               );
+            //             },
+            //             child: Image.memory(snapshot.data, height: 60 * ratio),
+            //           )
+            //         : const Text('-', style: TextStyle(fontSize: 20));
+            //   },
+            // ),
             const Spacer(),
             Container(
               height: 120,
diff --git a/pubspec.yaml b/pubspec.yaml
index 45228623..249c17f3 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -5,7 +5,7 @@ description: Pay with G1.
 # pub.dev using `pub publish`. This is preferred for private packages.
 publish_to: 'none' # Remove this line if you wish to publish to pub.dev
 
-version: 0.0.3+8
+version: 0.0.3+9
 
 environment:
   sdk: ">=2.7.0 <3.0.0"
-- 
GitLab