diff --git a/CMakeLists.txt b/CMakeLists.txt index dc1a28cc..e01340ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,7 +147,6 @@ set(SRC_FILES src/CommunitiesListItem.cc src/CommunitiesList.cc src/Community.cc - src/Deserializable.cc src/InviteeItem.cc src/LoginPage.cc src/MainWindow.cc diff --git a/include/Deserializable.h b/include/Deserializable.h deleted file mode 100644 index 0b97ce29..00000000 --- a/include/Deserializable.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * nheko Copyright (C) 2017 Konstantinos Sideris - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include - -#include -#include - -class DeserializationException : public std::exception -{ -public: - explicit DeserializationException(const std::string &msg); - virtual const char *what() const noexcept; - -private: - std::string msg_; -}; - -// JSON response structs need to implement the interface. -class Deserializable -{ -public: - virtual void deserialize(const QJsonValue &) {} - virtual void deserialize(const QJsonObject &) {} - virtual void deserialize(const QJsonDocument &) {} - virtual ~Deserializable() {} -}; - -class Serializable -{ -public: - virtual QJsonObject serialize() const = 0; - virtual ~Serializable() {} -}; diff --git a/src/Deserializable.cc b/src/Deserializable.cc deleted file mode 100644 index 8bdbfc2c..00000000 --- a/src/Deserializable.cc +++ /dev/null @@ -1,28 +0,0 @@ -/* - * nheko Copyright (C) 2017 Konstantinos Sideris - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "Deserializable.h" - -DeserializationException::DeserializationException(const std::string &msg) - : msg_(msg) -{} - -const char * -DeserializationException::what() const noexcept -{ - return msg_.c_str(); -} diff --git a/src/MatrixClient.cc b/src/MatrixClient.cc index e95f8b97..5593dbe6 100644 --- a/src/MatrixClient.cc +++ b/src/MatrixClient.cc @@ -31,7 +31,6 @@ #include #include -#include "Deserializable.h" #include "MatrixClient.h" MatrixClient::MatrixClient(QString server, QObject *parent) @@ -559,16 +558,16 @@ MatrixClient::getOwnCommunities() noexcept auto data = reply->readAll(); auto json = QJsonDocument::fromJson(data).object(); - try { - QList response; - - for (auto group : json["groups"].toArray()) - response.append(group.toString()); - - emit getOwnCommunitiesResponse(response); - } catch (DeserializationException &e) { - qWarning() << "Own communities:" << e.what(); + if (!json.contains("groups")) { + qWarning() << "failed to parse own communities. 'groups' key not found"; + return; } + + QList response; + for (auto group : json["groups"].toArray()) + response.append(group.toString()); + + emit getOwnCommunitiesResponse(response); }); }