diff --git a/main.go b/main.go index 930e10f09bd749b22d53fe465ed7326a33b06e8d..62eafe71a3d6ef1c223d6102ed9fd072997cc9a8 100644 --- a/main.go +++ b/main.go @@ -82,6 +82,12 @@ func main() { js.Global().Set("InitializeBackup", js.FuncOf(wasm.InitializeBackup)) js.Global().Set("ResumeBackup", js.FuncOf(wasm.ResumeBackup)) + // bindings/errors.go + js.Global().Set("CreateUserFriendlyErrorMessage", + js.FuncOf(wasm.CreateUserFriendlyErrorMessage)) + js.Global().Set("UpdateCommonErrors", + js.FuncOf(wasm.UpdateCommonErrors)) + <-make(chan bool) os.Exit(0) } diff --git a/wasm/errors.go b/wasm/errors.go new file mode 100644 index 0000000000000000000000000000000000000000..940571357e084f86034093d416fc5ed13d01810b --- /dev/null +++ b/wasm/errors.go @@ -0,0 +1,59 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright © 2020 xx network SEZC // +// // +// Use of this source code is governed by a license that can be found in the // +// LICENSE file // +//////////////////////////////////////////////////////////////////////////////// + +//go:build js && wasm + +package wasm + +import ( + "gitlab.com/elixxir/client/bindings" + "syscall/js" +) + +// CreateUserFriendlyErrorMessage will convert the passed in error string to an +// error string that is user-friendly if a substring match is found to a +// common error. Common errors is a map that can be updated using +// UpdateCommonErrors. If the error is not common, some simple parsing is done +// on the error message to make it more user-accessible, removing backend +// specific jargon. +// +// Parameters: +// - args[0] - an error returned from the backend (string). +// +// Returns +// - A user-friendly error message. This should be devoid of technical speak +// but still be meaningful for front-end or back-end teams (string). +func CreateUserFriendlyErrorMessage(_ js.Value, args []js.Value) interface{} { + return bindings.CreateUserFriendlyErrorMessage(args[0].String()) +} + +// UpdateCommonErrors updates the internal error mapping database. This internal +// database maps errors returned from the backend to user-friendly error +// messages. +// +// Parameters: +// - args[0] - contents of a JSON file whose format conforms to the example +// below (string). +// +// Example Input: +// { +// "Failed to Unmarshal Conversation": "Could not retrieve conversation", +// "Failed to unmarshal SentRequestMap": "Failed to pull up friend requests", +// "cannot create username when network is not health": "Cannot create username, unable to connect to network", +// } +// +// Returns: +// - throws a TypeError if the JSON cannot be unmarshalled. +func UpdateCommonErrors(_ js.Value, args []js.Value) interface{} { + err := bindings.UpdateCommonErrors(args[0].String()) + if err != nil { + Throw(TypeError, err.Error()) + return nil + } + + return nil +}