diff --git a/storage/utility/NDF.go b/storage/utility/NDF.go index c01485f26856e0ad111dab4614992045d7d585e4..3c5f9b9d48bb2fe6fc55bb07221f12d8add79538 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 0000000000000000000000000000000000000000..f958bd350143e6773e5aaf5f35ee495c46bce04c --- /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 +}