summary refs log tree commit diff
path: root/src/MainWindow.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-06-09 16:03:14 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-06-09 16:03:14 +0300
commitb89257a34b2a98b737f4ae544f7e436b9000b240 (patch)
tree81d7f355721541afbd91dc9a085abbb4666f3565 /src/MainWindow.cc
parentInstall missing dependencies in travis-ci/appveyor (diff)
downloadnheko-b89257a34b2a98b737f4ae544f7e436b9000b240.tar.xz
Migrate to mtxclient for the http calls
Diffstat (limited to 'src/MainWindow.cc')
-rw-r--r--src/MainWindow.cc54
1 files changed, 34 insertions, 20 deletions
diff --git a/src/MainWindow.cc b/src/MainWindow.cc

index c46cbff1..9ba8b28e 100644 --- a/src/MainWindow.cc +++ b/src/MainWindow.cc
@@ -17,7 +17,6 @@ #include <QApplication> #include <QLayout> -#include <QNetworkReply> #include <QSettings> #include <QShortcut> @@ -26,6 +25,7 @@ #include "ChatPage.h" #include "Config.h" #include "LoadingIndicator.h" +#include "Logging.hpp" #include "LoginPage.h" #include "MainWindow.h" #include "MatrixClient.h" @@ -46,6 +46,15 @@ MainWindow *MainWindow::instance_ = nullptr; +MainWindow::~MainWindow() +{ + if (http::v2::client() != nullptr) { + http::v2::client()->shutdown(); + // TODO: find out why waiting for the threads to join is slow. + http::v2::client()->close(); + } +} + MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , progressModal_{nullptr} @@ -54,9 +63,6 @@ MainWindow::MainWindow(QWidget *parent) setWindowTitle("nheko"); setObjectName("MainWindow"); - // Initialize the http client. - http::init(); - restoreWindowSize(); QFont font("Open Sans"); @@ -124,21 +130,13 @@ MainWindow::MainWindow(QWidget *parent) connect( chat_page_, &ChatPage::showUserSettingsPage, this, &MainWindow::showUserSettingsPage); - connect(http::client(), - SIGNAL(loginSuccess(QString, QString, QString)), - this, - SLOT(showChatPage(QString, QString, QString))); - - connect(http::client(), - SIGNAL(registerSuccess(QString, QString, QString)), - this, - SLOT(showChatPage(QString, QString, QString))); - connect(http::client(), &MatrixClient::invalidToken, this, [this]() { - chat_page_->deleteConfigs(); - showLoginPage(); - login_page_->loginError("Invalid token detected. Please try to login again."); + connect(login_page_, &LoginPage::loginOk, this, [this](const mtx::responses::Login &res) { + http::v2::client()->set_user(res.user_id); + showChatPage(); }); + connect(register_page_, &RegisterPage::registerOk, this, &MainWindow::showChatPage); + QShortcut *quitShortcut = new QShortcut(QKeySequence::Quit, this); connect(quitShortcut, &QShortcut::activated, this, QApplication::quit); @@ -157,7 +155,18 @@ MainWindow::MainWindow(QWidget *parent) QString home_server = settings.value("auth/home_server").toString(); QString user_id = settings.value("auth/user_id").toString(); - showChatPage(user_id, home_server, token); + http::v2::client()->set_access_token(token.toStdString()); + http::v2::client()->set_server(home_server.toStdString()); + + try { + using namespace mtx::identifiers; + http::v2::client()->set_user(parse<User>(user_id.toStdString())); + } catch (const std::invalid_argument &e) { + log::main()->critical("bootstrapped with invalid user_id: {}", + user_id.toStdString()); + } + + showChatPage(); } } @@ -216,8 +225,13 @@ MainWindow::removeOverlayProgressBar() } void -MainWindow::showChatPage(QString userid, QString homeserver, QString token) +MainWindow::showChatPage() { + auto userid = QString::fromStdString(http::v2::client()->user_id().to_string()); + auto homeserver = QString::fromStdString(http::v2::client()->server() + ":" + + std::to_string(http::v2::client()->port())); + auto token = QString::fromStdString(http::v2::client()->access_token()); + QSettings settings; settings.setValue("auth/access_token", token); settings.setValue("auth/home_server", homeserver); @@ -317,7 +331,7 @@ MainWindow::openLeaveRoomDialog(const QString &room_id) leaveRoomModal_->hide(); if (leaving) - http::client()->leaveRoom(roomToLeave); + chat_page_->leaveRoom(roomToLeave); }); leaveRoomModal_ =