status-desktop/src/nim_status_client.nim

73 lines
2.2 KiB
Nim
Raw Normal View History

2020-05-06 17:40:00 +00:00
import NimQml
import applicationView
import chats
2020-05-13 19:14:35 +00:00
import json
import state
2020-05-13 19:14:35 +00:00
import status/utils
2020-05-13 15:37:12 +00:00
import status/core as status
import status/chat as status_chat
2020-05-13 15:37:12 +00:00
import status/test as status_test
2020-05-06 17:40:00 +00:00
proc mainProc() =
2020-05-10 23:24:06 +00:00
# From QT docs:
# For any GUI application using Qt, there is precisely one QApplication object,
# no matter whether the application has 0, 1, 2 or more windows at any given time.
# For non-QWidget based Qt applications, use QGuiApplication instead, as it does
2020-05-10 23:24:06 +00:00
# not depend on the QtWidgets library. Use QCoreApplication for non GUI apps
var app = newQApplication()
defer: app.delete() # Defer will run this just before mainProc() function ends
2020-05-06 17:40:00 +00:00
var chatsModel = newChatsModel();
defer: chatsModel.delete
2020-05-06 17:40:00 +00:00
var engine = newQQmlApplicationEngine()
defer: engine.delete()
status.init()
2020-05-13 15:37:12 +00:00
status_test.setupNewAccount()
discard status_test.addPeer("enode://2c8de3cbb27a3d30cbb5b3e003bc722b126f5aef82e2052aaef032ca94e0c7ad219e533ba88c70585ebd802de206693255335b100307645ab5170e88620d2a81@47.244.221.14:443")
echo status.callPrivateRPC("{\"jsonrpc\":\"2.0\", \"method\":\"wakuext_requestMessages\", \"params\":[{\"topics\": [\"0x7998f3c8\"]}], \"id\": 1}")
# result.accountResult = status.queryAccounts()
2020-05-13 19:14:35 +00:00
var sendMessage = proc (msg: string): string =
status_chat.sendPublicChatMessage("test", msg)
2020-05-13 19:14:35 +00:00
let logic = newApplicationView(app, sendMessage)
2020-05-10 23:24:06 +00:00
defer: logic.delete
2020-05-06 17:40:00 +00:00
let logicVariant = newQVariant(logic)
defer: logicVariant.delete
let chatsVariant = newQVariant(chatsModel)
defer: chatsVariant.delete
var appState = state.newAppState()
echo appState.title
appState.subscribe(proc () =
chatsModel.names = @[]
for channel in appState.channels:
echo channel.name
chatsModel.addNameTolist(channel.name)
)
2020-05-13 17:46:12 +00:00
status.startMessenger()
appState.addChannel("test")
appState.addChannel("test2")
2020-05-06 17:40:00 +00:00
engine.setRootContextProperty("logic", logicVariant)
engine.setRootContextProperty("chatsModel", chatsVariant)
2020-05-13 17:46:12 +00:00
engine.load("../ui/main.qml")
2020-05-10 23:24:06 +00:00
# Qt main event loop is entered here
# The termination of the loop will be performed when exit() or quit() is called
2020-05-06 17:40:00 +00:00
app.exec()
when isMainModule:
mainProc()
GC_fullcollect()