aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp42
1 files changed, 20 insertions, 22 deletions
diff --git a/src/main.cpp b/src/main.cpp
index e04f58a..9ceda77 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -10,8 +10,8 @@
#include "builtins.h"
#include "configuration.h"
#include "crashhandler.h"
-#include "session/session.h"
#include "session/sessiondialog.h"
+#include "session_json.hpp"
#include "settings.h"
#include "util.h"
#include "version.h"
@@ -145,37 +145,35 @@ int main(int argc, char **argv)
// if app is primary, create new sessions from received messages
if(app.isPrimary() && !cmd_noRemote) {
- QObject::connect(&app, &Browser::receivedMessage, &app, [](quint32 instanceId, QByteArray message) {
+ QObject::connect(&app, &Browser::receivedMessage, &app, [&app](quint32 instanceId, QByteArray message) {
Q_UNUSED(instanceId);
- auto doc = QJsonDocument::fromJson(message);
- Session::restoreSession(doc.object());
+ JsonSession session(message);
+ app.open(session.get());
});
}
{
- QJsonObject sessionData;
-
- if(cmd_pickSession) {
- auto *dlg = new SessionDialog();
- if(const auto pick = dlg->pickSession())
- sessionData = pick.value();
- else
- sessionData = Session::fromCommandLine(profile, urls);
- } else if(cmd_session) {
- QFile sessionJson(QString::fromStdString(args::get(cmd_session)));
- if(sessionJson.open(QIODevice::ReadOnly | QIODevice::Text)) {
- sessionData = QJsonDocument::fromJson(sessionJson.readAll()).object();
- sessionJson.close();
+ const auto session = [&]() {
+ if(cmd_session) {
+ QFile sessionJson(QString::fromStdString(args::get(cmd_session)));
+ if(sessionJson.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ return JsonSession(sessionJson.readAll());
+ }
}
- } else {
- sessionData = Session::fromCommandLine(profile, urls);
- }
+ if(cmd_pickSession) {
+ SessionDialog dlg;
+ if(const auto pick = dlg.pickSession()) {
+ return JsonSession(pick.value());
+ }
+ }
+ return JsonSession(profile, urls);
+ }();
if(app.isPrimary() || cmd_noRemote) {
- Session::restoreSession(sessionData);
+ app.open(session.get());
} else {
// app is secondary and not standalone
- return app.sendMessage(QJsonDocument(sessionData).toJson());
+ return app.sendMessage(session.serialize());
}
}