From c95e7db18749eeec3631a4acf46dbc6752700f4e Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Thu, 7 May 2020 14:20:18 -0400 Subject: [PATCH 1/4] feat: subscribing to signals --- nim_status_client.nimble | 18 +++++++++--------- src/applicationLogic.nim | 12 ++++++++++++ src/libstatus.nim | 4 +++- src/status.nim | 3 +++ 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/nim_status_client.nimble b/nim_status_client.nimble index 0e1cf98831..198903cff3 100644 --- a/nim_status_client.nimble +++ b/nim_status_client.nimble @@ -1,10 +1,10 @@ -[Package] -version = "0.1.0" -author = "Richard Ramos" -description = "A new awesome nimble package" -license = "MIT" -srcDir = "src" -bin = "nim_status_client" +# Package -[Deps] -Requires: "nim >= 1.0.0, nimqml >= 0.7.0" \ No newline at end of file +version = "0.1.0" +author = "Your Name" +description = "Example .nimble file." +license = "MIT" + +# Deps + +requires "nim >= 0.10.0" \ No newline at end of file diff --git a/src/applicationLogic.nim b/src/applicationLogic.nim index 710ef78a0b..94cd27aca7 100644 --- a/src/applicationLogic.nim +++ b/src/applicationLogic.nim @@ -1,5 +1,12 @@ import NimQml import status +import libstatus + + +var signalHandler: SignalCallback = proc(p0: cstring): void = + setupForeignThreadGc() + echo $p0 + tearDownForeignThreadGc() QtObject: type ApplicationLogic* = ref object of QObject @@ -17,6 +24,11 @@ QtObject: discard status.addPeer("enode://2c8de3cbb27a3d30cbb5b3e003bc722b126f5aef82e2052aaef032ca94e0c7ad219e533ba88c70585ebd802de206693255335b100307645ab5170e88620d2a81@47.244.221.14:443") echo status.callPrivateRPC("{\"jsonrpc\":\"2.0\", \"method\":\"wakuext_requestMessages\", \"params\":[{\"topics\": [\"0x7998f3c8\"]}], \"id\": 1}") + # Experiment + status.setSignalHandler(signalHandler) + + + # ¯\_(ツ)_/¯ dunno what is this proc setup(self: ApplicationLogic) = # discard status.onMessage(self.onMessage) diff --git a/src/libstatus.nim b/src/libstatus.nim index 29ce3c8661..cd836ee047 100644 --- a/src/libstatus.nim +++ b/src/libstatus.nim @@ -16,4 +16,6 @@ proc callPrivateRPC*(inputJSON: cstring): cstring {.importc: "CallPrivateRPC".} proc addPeer*(peer: cstring): cstring {.importc: "AddPeer".} -# proc setSignalEventCallback*(callback: proc): void {.importc: "SetSignalEventCallback".} +type SignalCallback* = proc(eventMessage: cstring): void + +proc setSignalEventCallback*(callback: SignalCallback) {.importc: "SetSignalEventCallback".} diff --git a/src/status.nim b/src/status.nim index 3cc6aa5819..a0ad7c16c5 100644 --- a/src/status.nim +++ b/src/status.nim @@ -11,6 +11,9 @@ proc recreateDir(dirname: string) = removeDir(dirname) createDir(dirname) +proc setSignalHandler*(something: SignalCallback) = + libstatus.setSignalEventCallback(something) + proc setupNewAccount*() = # Deleting directories recreateDir(datadir) From d5d4c03003b9dbb07e28592701f230a64aee292e Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Thu, 7 May 2020 16:02:22 -0400 Subject: [PATCH 2/4] test --- src/applicationLogic.nim | 5 +++-- src/status.nim | 45 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/applicationLogic.nim b/src/applicationLogic.nim index 94cd27aca7..517119ebc0 100644 --- a/src/applicationLogic.nim +++ b/src/applicationLogic.nim @@ -20,12 +20,13 @@ QtObject: result.callResult = "Use this tool to call JSONRPC methods" result.setup() + status.setSignalHandler(signalHandler) + status.setupNewAccount() discard status.addPeer("enode://2c8de3cbb27a3d30cbb5b3e003bc722b126f5aef82e2052aaef032ca94e0c7ad219e533ba88c70585ebd802de206693255335b100307645ab5170e88620d2a81@47.244.221.14:443") echo status.callPrivateRPC("{\"jsonrpc\":\"2.0\", \"method\":\"wakuext_requestMessages\", \"params\":[{\"topics\": [\"0x7998f3c8\"]}], \"id\": 1}") - # Experiment - status.setSignalHandler(signalHandler) + status.subscribeToTest() diff --git a/src/status.nim b/src/status.nim index a0ad7c16c5..9413e8bd0b 100644 --- a/src/status.nim +++ b/src/status.nim @@ -14,6 +14,51 @@ proc recreateDir(dirname: string) = proc setSignalHandler*(something: SignalCallback) = libstatus.setSignalEventCallback(something) +proc subscribeToTest*() = + var payload = %* { + "jasonrpc": "2.0", + "id": 2, + "method": "waku_generateSymKeyFromPassword", + "params": ["test"] + } + var result = $libstatus.callPrivateRPC($payload) + let keyId = $result.parseJson()["result"] + + var topic = "0x9c22ff5f"; #sha3 of test + + payload = %* { + "jsonrpc": "2.0", + "id": 3, + "method": "wakuext_loadFilters", + "params": [ + [{ + "chatId": "test", + "symKeyId": keyId, + "topic": topic, + "discovery": false, + "negotiated": false, + "listen": true + }] + ] + } + + result = $libstatus.callPrivateRPC($payload) + echo result; + + payload = %* { + "jsonrpc": "2.0", + "id": 3, + "method": "wakuext_startMessenger", + "params": [] + } + result = $libstatus.callPrivateRPC($payload) + + + + + + + proc setupNewAccount*() = # Deleting directories recreateDir(datadir) From 8a464eb0d8b3c77c6d5c0945ba40a1aa11ae5cfe Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Thu, 7 May 2020 16:04:16 -0400 Subject: [PATCH 3/4] test --- nim_status_client.nimble | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/nim_status_client.nimble b/nim_status_client.nimble index 198903cff3..3ac8680214 100644 --- a/nim_status_client.nimble +++ b/nim_status_client.nimble @@ -1,10 +1,10 @@ -# Package +[Package] +version = "0.1.0" +author = "Richard Ramos" +description = "A new awesome nimble package" +license = "MIT" +srcDir = "src" +bin = "nim_status_client" -version = "0.1.0" -author = "Your Name" -description = "Example .nimble file." -license = "MIT" - -# Deps - -requires "nim >= 0.10.0" \ No newline at end of file +[Deps] +Requires: "nim >= 1.0.0, nimqml >= 0.7.0" From a5d2f25b01966a70680caf2b35fdfc76e6d58073 Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Fri, 8 May 2020 08:42:43 -0400 Subject: [PATCH 4/4] Getting messages from #test --- src/applicationLogic.nim | 7 +++- src/status.nim | 81 ++++++++++++++++++++++++---------------- 2 files changed, 55 insertions(+), 33 deletions(-) diff --git a/src/applicationLogic.nim b/src/applicationLogic.nim index 517119ebc0..8483e57b72 100644 --- a/src/applicationLogic.nim +++ b/src/applicationLogic.nim @@ -1,11 +1,16 @@ import NimQml import status import libstatus +import json var signalHandler: SignalCallback = proc(p0: cstring): void = setupForeignThreadGc() - echo $p0 + + var jsonSignal = ($p0).parseJson + if $jsonSignal["type"].getStr == "messages.new": + echo $p0 + tearDownForeignThreadGc() QtObject: diff --git a/src/status.nim b/src/status.nim index 9413e8bd0b..ecf460dabf 100644 --- a/src/status.nim +++ b/src/status.nim @@ -15,37 +15,9 @@ proc setSignalHandler*(something: SignalCallback) = libstatus.setSignalEventCallback(something) proc subscribeToTest*() = + var result = "" + var payload = %* { - "jasonrpc": "2.0", - "id": 2, - "method": "waku_generateSymKeyFromPassword", - "params": ["test"] - } - var result = $libstatus.callPrivateRPC($payload) - let keyId = $result.parseJson()["result"] - - var topic = "0x9c22ff5f"; #sha3 of test - - payload = %* { - "jsonrpc": "2.0", - "id": 3, - "method": "wakuext_loadFilters", - "params": [ - [{ - "chatId": "test", - "symKeyId": keyId, - "topic": topic, - "discovery": false, - "negotiated": false, - "listen": true - }] - ] - } - - result = $libstatus.callPrivateRPC($payload) - echo result; - - payload = %* { "jsonrpc": "2.0", "id": 3, "method": "wakuext_startMessenger", @@ -53,8 +25,53 @@ proc subscribeToTest*() = } result = $libstatus.callPrivateRPC($payload) - - + payload = %* { + "jsonrpc": "2.0", + "id": 3, + "method": "wakuext_loadFilters", + "params": [ + [{ + "ChatID":"test", + "OneToOne":false + }] + ] + } + result = $libstatus.callPrivateRPC($payload) + + + payload = %* { + "jsonrpc": "2.0", + "id": 4, + "method": "wakuext_saveChat", + "params": [ + { + "lastClockValue":0, + "color":"#51d0f0", + "name":"test", + "lastMessage":nil, + "active":true, + "id":"test", + "unviewedMessagesCount":0, + "chatType":2, + "timestamp":1588940692659 + } + ] + } + result = $libstatus.callPrivateRPC($payload) + + + + payload = %* { + "jsonrpc": "2.0", + "id": 3, + "method": "wakuext_chatMessages", + "params": [ + "test", nil, 20 + ] + } + result = $libstatus.callPrivateRPC($payload) + +