From dafbf527e2d80fe21ad3181331c7ee02f1984ca1 Mon Sep 17 00:00:00 2001
From: vtexier <vit@free.fr>
Date: Mon, 24 Feb 2020 11:55:49 +0100
Subject: [PATCH] [fix] fix initialize identity if identity with no memberships

Enhance connection dialogs controller.py
---
 src/sakia/data/processors/identities.py            | 3 ++-
 src/sakia/gui/dialogs/connection_cfg/controller.py | 4 +++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/sakia/data/processors/identities.py b/src/sakia/data/processors/identities.py
index 5967c4c8..381f32e6 100644
--- a/src/sakia/data/processors/identities.py
+++ b/src/sakia/data/processors/identities.py
@@ -165,6 +165,7 @@ class IdentitiesProcessor:
         log_stream("Requesting membership data")
         progress(1 / 3)
         try:
+            # Return a 1002 - MEMBER_NOT_FOUND if identity has no memberships or not written in blockchain
             memberships_data = await self._bma_connector.get(
                 identity.currency,
                 bma.blockchain.memberships,
@@ -215,7 +216,7 @@ class IdentitiesProcessor:
                 identity.outdistanced = identity_data["outdistanced"]
                 self.insert_or_update_identity(identity)
         except errors.DuniterError as e:
-            if e.ucode == errors.NO_MEMBER_MATCHING_PUB_OR_UID:
+            if e.ucode == errors.NO_MEMBER_MATCHING_PUB_OR_UID or e.message == 'MEMBER_NOT_FOUND':
                 identity.written = False
                 self.insert_or_update_identity(identity)
             else:
diff --git a/src/sakia/gui/dialogs/connection_cfg/controller.py b/src/sakia/gui/dialogs/connection_cfg/controller.py
index d91ed165..f3e0bb3b 100644
--- a/src/sakia/gui/dialogs/connection_cfg/controller.py
+++ b/src/sakia/gui/dialogs/connection_cfg/controller.py
@@ -274,7 +274,7 @@ class ConnectionConfigController(QObject):
             self.view.edit_uid.show()
             asyncio.ensure_future(self.process())
             return
-        self.accept()
+        await self.accept()
 
     def check_key(self):
         if self.mode == ConnectionConfigController.PUBKEY:
@@ -389,8 +389,10 @@ Yours : {0}, the network : {1}""".format(
 
                 except DuniterError as e:
                     self.view.display_info(e.message)
+                    self.step_key.set_result(None)
                 except NoPeerAvailable as e:
                     self.view.display_info(str(e))
+                    self.step_key.set_result(None)
             else:
                 self.view.display_info(
                     self.tr("A connection already exists using this key.")
-- 
GitLab