diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 42 |
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()); } } |