From fad22b99d6c18b56c35ff95e892e964e3ee9d425 Mon Sep 17 00:00:00 2001
From: vjrj <vjrj@comunes.org>
Date: Sat, 26 Oct 2024 10:10:12 +0200
Subject: [PATCH] Refactor of graphql. Added datapod/ipfs nodes to config

---
 build.yaml                                    |  23 ++
 dot.env.sample                                |   2 +
 .../duniter-indexer.ast.gql.dart              |   0
 .../duniter-indexer.schema.gql.dart           |   3 +-
 .../duniter-indexer.schema.gql.g.dart         |   0
 .../duniter-queries.ast.gql.dart}             |   0
 .../duniter-queries.data.gql.dart}            |   7 +-
 .../duniter-queries.data.gql.g.dart}          |   2 +-
 .../duniter-queries.req.gql.dart}             |  11 +-
 .../duniter-queries.req.gql.g.dart}           |   2 +-
 .../duniter-queries.var.gql.dart}             |   5 +-
 .../duniter-queries.var.gql.g.dart}           |   2 +-
 .../__generated__/serializers.gql.dart        |  28 +-
 .../__generated__/serializers.gql.g.dart      |   0
 .../models}/graphql/duniter-indexer.graphql   |   0
 .../models/graphql/duniter-queries.graphql}   |   0
 .../graphql/duniter_indexer_client.dart       |   0
 .../models}/graphql/duniter_queries.dart      |   0
 lib/env.g.dart                                | 326 +++++++++---------
 lib/g1/api.dart                               |   9 +-
 lib/ui/ui_helpers.dart                        |  15 +-
 lib/ui/widgets/contact_page.dart              |   5 +-
 lib/ui/widgets/contacts_actions.dart          |   4 +-
 lib/ui/widgets/first_screen/credit_card.dart  |  68 ++--
 .../third_screen/contact_form_dialog.dart     |   6 +-
 pubspec.yaml                                  |   2 +-
 26 files changed, 271 insertions(+), 249 deletions(-)
 create mode 100644 build.yaml
 rename lib/{ => data/models}/graphql/__generated__/duniter-indexer.ast.gql.dart (100%)
 rename lib/{ => data/models}/graphql/__generated__/duniter-indexer.schema.gql.dart (99%)
 rename lib/{ => data/models}/graphql/__generated__/duniter-indexer.schema.gql.g.dart (100%)
 rename lib/{graphql/__generated__/duniter-custom-queries.ast.gql.dart => data/models/graphql/__generated__/duniter-queries.ast.gql.dart} (100%)
 rename lib/{graphql/__generated__/duniter-custom-queries.data.gql.dart => data/models/graphql/__generated__/duniter-queries.data.gql.dart} (97%)
 rename lib/{graphql/__generated__/duniter-custom-queries.data.gql.g.dart => data/models/graphql/__generated__/duniter-queries.data.gql.g.dart} (99%)
 rename lib/{graphql/__generated__/duniter-custom-queries.req.gql.dart => data/models/graphql/__generated__/duniter-queries.req.gql.dart} (94%)
 rename lib/{graphql/__generated__/duniter-custom-queries.req.gql.g.dart => data/models/graphql/__generated__/duniter-queries.req.gql.g.dart} (99%)
 rename lib/{graphql/__generated__/duniter-custom-queries.var.gql.dart => data/models/graphql/__generated__/duniter-queries.var.gql.dart} (94%)
 rename lib/{graphql/__generated__/duniter-custom-queries.var.gql.g.dart => data/models/graphql/__generated__/duniter-queries.var.gql.g.dart} (99%)
 rename lib/{ => data/models}/graphql/__generated__/serializers.gql.dart (98%)
 rename lib/{ => data/models}/graphql/__generated__/serializers.gql.g.dart (100%)
 rename lib/{ => data/models}/graphql/duniter-indexer.graphql (100%)
 rename lib/{graphql/duniter-custom-queries.graphql => data/models/graphql/duniter-queries.graphql} (100%)
 rename lib/{ => data/models}/graphql/duniter_indexer_client.dart (100%)
 rename lib/{ => data/models}/graphql/duniter_queries.dart (100%)

diff --git a/build.yaml b/build.yaml
new file mode 100644
index 00000000..6b854354
--- /dev/null
+++ b/build.yaml
@@ -0,0 +1,23 @@
+targets:
+  $default:
+    builders:
+      ferry_generator|graphql_builder:
+        enabled: true
+        options:
+          schema: ginkgo|lib/data/models/graphql/duniter-indexer.graphql
+          type_overrides:
+            jsonb:
+              name: JsonObject
+              import: "package:built_value/json_object.dart"
+      ferry_generator|serializer_builder:
+        enabled: true
+        options:
+          schema: ginkgo|lib/data/models/graphql/duniter-indexer.graphql
+          type_overrides:
+            jsonb:
+              name: JsonObject
+              import: "package:built_value/json_object.dart"
+          custom_serializers:
+            - import: "package:built_value/src/json_object_serializer.dart"
+              name: JsonObjectSerializer
+
diff --git a/dot.env.sample b/dot.env.sample
index bb0c16f4..15f606b2 100644
--- a/dot.env.sample
+++ b/dot.env.sample
@@ -16,6 +16,8 @@ GVA_NODES=https://g1v1.p2p.legal/gva https://g1.asycn.io/gva https://duniter.pin
 # v2
 ENDPOINTS=wss://gdev.cgeek.fr/ws wss://gdev.trentesaux.fr/ws wss://gdev.gyroi.de/ws wss://gdev-smith.pini.fr/ws wss://gdev.pini.fr/ws wss://gdev.txmn.tk/ws wss://duniter-v2-vjrj-gdev.comunes.net/ws wss://bulmagdev.sleoconnect.fr/ws wss://gdev.cuates.net/ws wss://gdev.matograine.fr/ws wss://gdev.p2p.legal/ws
 DUNITER_INDEXER_NODES=https://gdev-indexer.p2p.legal/v1/graphql https://squid.gdev.coinduf.eu/v1/graphql https://squid.gdev.gyroi.de/v1/graphql https://duniter-v2-vjrj-squid.comunes.net/v1/graphql
+DATAPOD_ENDPOINTS=https://datapod.gyroi.de/v1/graphql https://datapod.coinduf.eu/v1/graphql
+IPFS_GATEWAYS=https://gyroi.de
 
 GITLAB_TOKEN=something
 
diff --git a/lib/graphql/__generated__/duniter-indexer.ast.gql.dart b/lib/data/models/graphql/__generated__/duniter-indexer.ast.gql.dart
similarity index 100%
rename from lib/graphql/__generated__/duniter-indexer.ast.gql.dart
rename to lib/data/models/graphql/__generated__/duniter-indexer.ast.gql.dart
diff --git a/lib/graphql/__generated__/duniter-indexer.schema.gql.dart b/lib/data/models/graphql/__generated__/duniter-indexer.schema.gql.dart
similarity index 99%
rename from lib/graphql/__generated__/duniter-indexer.schema.gql.dart
rename to lib/data/models/graphql/__generated__/duniter-indexer.schema.gql.dart
index 79bc2f05..c0f88f0a 100644
--- a/lib/graphql/__generated__/duniter-indexer.schema.gql.dart
+++ b/lib/data/models/graphql/__generated__/duniter-indexer.schema.gql.dart
@@ -6,7 +6,8 @@ import 'package:built_collection/built_collection.dart';
 import 'package:built_value/built_value.dart';
 import 'package:built_value/json_object.dart' as _i3;
 import 'package:built_value/serializer.dart';
-import 'package:ginkgo/graphql/__generated__/serializers.gql.dart' as _i1;
+import 'package:ginkgo/data/models/graphql/__generated__/serializers.gql.dart'
+    as _i1;
 import 'package:gql_code_builder_serializers/gql_code_builder_serializers.dart'
     as _i2;
 
diff --git a/lib/graphql/__generated__/duniter-indexer.schema.gql.g.dart b/lib/data/models/graphql/__generated__/duniter-indexer.schema.gql.g.dart
similarity index 100%
rename from lib/graphql/__generated__/duniter-indexer.schema.gql.g.dart
rename to lib/data/models/graphql/__generated__/duniter-indexer.schema.gql.g.dart
diff --git a/lib/graphql/__generated__/duniter-custom-queries.ast.gql.dart b/lib/data/models/graphql/__generated__/duniter-queries.ast.gql.dart
similarity index 100%
rename from lib/graphql/__generated__/duniter-custom-queries.ast.gql.dart
rename to lib/data/models/graphql/__generated__/duniter-queries.ast.gql.dart
diff --git a/lib/graphql/__generated__/duniter-custom-queries.data.gql.dart b/lib/data/models/graphql/__generated__/duniter-queries.data.gql.dart
similarity index 97%
rename from lib/graphql/__generated__/duniter-custom-queries.data.gql.dart
rename to lib/data/models/graphql/__generated__/duniter-queries.data.gql.dart
index a0872173..cbe818df 100644
--- a/lib/graphql/__generated__/duniter-custom-queries.data.gql.dart
+++ b/lib/data/models/graphql/__generated__/duniter-queries.data.gql.dart
@@ -5,11 +5,12 @@
 import 'package:built_collection/built_collection.dart';
 import 'package:built_value/built_value.dart';
 import 'package:built_value/serializer.dart';
-import 'package:ginkgo/graphql/__generated__/duniter-indexer.schema.gql.dart'
+import 'package:ginkgo/data/models/graphql/__generated__/duniter-indexer.schema.gql.dart'
     as _i2;
-import 'package:ginkgo/graphql/__generated__/serializers.gql.dart' as _i1;
+import 'package:ginkgo/data/models/graphql/__generated__/serializers.gql.dart'
+    as _i1;
 
-part 'duniter-custom-queries.data.gql.g.dart';
+part 'duniter-queries.data.gql.g.dart';
 
 abstract class GAccountsByNameOrPkData
     implements Built<GAccountsByNameOrPkData, GAccountsByNameOrPkDataBuilder> {
diff --git a/lib/graphql/__generated__/duniter-custom-queries.data.gql.g.dart b/lib/data/models/graphql/__generated__/duniter-queries.data.gql.g.dart
similarity index 99%
rename from lib/graphql/__generated__/duniter-custom-queries.data.gql.g.dart
rename to lib/data/models/graphql/__generated__/duniter-queries.data.gql.g.dart
index 571fc662..ddbec77e 100644
--- a/lib/graphql/__generated__/duniter-custom-queries.data.gql.g.dart
+++ b/lib/data/models/graphql/__generated__/duniter-queries.data.gql.g.dart
@@ -1,6 +1,6 @@
 // GENERATED CODE - DO NOT MODIFY BY HAND
 
-part of 'duniter-custom-queries.data.gql.dart';
+part of 'duniter-queries.data.gql.dart';
 
 // **************************************************************************
 // BuiltValueGenerator
diff --git a/lib/graphql/__generated__/duniter-custom-queries.req.gql.dart b/lib/data/models/graphql/__generated__/duniter-queries.req.gql.dart
similarity index 94%
rename from lib/graphql/__generated__/duniter-custom-queries.req.gql.dart
rename to lib/data/models/graphql/__generated__/duniter-queries.req.gql.dart
index ed949259..3499b49b 100644
--- a/lib/graphql/__generated__/duniter-custom-queries.req.gql.dart
+++ b/lib/data/models/graphql/__generated__/duniter-queries.req.gql.dart
@@ -5,16 +5,17 @@
 import 'package:built_value/built_value.dart';
 import 'package:built_value/serializer.dart';
 import 'package:ferry_exec/ferry_exec.dart' as _i1;
-import 'package:ginkgo/graphql/__generated__/duniter-custom-queries.ast.gql.dart'
+import 'package:ginkgo/data/models/graphql/__generated__/duniter-queries.ast.gql.dart'
     as _i5;
-import 'package:ginkgo/graphql/__generated__/duniter-custom-queries.data.gql.dart'
+import 'package:ginkgo/data/models/graphql/__generated__/duniter-queries.data.gql.dart'
     as _i2;
-import 'package:ginkgo/graphql/__generated__/duniter-custom-queries.var.gql.dart'
+import 'package:ginkgo/data/models/graphql/__generated__/duniter-queries.var.gql.dart'
     as _i3;
-import 'package:ginkgo/graphql/__generated__/serializers.gql.dart' as _i6;
+import 'package:ginkgo/data/models/graphql/__generated__/serializers.gql.dart'
+    as _i6;
 import 'package:gql_exec/gql_exec.dart' as _i4;
 
-part 'duniter-custom-queries.req.gql.g.dart';
+part 'duniter-queries.req.gql.g.dart';
 
 abstract class GAccountsByNameOrPkReq
     implements
diff --git a/lib/graphql/__generated__/duniter-custom-queries.req.gql.g.dart b/lib/data/models/graphql/__generated__/duniter-queries.req.gql.g.dart
similarity index 99%
rename from lib/graphql/__generated__/duniter-custom-queries.req.gql.g.dart
rename to lib/data/models/graphql/__generated__/duniter-queries.req.gql.g.dart
index 04ef711a..94c188b9 100644
--- a/lib/graphql/__generated__/duniter-custom-queries.req.gql.g.dart
+++ b/lib/data/models/graphql/__generated__/duniter-queries.req.gql.g.dart
@@ -1,6 +1,6 @@
 // GENERATED CODE - DO NOT MODIFY BY HAND
 
-part of 'duniter-custom-queries.req.gql.dart';
+part of 'duniter-queries.req.gql.dart';
 
 // **************************************************************************
 // BuiltValueGenerator
diff --git a/lib/graphql/__generated__/duniter-custom-queries.var.gql.dart b/lib/data/models/graphql/__generated__/duniter-queries.var.gql.dart
similarity index 94%
rename from lib/graphql/__generated__/duniter-custom-queries.var.gql.dart
rename to lib/data/models/graphql/__generated__/duniter-queries.var.gql.dart
index 4c04a9d0..a52ea6f7 100644
--- a/lib/graphql/__generated__/duniter-custom-queries.var.gql.dart
+++ b/lib/data/models/graphql/__generated__/duniter-queries.var.gql.dart
@@ -4,9 +4,10 @@
 // ignore_for_file: no_leading_underscores_for_library_prefixes
 import 'package:built_value/built_value.dart';
 import 'package:built_value/serializer.dart';
-import 'package:ginkgo/graphql/__generated__/serializers.gql.dart' as _i1;
+import 'package:ginkgo/data/models/graphql/__generated__/serializers.gql.dart'
+    as _i1;
 
-part 'duniter-custom-queries.var.gql.g.dart';
+part 'duniter-queries.var.gql.g.dart';
 
 abstract class GAccountsByNameOrPkVars
     implements Built<GAccountsByNameOrPkVars, GAccountsByNameOrPkVarsBuilder> {
diff --git a/lib/graphql/__generated__/duniter-custom-queries.var.gql.g.dart b/lib/data/models/graphql/__generated__/duniter-queries.var.gql.g.dart
similarity index 99%
rename from lib/graphql/__generated__/duniter-custom-queries.var.gql.g.dart
rename to lib/data/models/graphql/__generated__/duniter-queries.var.gql.g.dart
index b1f5835f..73cc21da 100644
--- a/lib/graphql/__generated__/duniter-custom-queries.var.gql.g.dart
+++ b/lib/data/models/graphql/__generated__/duniter-queries.var.gql.g.dart
@@ -1,6 +1,6 @@
 // GENERATED CODE - DO NOT MODIFY BY HAND
 
-part of 'duniter-custom-queries.var.gql.dart';
+part of 'duniter-queries.var.gql.dart';
 
 // **************************************************************************
 // BuiltValueGenerator
diff --git a/lib/graphql/__generated__/serializers.gql.dart b/lib/data/models/graphql/__generated__/serializers.gql.dart
similarity index 98%
rename from lib/graphql/__generated__/serializers.gql.dart
rename to lib/data/models/graphql/__generated__/serializers.gql.dart
index 8db0aed4..63a1437f 100644
--- a/lib/graphql/__generated__/serializers.gql.dart
+++ b/lib/data/models/graphql/__generated__/serializers.gql.dart
@@ -8,20 +8,7 @@ import 'package:built_value/src/json_object_serializer.dart'
     show JsonObjectSerializer;
 import 'package:built_value/standard_json_plugin.dart' show StandardJsonPlugin;
 import 'package:ferry_exec/ferry_exec.dart';
-import 'package:ginkgo/graphql/__generated__/duniter-custom-queries.data.gql.dart'
-    show
-        GAccountByPkData,
-        GAccountByPkData_accountByPk,
-        GAccountsByNameOrPkData,
-        GAccountsByNameOrPkData_identity,
-        GAccountsByNameOrPkData_identity_account,
-        GLastBlockData,
-        GLastBlockData_block;
-import 'package:ginkgo/graphql/__generated__/duniter-custom-queries.req.gql.dart'
-    show GAccountByPkReq, GAccountsByNameOrPkReq, GLastBlockReq;
-import 'package:ginkgo/graphql/__generated__/duniter-custom-queries.var.gql.dart'
-    show GAccountByPkVars, GAccountsByNameOrPkVars, GLastBlockVars;
-import 'package:ginkgo/graphql/__generated__/duniter-indexer.schema.gql.dart'
+import 'package:ginkgo/data/models/graphql/__generated__/duniter-indexer.schema.gql.dart'
     show
         GAccountAggregateBoolExp,
         GAccountAggregateOrderBy,
@@ -343,6 +330,19 @@ import 'package:ginkgo/graphql/__generated__/duniter-indexer.schema.gql.dart'
         Gtimestamptz,
         GtransferAggregateBoolExpCount,
         GtxCommentAggregateBoolExpCount;
+import 'package:ginkgo/data/models/graphql/__generated__/duniter-queries.data.gql.dart'
+    show
+        GAccountByPkData,
+        GAccountByPkData_accountByPk,
+        GAccountsByNameOrPkData,
+        GAccountsByNameOrPkData_identity,
+        GAccountsByNameOrPkData_identity_account,
+        GLastBlockData,
+        GLastBlockData_block;
+import 'package:ginkgo/data/models/graphql/__generated__/duniter-queries.req.gql.dart'
+    show GAccountByPkReq, GAccountsByNameOrPkReq, GLastBlockReq;
+import 'package:ginkgo/data/models/graphql/__generated__/duniter-queries.var.gql.dart'
+    show GAccountByPkVars, GAccountsByNameOrPkVars, GLastBlockVars;
 import 'package:gql_code_builder_serializers/gql_code_builder_serializers.dart'
     show OperationSerializer;
 
diff --git a/lib/graphql/__generated__/serializers.gql.g.dart b/lib/data/models/graphql/__generated__/serializers.gql.g.dart
similarity index 100%
rename from lib/graphql/__generated__/serializers.gql.g.dart
rename to lib/data/models/graphql/__generated__/serializers.gql.g.dart
diff --git a/lib/graphql/duniter-indexer.graphql b/lib/data/models/graphql/duniter-indexer.graphql
similarity index 100%
rename from lib/graphql/duniter-indexer.graphql
rename to lib/data/models/graphql/duniter-indexer.graphql
diff --git a/lib/graphql/duniter-custom-queries.graphql b/lib/data/models/graphql/duniter-queries.graphql
similarity index 100%
rename from lib/graphql/duniter-custom-queries.graphql
rename to lib/data/models/graphql/duniter-queries.graphql
diff --git a/lib/graphql/duniter_indexer_client.dart b/lib/data/models/graphql/duniter_indexer_client.dart
similarity index 100%
rename from lib/graphql/duniter_indexer_client.dart
rename to lib/data/models/graphql/duniter_indexer_client.dart
diff --git a/lib/graphql/duniter_queries.dart b/lib/data/models/graphql/duniter_queries.dart
similarity index 100%
rename from lib/graphql/duniter_queries.dart
rename to lib/data/models/graphql/duniter_queries.dart
diff --git a/lib/env.g.dart b/lib/env.g.dart
index b463d3cb..f3984565 100644
--- a/lib/env.g.dart
+++ b/lib/env.g.dart
@@ -12,131 +12,131 @@ final class _Env {
   static const String currency = 'g1';
 
   static const List<int> _enviedkeysentryDsn = <int>[
-    3789592483,
-    519000300,
-    3218101299,
-    3434160896,
-    1809671064,
-    1956571216,
-    1162757250,
-    2973698749,
-    4223845016,
-    1793412790,
-    2941253815,
-    119738379,
-    167803808,
-    3725580121,
-    1518210694,
-    2750148458,
-    2204373064,
-    1495727016,
-    4036033766,
-    2203103119,
-    3242361400,
-    2538336673,
-    3576566784,
-    1845956700,
-    1977832068,
-    2169168825,
-    1783072940,
-    215164885,
-    820146591,
-    544702775,
-    3993274704,
-    73623499,
-    661293101,
-    2471197079,
-    2635575324,
-    3226856094,
-    1002847391,
-    3265656126,
-    3088270203,
-    3525551956,
-    3581957181,
-    2622956856,
-    1960442000,
-    897056174,
-    41206717,
-    2348149909,
-    3924389126,
-    466923891,
-    3936151037,
-    2003837812,
-    938426219,
-    3803993913,
-    4166136805,
-    3121125247,
-    2961534188,
-    4147370248,
-    854509010,
-    244893929,
-    1263933423,
-    283040921,
-    2704664244,
+    519011093,
+    3579158528,
+    1416708179,
+    3167984071,
+    934790768,
+    1725361064,
+    2452853187,
+    1277142928,
+    652780185,
+    1211809916,
+    2190818968,
+    3322214891,
+    1366427186,
+    3685522274,
+    3270956622,
+    3143916545,
+    1305902759,
+    1556990506,
+    1835296383,
+    1745510820,
+    350103637,
+    4211903882,
+    3241969987,
+    1339525876,
+    2238671907,
+    2799810159,
+    2415096517,
+    459523461,
+    3755864005,
+    1483633187,
+    1312934594,
+    739865990,
+    2824329569,
+    2471897625,
+    311517253,
+    3558201817,
+    3427090743,
+    2200617233,
+    3319493071,
+    761178670,
+    2509322263,
+    3194404893,
+    2545191831,
+    1175122253,
+    2632192189,
+    4095785064,
+    1675056044,
+    3841894623,
+    4021024602,
+    2288026386,
+    215762447,
+    958870761,
+    1801285065,
+    3245787412,
+    3500219998,
+    3107687843,
+    3861280013,
+    3175733170,
+    3496019226,
+    1858386997,
+    599537726,
   ];
 
   static const List<int> _envieddatasentryDsn = <int>[
-    3789592523,
-    519000216,
-    3218101319,
-    3434161008,
-    1809671147,
-    1956571242,
-    1162757293,
-    2973698706,
-    4223845035,
-    1793412742,
-    2941253761,
-    119738424,
-    167803796,
-    3725580140,
-    1518210789,
-    2750148360,
-    2204373104,
-    1495727007,
-    4036033667,
-    2203103210,
-    3242361356,
-    2538336708,
-    3576566833,
-    1845956671,
-    1977832166,
-    2169168859,
-    1783072969,
-    215164908,
-    820146607,
-    544702725,
-    3993274723,
-    73623469,
-    661293135,
-    2471197091,
-    2635575421,
-    3226856184,
-    1002847484,
-    3265656075,
-    3088270109,
-    3525551927,
-    3581957245,
-    2622956875,
-    1960442101,
-    897056192,
-    41206729,
-    2348149991,
-    3924389247,
-    466923869,
-    3936150942,
-    2003837723,
-    938426118,
-    3803993932,
-    4166136715,
-    3121125146,
-    2961534111,
-    4147370278,
-    854508989,
-    244893851,
-    1263933320,
-    283040950,
-    2704664194,
+    519011197,
+    3579158644,
+    1416708135,
+    3167984055,
+    934790659,
+    1725361042,
+    2452853228,
+    1277142975,
+    652780202,
+    1211809868,
+    2190818990,
+    3322214872,
+    1366427142,
+    3685522263,
+    3270956589,
+    3143916643,
+    1305902751,
+    1556990493,
+    1835296282,
+    1745510849,
+    350103649,
+    4211903983,
+    3241970034,
+    1339525783,
+    2238671937,
+    2799810061,
+    2415096480,
+    459523516,
+    3755864053,
+    1483633169,
+    1312934641,
+    739866080,
+    2824329475,
+    2471897645,
+    311517220,
+    3558201791,
+    3427090772,
+    2200617252,
+    3319493033,
+    761178701,
+    2509322327,
+    3194404974,
+    2545191922,
+    1175122211,
+    2632192201,
+    4095784986,
+    1675056085,
+    3841894641,
+    4021024569,
+    2288026493,
+    215762530,
+    958870684,
+    1801285031,
+    3245787505,
+    3500219949,
+    3107687821,
+    3861280098,
+    3175733184,
+    3496019325,
+    1858386970,
+    599537672,
   ];
 
   static final String? sentryDsn = String.fromCharCodes(List<int>.generate(
@@ -146,49 +146,49 @@ final class _Env {
   ).map((int i) => _envieddatasentryDsn[i] ^ _enviedkeysentryDsn[i]));
 
   static const List<int> _enviedkeygitLabToken = <int>[
-    4057843052,
-    3391421501,
-    3128390990,
-    723453974,
-    2968258736,
-    2278483869,
-    2876168650,
-    1808264212,
-    349746951,
-    955363182,
-    3163240110,
-    3916320581,
-    1822758357,
-    3902061295,
-    3622499559,
-    4030278900,
-    3206792287,
-    993052339,
-    461741394,
-    2345862844,
+    100968783,
+    3193682320,
+    224953774,
+    3844581275,
+    1961703505,
+    3947602899,
+    2428342663,
+    1413213157,
+    4012557773,
+    1520751247,
+    2024662691,
+    2356768175,
+    2730077494,
+    467498876,
+    4207352827,
+    1319131689,
+    3753141659,
+    566734650,
+    3699909384,
+    1193426725,
   ];
 
   static const List<int> _envieddatagitLabToken = <int>[
-    4057842964,
-    3391421527,
-    3128390966,
-    723454030,
-    2968258788,
-    2278483947,
-    2876168697,
-    1808264270,
-    349747029,
-    955363092,
-    3163240165,
-    3916320566,
-    1822758326,
-    3902061275,
-    3622499508,
-    4030278820,
-    3206792203,
-    993052413,
-    461741414,
-    2345862863,
+    100968759,
+    3193682426,
+    224953814,
+    3844581315,
+    1961703429,
+    3947602853,
+    2428342708,
+    1413213119,
+    4012557727,
+    1520751349,
+    2024662760,
+    2356768220,
+    2730077525,
+    467498824,
+    4207352744,
+    1319131769,
+    3753141711,
+    566734708,
+    3699909436,
+    1193426774,
   ];
 
   static final String gitLabToken = String.fromCharCodes(List<int>.generate(
@@ -210,5 +210,5 @@ final class _Env {
       'wss://gdev.cgeek.fr/ws wss://gdev.trentesaux.fr/ws wss://gdev.gyroi.de/ws wss://gdev-smith.pini.fr/ws wss://gdev.pini.fr/ws wss://gdev.txmn.tk/ws wss://duniter-v2-vjrj-gdev.comunes.net/ws wss://bulmagdev.sleoconnect.fr/ws wss://gdev.cuates.net/ws wss://gdev.matograine.fr/ws wss://gdev.p2p.legal/ws';
 
   static const String duniterIndexerNodes =
-      'https://squid.gdev.coinduf.eu/v1/graphql https://squid.gdev.gyroi.de/v1/graphql https://duniter-v2-vjrj-squid.comunes.net/v1/graphql';
+      'https://gdev-indexer.p2p.legal/v1/graphql https://squid.gdev.coinduf.eu/v1/graphql https://squid.gdev.gyroi.de/v1/graphql https://duniter-v2-vjrj-squid.comunes.net/v1/graphql';
 }
diff --git a/lib/g1/api.dart b/lib/g1/api.dart
index 3284a24f..b1863e9d 100644
--- a/lib/g1/api.dart
+++ b/lib/g1/api.dart
@@ -8,7 +8,6 @@ import 'package:ferry/ferry.dart' as ferry;
 import 'package:flutter/foundation.dart';
 import 'package:http/http.dart' as http;
 import 'package:http/http.dart';
-
 /*import 'package:polkadart/polkadart.dart' show SystemApi, Health; */
 /* import 'package:polkadart/polkadart.dart'
     show SystemApi, ChainType, Health, PeerInfo, SyncState; */
@@ -19,16 +18,16 @@ import 'package:tuple/tuple.dart';
 import 'package:universal_html/html.dart' show window;
 
 import '../data/models/contact.dart';
+import '../data/models/graphql/__generated__/duniter-queries.data.gql.dart';
+import '../data/models/graphql/__generated__/duniter-queries.req.gql.dart';
+import '../data/models/graphql/__generated__/duniter-queries.var.gql.dart';
+import '../data/models/graphql/duniter_indexer_client.dart';
 import '../data/models/node.dart';
 import '../data/models/node_lists_default.dart';
 import '../data/models/node_manager.dart';
 import '../data/models/node_type.dart';
 import '../data/models/utxo.dart';
 import '../env.dart';
-import '../graphql/__generated__/duniter-custom-queries.data.gql.dart';
-import '../graphql/__generated__/duniter-custom-queries.req.gql.dart';
-import '../graphql/__generated__/duniter-custom-queries.var.gql.dart';
-import '../graphql/duniter_indexer_client.dart';
 import '../shared_prefs_helper.dart';
 import '../ui/logger.dart';
 import '../ui/ui_helpers.dart';
diff --git a/lib/ui/ui_helpers.dart b/lib/ui/ui_helpers.dart
index 1512db45..5a12c11e 100644
--- a/lib/ui/ui_helpers.dart
+++ b/lib/ui/ui_helpers.dart
@@ -616,10 +616,12 @@ Future<bool> openUrl(String url) async {
 
 void showQrDialog({
   required BuildContext context,
-  required String publicKey,
+  required String pubKeyOrAddress,
+  required bool isV2,
   bool noTitle = false,
   String? feedbackText,
 }) {
+  final String key = isV2 ? pubKeyOrAddress : getFullPubKey(pubKeyOrAddress);
   showDialog(
     context: context,
     builder: (BuildContext context) {
@@ -633,8 +635,8 @@ void showQrDialog({
                 child: Padding(
                   padding: const EdgeInsets.all(16.0),
                   child: GestureDetector(
-                    onTap: () => copyPublicKeyToClipboard(
-                        context, publicKey, feedbackText),
+                    onTap: () =>
+                        copyPublicKeyToClipboard(context, key, feedbackText),
                     child: Container(
                       color:
                           isDark(context) ? Colors.grey[900] : Colors.grey[100],
@@ -649,7 +651,7 @@ void showQrDialog({
                                   children: <Widget>[
                                 QrImageView(
                                   // version: QrVersions.auto,
-                                  data: publicKey,
+                                  data: key,
                                   size: MediaQuery.of(context).size.width * 0.5,
                                   // gapless: false,
                                   /* embeddedImage: const AssetImage(
@@ -681,14 +683,13 @@ void showQrDialog({
                 padding: const EdgeInsets.all(12.0),
                 child: TextFormField(
                   maxLines: 2,
-                  initialValue: publicKey,
+                  initialValue: key,
                   readOnly: true,
                   decoration: InputDecoration(
                     suffixIcon: IconButton(
                       icon: const Icon(Icons.content_copy),
                       onPressed: () {
-                        copyPublicKeyToClipboard(
-                            context, publicKey, feedbackText);
+                        copyPublicKeyToClipboard(context, key, feedbackText);
                       },
                     ),
                   ),
diff --git a/lib/ui/widgets/contact_page.dart b/lib/ui/widgets/contact_page.dart
index 3524b283..04b64599 100644
--- a/lib/ui/widgets/contact_page.dart
+++ b/lib/ui/widgets/contact_page.dart
@@ -8,7 +8,6 @@ import '../../data/models/app_cubit.dart';
 import '../../data/models/contact.dart';
 import '../../data/models/multi_wallet_transaction_cubit.dart';
 import '../../g1/api.dart';
-import '../../g1/g1_helper.dart';
 import '../ui_helpers.dart';
 import 'fourth_screen/transactions_and_balance_widget.dart';
 
@@ -180,8 +179,8 @@ class QrListTile extends StatelessWidget {
         onTap: () {
           showQrDialog(
               context: context,
-              publicKey:
-                  isV2 ? pubKeyOrAddress : getFullPubKey(pubKeyOrAddress),
+              pubKeyOrAddress: pubKeyOrAddress,
+              isV2: isV2,
               noTitle: true,
               feedbackText: 'some_key_copied_to_clipboard');
         },
diff --git a/lib/ui/widgets/contacts_actions.dart b/lib/ui/widgets/contacts_actions.dart
index 3e49e9c3..992f1c5a 100644
--- a/lib/ui/widgets/contacts_actions.dart
+++ b/lib/ui/widgets/contacts_actions.dart
@@ -6,7 +6,6 @@ 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 'third_screen/contact_form_dialog.dart';
@@ -32,7 +31,8 @@ void onDeleteContact(BuildContext context, Contact contact) {
 void onShowContactQr(BuildContext context, Contact contact) {
   showQrDialog(
       context: context,
-      publicKey: getFullPubKey(contact.pubKey),
+      isV2: false,
+      pubKeyOrAddress: contact.pubKey,
       noTitle: true,
       feedbackText: 'some_key_copied_to_clipboard');
 }
diff --git a/lib/ui/widgets/first_screen/credit_card.dart b/lib/ui/widgets/first_screen/credit_card.dart
index 60cd71e2..0afc731c 100644
--- a/lib/ui/widgets/first_screen/credit_card.dart
+++ b/lib/ui/widgets/first_screen/credit_card.dart
@@ -10,10 +10,11 @@ import 'card_name_editable.dart';
 import 'card_text_style.dart';
 
 class CreditCard extends StatelessWidget {
-  const CreditCard({super.key,
-    required this.publicKey,
-    required this.cardName,
-    required this.isG1nkgoCard});
+  const CreditCard(
+      {super.key,
+      required this.publicKey,
+      required this.cardName,
+      required this.isG1nkgoCard});
 
   final String publicKey;
   final String cardName;
@@ -46,12 +47,8 @@ class CreditCard extends StatelessWidget {
                   begin: Alignment.bottomLeft,
                   end: Alignment.topRight,
                   colors: <Color>[
-                    SharedPreferencesHelper()
-                        .getTheme()
-                        .primaryColor,
-                    SharedPreferencesHelper()
-                        .getTheme()
-                        .secondaryColor
+                    SharedPreferencesHelper().getTheme().primaryColor,
+                    SharedPreferencesHelper().getTheme().secondaryColor
                   ],
                 ),
               ),
@@ -74,29 +71,25 @@ class CreditCard extends StatelessWidget {
                               style: TextStyle(
                                 color: Colors.white,
                                 fontSize:
-                                MediaQuery
-                                    .of(context)
-                                    .size
-                                    .width * 0.07,
+                                    MediaQuery.of(context).size.width * 0.07,
                                 fontWeight: FontWeight.bold,
                               ),
                             )),
                       ),
                       Padding(
                           padding:
-                          EdgeInsets.symmetric(horizontal: cardPadding),
+                              EdgeInsets.symmetric(horizontal: cardPadding),
                           child: Row(children: <Widget>[
                             GestureDetector(
                                 onTap: () {
                                   showQrDialog(
-                                      context: context, publicKey: publicKey);
+                                      context: context,
+                                      isV2: false,
+                                      pubKeyOrAddress: publicKey);
                                 },
                                 child: SvgPicture.asset(
-                                  width: MediaQuery
-                                      .of(context)
-                                      .size
-                                      .width <
-                                      smallScreenWidth
+                                  width: MediaQuery.of(context).size.width <
+                                          smallScreenWidth
                                       ? 25
                                       : 40,
                                   'assets/img/chip.svg',
@@ -104,23 +97,24 @@ class CreditCard extends StatelessWidget {
                             const SizedBox(width: 10.0),
                             Expanded(
                                 child: CardNameEditable(
-                                  key: Key(publicKey),
-                                  publicKey: publicKey,
-                                  cardName: cardName,
-                                  isG1nkgoCard: isG1nkgoCard,
-                                  defValue:
+                              key: Key(publicKey),
+                              publicKey: publicKey,
+                              cardName: cardName,
+                              isG1nkgoCard: isG1nkgoCard,
+                              defValue:
                                   isG1nkgoCard ? tr('your_name_here') : '',
-                                )),
+                            )),
                           ])),
                       const SizedBox(height: 6.0),
                       Padding(
                           padding:
-                          EdgeInsets.symmetric(horizontal: cardPadding),
+                              EdgeInsets.symmetric(horizontal: cardPadding),
                           child: Row(children: <Widget>[
                             GestureDetector(
-                                onTap: () =>
-                                    showQrDialog(
-                                        context: context, publicKey: publicKey),
+                                onTap: () => showQrDialog(
+                                    context: context,
+                                    isV2: false,
+                                    pubKeyOrAddress: publicKey),
                                 child: FittedBox(
                                     key: creditCardPubKey,
                                     fit: BoxFit.scaleDown,
@@ -130,9 +124,8 @@ class CreditCard extends StatelessWidget {
                                       style: cardTextStyle(context),
                                     ))),
                             GestureDetector(
-                                onTap: () =>
-                                    showAlertDialog(
-                                        context, '', tr('keys_tooltip')),
+                                onTap: () => showAlertDialog(
+                                    context, '', tr('keys_tooltip')),
                                 child: FittedBox(
                                     fit: BoxFit.scaleDown,
                                     child: Text(' **** ****',
@@ -142,11 +135,10 @@ class CreditCard extends StatelessWidget {
                       if (bigDevice)
                         Padding(
                           padding:
-                          EdgeInsets.symmetric(horizontal: cardPadding),
+                              EdgeInsets.symmetric(horizontal: cardPadding),
                           child: GestureDetector(
-                            onTap: () =>
-                                showAlertDialog(
-                                    context, '', tr('card_validity_tooltip')),
+                            onTap: () => showAlertDialog(
+                                context, '', tr('card_validity_tooltip')),
                             child: Text(
                               tr('card_validity'),
                               style: TextStyle(
diff --git a/lib/ui/widgets/third_screen/contact_form_dialog.dart b/lib/ui/widgets/third_screen/contact_form_dialog.dart
index e86421fe..a90a4087 100644
--- a/lib/ui/widgets/third_screen/contact_form_dialog.dart
+++ b/lib/ui/widgets/third_screen/contact_form_dialog.dart
@@ -58,7 +58,8 @@ class _ContactFormDialogState extends State<ContactFormDialog> {
                   onTap: () {
                     showQrDialog(
                         context: context,
-                        publicKey: getFullPubKey(_updatedContact.pubKey),
+                        pubKeyOrAddress: _updatedContact.pubKey,
+                        isV2: false,
                         noTitle: true,
                         feedbackText: 'some_key_copied_to_clipboard');
                   },
@@ -81,7 +82,8 @@ class _ContactFormDialogState extends State<ContactFormDialog> {
                     onTap: () {
                       showQrDialog(
                           context: context,
-                          publicKey: getFullPubKey(_updatedContact.address),
+                          isV2: true,
+                          pubKeyOrAddress: _updatedContact.address,
                           noTitle: true,
                           feedbackText: 'some_key_copied_to_clipboard');
                     },
diff --git a/pubspec.yaml b/pubspec.yaml
index d652571b..6e4ee87f 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
 # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
 # Read more about iOS versioning at
 # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
-version: 1.2.3-1
+version: 1.2.3-2
 
 environment:
   sdk: ^3.5.2
-- 
GitLab