From 2668e0fcf29f7c452320f4c53ebd599498a3498b Mon Sep 17 00:00:00 2001
From: Erik Prabowo Kamal <erik@darapsa.co.id>
Date: Sat, 31 Aug 2019 18:14:46 +0800
Subject: Made sure the user and controller singletons are instantiated early

This is because when the controller is lazy loaded, somehow the worker failed to initialise librtclient with the server URL before libcurl gets to perform.
---
 main.cxx | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/main.cxx b/main.cxx
index a29e917..23ba4ac 100644
--- a/main.cxx
+++ b/main.cxx
@@ -9,16 +9,20 @@ int main(int argc, char* argv[])
 	QGuiApplication app(argc, argv);
 	QQmlApplicationEngine engine;
 
-	qmlRegisterSingletonType<User>("id.co.darapsa.kelakon.user", 0, 1, "User", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject* {
+	auto typeId = qmlRegisterSingletonType<User>("id.co.darapsa.kelakon.user", 0, 1, "User", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject* {
 		Q_UNUSED(engine)
 		Q_UNUSED(scriptEngine)
 		return new User{};
 	});
-	qmlRegisterSingletonType<User>("id.co.darapsa.kelakon.rtclient", 0, 1, "RTClient", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject* {
+	auto user = engine.singletonInstance<User*>(typeId);
+	Q_UNUSED(user)
+	typeId = qmlRegisterSingletonType<User>("id.co.darapsa.kelakon.rtclient", 0, 1, "RTClient", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject* {
 		Q_UNUSED(engine)
 		Q_UNUSED(scriptEngine)
 		return new Controller{};
 	});
+	auto controller = engine.singletonInstance<Controller*>(typeId);
+	Q_UNUSED(controller)
 	engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
 
 	return app.exec();
-- 
cgit v1.2.3