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