From e55e934d77b06ca31b5027ebf5825b6bd2b0efa3 Mon Sep 17 00:00:00 2001
From: joshemb <josh@elixxir.io>
Date: Fri, 15 Jul 2022 15:52:45 -0700
Subject: [PATCH] Revert modification to loadOrInitMessenger in cmd/

---
 cmd/init.go | 45 +++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 43 insertions(+), 2 deletions(-)

diff --git a/cmd/init.go b/cmd/init.go
index 86356025b..7af1a0b90 100644
--- a/cmd/init.go
+++ b/cmd/init.go
@@ -77,8 +77,45 @@ func loadOrInitMessenger(forceLegacy bool, password []byte, storeDir, regCode st
 	cmixParams xxdk.CMIXParams, e2eParams xxdk.E2EParams, cbs xxdk.AuthCallbacks) *xxdk.E2e {
 	jww.INFO.Printf("Using normal sender")
 
-	net := loadOrInitNet(password, storeDir, regCode, cmixParams)
-	identity := loadOrInitReceptionIdentity(forceLegacy, net)
+	// create a new client if none exist
+	if _, err := os.Stat(storeDir); errors.Is(err, fs.ErrNotExist) {
+		// Initialize from scratch
+		ndfJson, err := ioutil.ReadFile(viper.GetString("ndf"))
+		if err != nil {
+			jww.FATAL.Panicf("%+v", err)
+		}
+
+		err = xxdk.NewCmix(string(ndfJson), storeDir, password, regCode)
+		if err != nil {
+			jww.FATAL.Panicf("%+v", err)
+		}
+	}
+
+	// Initialize from storage
+	net, err := xxdk.LoadCmix(storeDir, password, cmixParams)
+	if err != nil {
+		jww.FATAL.Panicf("%+v", err)
+	}
+
+	// Load or initialize xxdk.ReceptionIdentity storage
+	identity, err := xxdk.LoadReceptionIdentity(identityStorageKey, net)
+	if err != nil {
+		if forceLegacy {
+			jww.INFO.Printf("Forcing legacy sender")
+			identity, err = xxdk.MakeLegacyReceptionIdentity(net)
+		} else {
+			identity, err = xxdk.MakeReceptionIdentity(net)
+		}
+		if err != nil {
+			jww.FATAL.Panicf("%+v", err)
+		}
+
+		err = xxdk.StoreReceptionIdentity(identityStorageKey, identity, net)
+		if err != nil {
+			jww.FATAL.Panicf("%+v", err)
+		}
+	}
+
 	messenger, err := xxdk.Login(net, cbs, identity, e2eParams)
 	if err != nil {
 		jww.FATAL.Panicf("%+v", err)
@@ -86,6 +123,8 @@ func loadOrInitMessenger(forceLegacy bool, password []byte, storeDir, regCode st
 	return messenger
 }
 
+// loadOrInitNet will build a new xxdk.Cmix from existing storage
+// or from a new storage that it will create if none already exists
 func loadOrInitNet(password []byte, storeDir, regCode string,
 	cmixParams xxdk.CMIXParams) *xxdk.Cmix {
 	// create a new client if none exist
@@ -111,6 +150,8 @@ func loadOrInitNet(password []byte, storeDir, regCode string,
 	return net
 }
 
+// loadOrInitReceptionIdentity will build a new xxdk.ReceptionIdentity from existing storage
+// or from a new storage that it will create if none already exists
 func loadOrInitReceptionIdentity(forceLegacy bool, net *xxdk.Cmix) xxdk.ReceptionIdentity {
 	// Load or initialize xxdk.ReceptionIdentity storage
 	identity, err := xxdk.LoadReceptionIdentity(identityStorageKey, net)
-- 
GitLab