From 44428b587794826b7c1200521a85b64c13750e3d Mon Sep 17 00:00:00 2001
From: Jono Wenger <jono@elixxir.io>
Date: Wed, 26 Oct 2022 17:05:38 -0700
Subject: [PATCH] Replace saving NDF to ekv in Javascript with local storage

---
 storage/utility/NDF.go    |  3 +++
 storage/utility/NDF_js.go | 40 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)
 create mode 100644 storage/utility/NDF_js.go

diff --git a/storage/utility/NDF.go b/storage/utility/NDF.go
index c01485f26..3c5f9b9d4 100644
--- a/storage/utility/NDF.go
+++ b/storage/utility/NDF.go
@@ -5,6 +5,9 @@
 // LICENSE file.                                                              //
 ////////////////////////////////////////////////////////////////////////////////
 
+// This file is compiled for all architectures except WebAssembly.
+//go:build !js || !wasm
+
 package utility
 
 import (
diff --git a/storage/utility/NDF_js.go b/storage/utility/NDF_js.go
new file mode 100644
index 000000000..f958bd350
--- /dev/null
+++ b/storage/utility/NDF_js.go
@@ -0,0 +1,40 @@
+////////////////////////////////////////////////////////////////////////////////
+// Copyright © 2022 xx foundation                                             //
+//                                                                            //
+// Use of this source code is governed by a license that can be found in the  //
+// LICENSE file.                                                              //
+////////////////////////////////////////////////////////////////////////////////
+
+package utility
+
+import (
+	"gitlab.com/elixxir/client/storage/versioned"
+	"gitlab.com/xx_network/primitives/ndf"
+	"os"
+	"syscall/js"
+)
+
+const NdfStorageKeyNamePrefix = "ndfStorageKey/"
+
+var localStorage = js.Global().Get("localStorage")
+
+func LoadNDF(_ *versioned.KV, key string) (*ndf.NetworkDefinition, error) {
+	keyValue := localStorage.Call("getItem", NdfStorageKeyNamePrefix+key)
+	if keyValue.IsNull() {
+		return nil, os.ErrNotExist
+	}
+
+	return ndf.Unmarshal([]byte(keyValue.String()))
+}
+
+func SaveNDF(_ *versioned.KV, key string, ndf *ndf.NetworkDefinition) error {
+	marshaled, err := ndf.Marshal()
+	if err != nil {
+		return err
+	}
+
+	localStorage.Call("setItem",
+		NdfStorageKeyNamePrefix+key, string(marshaled))
+
+	return nil
+}
-- 
GitLab