From 6db702857d3452b69618f31edaf854774cdd4e29 Mon Sep 17 00:00:00 2001
From: Jono Wenger <jono@elixxir.io>
Date: Fri, 6 Jan 2023 15:01:18 -0800
Subject: [PATCH] Add logging control to workers

---
 indexedDb/channels/channelsIndexedDbWorker.js |  1 +
 indexedDb/channels/main.go                    | 14 +++++++++++++-
 indexedDb/dm/dmIndexedDbWorker.js             |  1 +
 indexedDb/dm/main.go                          | 14 +++++++++++++-
 indexedDbWorker/worker.go                     |  3 +++
 5 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/indexedDb/channels/channelsIndexedDbWorker.js b/indexedDb/channels/channelsIndexedDbWorker.js
index 6126eec5..198ab729 100644
--- a/indexedDb/channels/channelsIndexedDbWorker.js
+++ b/indexedDb/channels/channelsIndexedDbWorker.js
@@ -11,6 +11,7 @@ const go = new Go();
 const binPath = 'xxdk-channelsIndexedDkWorker.wasm'
 WebAssembly.instantiateStreaming(fetch(binPath), go.importObject).then((result) => {
     go.run(result.instance);
+    LogLevel(2);
 }).catch((err) => {
     console.error(err);
 });
\ No newline at end of file
diff --git a/indexedDb/channels/main.go b/indexedDb/channels/main.go
index e8f62798..f89c42b7 100644
--- a/indexedDb/channels/main.go
+++ b/indexedDb/channels/main.go
@@ -13,13 +13,25 @@ import (
 	"fmt"
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
+	"gitlab.com/elixxir/xxdk-wasm/wasm"
+	"syscall/js"
 )
 
+func init() {
+	// Set up Javascript console listener set at level INFO
+	ll := wasm.NewJsConsoleLogListener(jww.LevelInfo)
+	jww.SetLogListeners(ll.Listen)
+	jww.SetStdoutThreshold(jww.LevelFatal + 1)
+}
+
 func main() {
 	fmt.Println("[WW] Starting xxDK WebAssembly Channels Database Worker.")
-	jww.SetStdoutThreshold(jww.LevelDebug)
 	jww.INFO.Print("[WW] Starting xxDK WebAssembly Channels Database Worker.")
 
+	js.Global().Set("LogLevel", js.FuncOf(wasm.LogLevel))
+	js.Global().Set("LogToFile", js.FuncOf(wasm.LogToFile))
+	js.Global().Set("RegisterLogWriter", js.FuncOf(wasm.RegisterLogWriter))
+
 	m := &manager{mh: indexedDb.NewMessageHandler("ChannelsIndexedDbWorker")}
 	m.RegisterHandlers()
 	m.mh.SignalReady()
diff --git a/indexedDb/dm/dmIndexedDbWorker.js b/indexedDb/dm/dmIndexedDbWorker.js
index 100e6acb..67378654 100644
--- a/indexedDb/dm/dmIndexedDbWorker.js
+++ b/indexedDb/dm/dmIndexedDbWorker.js
@@ -11,6 +11,7 @@ const go = new Go();
 const binPath = 'xxdk-dmIndexedDkWorker.wasm'
 WebAssembly.instantiateStreaming(fetch(binPath), go.importObject).then((result) => {
     go.run(result.instance);
+    LogLevel(2);
 }).catch((err) => {
     console.error(err);
 });
\ No newline at end of file
diff --git a/indexedDb/dm/main.go b/indexedDb/dm/main.go
index 6a250275..f6a507b3 100644
--- a/indexedDb/dm/main.go
+++ b/indexedDb/dm/main.go
@@ -13,13 +13,25 @@ import (
 	"fmt"
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/xxdk-wasm/indexedDb"
+	"gitlab.com/elixxir/xxdk-wasm/wasm"
+	"syscall/js"
 )
 
+func init() {
+	// Set up Javascript console listener set at level INFO
+	ll := wasm.NewJsConsoleLogListener(jww.LevelInfo)
+	jww.SetLogListeners(ll.Listen)
+	jww.SetStdoutThreshold(jww.LevelFatal + 1)
+}
+
 func main() {
 	fmt.Println("[WW] Starting xxDK WebAssembly DM Database Worker.")
-	jww.SetStdoutThreshold(jww.LevelDebug)
 	jww.INFO.Print("[WW] Starting xxDK WebAssembly DM Database Worker.")
 
+	js.Global().Set("LogLevel", js.FuncOf(wasm.LogLevel))
+	js.Global().Set("LogToFile", js.FuncOf(wasm.LogToFile))
+	js.Global().Set("RegisterLogWriter", js.FuncOf(wasm.RegisterLogWriter))
+
 	m := &manager{mh: indexedDb.NewMessageHandler("DmIndexedDbWorker")}
 	m.RegisterHandlers()
 	m.mh.SignalReady()
diff --git a/indexedDbWorker/worker.go b/indexedDbWorker/worker.go
index d34b09d1..6151f799 100644
--- a/indexedDbWorker/worker.go
+++ b/indexedDbWorker/worker.go
@@ -22,6 +22,9 @@ import (
 // TODO:
 //  1. Fix ID counter
 //  2. Use transfer list when sending
+//  3. Get path to JS file from bindings
+//  4. restructure packages
+//  5. fix tag system
 
 // InitID is the ID for the first item in the handler list. If the list only
 // contains one handler, then this is the ID of that handler. If the list has
-- 
GitLab