Drop ifdefs for libQuotient 0.7

This commit is contained in:
Tobias Fella
2023-07-15 09:18:05 +02:00
parent 294812956a
commit 7587a1a418
36 changed files with 8 additions and 826 deletions

View File

@@ -71,7 +71,6 @@ private Q_SLOTS:
void linkPreviewsReject(); void linkPreviewsReject();
}; };
#ifdef QUOTIENT_07
void TextHandlerTest::initTestCase() void TextHandlerTest::initTestCase()
{ {
connection = Connection::makeMockConnection(QStringLiteral("@bob:kde.org")); connection = Connection::makeMockConnection(QStringLiteral("@bob:kde.org"));
@@ -204,7 +203,6 @@ void TextHandlerTest::initTestCase()
SyncRoomData roomData(QStringLiteral("@bob:kde.org"), JoinState::Join, json.object()); SyncRoomData roomData(QStringLiteral("@bob:kde.org"), JoinState::Join, json.object());
room->update(std::move(roomData)); room->update(std::move(roomData));
} }
#endif
void TextHandlerTest::allowedAttributes() void TextHandlerTest::allowedAttributes()
{ {
@@ -479,7 +477,6 @@ void TextHandlerTest::receiveRichtextIn()
QCOMPARE(testTextHandler.handleRecieveRichText(), testOutputString); QCOMPARE(testTextHandler.handleRecieveRichText(), testOutputString);
} }
#ifdef QUOTIENT_07
void TextHandlerTest::receiveRichMxcUrl() void TextHandlerTest::receiveRichMxcUrl()
{ {
const QString testInputString = QStringLiteral( const QString testInputString = QStringLiteral(
@@ -497,7 +494,6 @@ void TextHandlerTest::receiveRichMxcUrl()
QCOMPARE(testTextHandler.handleRecieveRichText(Qt::RichText, room, room->messageEvents().at(0).get()), testOutputString); QCOMPARE(testTextHandler.handleRecieveRichText(Qt::RichText, room, room->messageEvents().at(0).get()), testOutputString);
} }
#endif
/** /**
* For when your rich input string has a plain text url left in. * For when your rich input string has a plain text url left in.

View File

@@ -112,8 +112,6 @@ add_library(neochat STATIC
events/imagepackevent.h events/imagepackevent.h
events/joinrulesevent.cpp events/joinrulesevent.cpp
events/joinrulesevent.h events/joinrulesevent.h
events/stickerevent.cpp
events/stickerevent.h
models/reactionmodel.cpp models/reactionmodel.cpp
models/reactionmodel.h models/reactionmodel.h
delegatesizehelper.cpp delegatesizehelper.cpp
@@ -124,6 +122,8 @@ add_library(neochat STATIC
models/locationsmodel.h models/locationsmodel.h
locationhelper.cpp locationhelper.cpp
locationhelper.h locationhelper.h
events/pollevent.cpp
pollhandler.cpp
) )
ecm_qt_declare_logging_category(neochat ecm_qt_declare_logging_category(neochat
@@ -146,14 +146,6 @@ target_link_libraries(neochat-app PRIVATE
neochat neochat
) )
if(Quotient${QUOTIENT_SUFFIX}_VERSION_MINOR GREATER 6)
target_compile_definitions(neochat PUBLIC QUOTIENT_07)
target_sources(neochat PRIVATE events/pollevent.cpp pollhandler.cpp)
else()
target_compile_definitions(neochat PUBLIC QUOTIENT_VERSION=\"${Quotient${QUOTIENT_SUFFIX}_VERSION}\")
target_sources(neochat PRIVATE neochataccountregistry.cpp)
endif()
ecm_add_app_icon(NEOCHAT_ICON ICONS ${CMAKE_SOURCE_DIR}/128-logo.png) ecm_add_app_icon(NEOCHAT_ICON ICONS ${CMAKE_SOURCE_DIR}/128-logo.png)
target_sources(neochat-app PRIVATE ${NEOCHAT_ICON}) target_sources(neochat-app PRIVATE ${NEOCHAT_ICON})

View File

@@ -31,11 +31,7 @@
#include <signal.h> #include <signal.h>
#ifdef QUOTIENT_07
#include "accountregistry.h" #include "accountregistry.h"
#else
#include "neochataccountregistry.h"
#endif
#include <connection.h> #include <connection.h>
#include <csapi/content-repo.h> #include <csapi/content-repo.h>
@@ -44,9 +40,7 @@
#include <jobs/downloadfilejob.h> #include <jobs/downloadfilejob.h>
#include <qt_connection_util.h> #include <qt_connection_util.h>
#ifdef QUOTIENT_07
#include <eventstats.h> #include <eventstats.h>
#endif
#include "neochatconfig.h" #include "neochatconfig.h"
#include "neochatroom.h" #include "neochatroom.h"
@@ -108,13 +102,8 @@ Controller::Controller(QObject *parent)
} }
#endif #endif
#ifdef QUOTIENT_07
connect(&Accounts, &AccountRegistry::accountCountChanged, this, &Controller::activeConnectionIndexChanged); connect(&Accounts, &AccountRegistry::accountCountChanged, this, &Controller::activeConnectionIndexChanged);
#else
connect(&AccountRegistry::instance(), &AccountRegistry::accountCountChanged, this, &Controller::activeConnectionIndexChanged);
#endif
#ifdef QUOTIENT_07
static int oldAccountCount = 0; static int oldAccountCount = 0;
connect(&Accounts, &AccountRegistry::accountCountChanged, this, [this]() { connect(&Accounts, &AccountRegistry::accountCountChanged, this, [this]() {
if (Accounts.size() > oldAccountCount) { if (Accounts.size() > oldAccountCount) {
@@ -125,7 +114,6 @@ Controller::Controller(QObject *parent)
} }
oldAccountCount = Accounts.size(); oldAccountCount = Accounts.size();
}); });
#endif
QTimer::singleShot(0, this, [this] { QTimer::singleShot(0, this, [this] {
m_pushRuleModel = new PushRuleModel; m_pushRuleModel = new PushRuleModel;
@@ -160,18 +148,10 @@ void Controller::logout(Connection *conn, bool serverSideLogout)
job.start(); job.start();
loop.exec(); loop.exec();
#ifdef QUOTIENT_07
if (Accounts.count() > 1) { if (Accounts.count() > 1) {
#else
if (AccountRegistry::instance().count() > 1) {
#endif
// Only set the connection if the the account being logged out is currently active // Only set the connection if the the account being logged out is currently active
if (conn == activeConnection()) { if (conn == activeConnection()) {
#ifdef QUOTIENT_07
setActiveConnection(Accounts.accounts()[0]); setActiveConnection(Accounts.accounts()[0]);
#else
setActiveConnection(AccountRegistry::instance().accounts()[0]);
#endif
} }
} else { } else {
setActiveConnection(nullptr); setActiveConnection(nullptr);
@@ -186,11 +166,7 @@ void Controller::addConnection(Connection *c)
{ {
Q_ASSERT_X(c, __FUNCTION__, "Attempt to add a null connection"); Q_ASSERT_X(c, __FUNCTION__, "Attempt to add a null connection");
#ifdef QUOTIENT_07
Accounts.add(c); Accounts.add(c);
#else
AccountRegistry::instance().add(c);
#endif
c->setLazyLoading(true); c->setLazyLoading(true);
@@ -220,15 +196,8 @@ void Controller::dropConnection(Connection *c)
{ {
Q_ASSERT_X(c, __FUNCTION__, "Attempt to drop a null connection"); Q_ASSERT_X(c, __FUNCTION__, "Attempt to drop a null connection");
#ifndef QUOTIENT_07
AccountRegistry::instance().drop(c);
#endif
Q_EMIT connectionDropped(c); Q_EMIT connectionDropped(c);
Q_EMIT accountCountChanged(); Q_EMIT accountCountChanged();
#ifndef QUOTIENT_07
c->deleteLater();
#endif
} }
void Controller::invokeLogin() void Controller::invokeLogin()
@@ -401,11 +370,7 @@ bool Controller::setAvatar(Connection *connection, const QUrl &avatarSource)
User *localUser = connection->user(); User *localUser = connection->user();
QString decoded = avatarSource.path(); QString decoded = avatarSource.path();
if (decoded.isEmpty()) { if (decoded.isEmpty()) {
#ifdef QUOTIENT_07
connection->callApi<SetAvatarUrlJob>(localUser->id(), avatarSource); connection->callApi<SetAvatarUrlJob>(localUser->id(), avatarSource);
#else
connection->callApi<SetAvatarUrlJob>(localUser->id(), QString());
#endif
return true; return true;
} }
if (QImageReader(decoded).read().isNull()) { if (QImageReader(decoded).read().isNull()) {
@@ -416,11 +381,7 @@ bool Controller::setAvatar(Connection *connection, const QUrl &avatarSource)
} }
NeochatChangePasswordJob::NeochatChangePasswordJob(const QString &newPassword, bool logoutDevices, const Omittable<QJsonObject> &auth) NeochatChangePasswordJob::NeochatChangePasswordJob(const QString &newPassword, bool logoutDevices, const Omittable<QJsonObject> &auth)
#ifdef QUOTIENT_07
: BaseJob(HttpVerb::Post, QStringLiteral("ChangePasswordJob"), "/_matrix/client/r0/account/password") : BaseJob(HttpVerb::Post, QStringLiteral("ChangePasswordJob"), "/_matrix/client/r0/account/password")
#else
: BaseJob(HttpVerb::Post, QStringLiteral("ChangePasswordJob"), QStringLiteral("/_matrix/client/r0/account/password"))
#endif
{ {
QJsonObject _data; QJsonObject _data;
addParam<>(_data, QStringLiteral("new_password"), newPassword); addParam<>(_data, QStringLiteral("new_password"), newPassword);
@@ -431,11 +392,7 @@ NeochatChangePasswordJob::NeochatChangePasswordJob(const QString &newPassword, b
int Controller::accountCount() const int Controller::accountCount() const
{ {
#ifdef QUOTIENT_07
return Accounts.count(); return Accounts.count();
#else
return AccountRegistry::instance().count();
#endif
} }
void Controller::setQuitOnLastWindowClosed() void Controller::setQuitOnLastWindowClosed()
@@ -522,11 +479,7 @@ void Controller::saveWindowGeometry()
} }
NeochatDeleteDeviceJob::NeochatDeleteDeviceJob(const QString &deviceId, const Omittable<QJsonObject> &auth) NeochatDeleteDeviceJob::NeochatDeleteDeviceJob(const QString &deviceId, const Omittable<QJsonObject> &auth)
#ifdef QUOTIENT_07
: Quotient::BaseJob(HttpVerb::Delete, QStringLiteral("DeleteDeviceJob"), QStringLiteral("/_matrix/client/r0/devices/%1").arg(deviceId).toLatin1()) : Quotient::BaseJob(HttpVerb::Delete, QStringLiteral("DeleteDeviceJob"), QStringLiteral("/_matrix/client/r0/devices/%1").arg(deviceId).toLatin1())
#else
: Quotient::BaseJob(HttpVerb::Delete, QStringLiteral("DeleteDeviceJob"), QStringLiteral("/_matrix/client/r0/devices/%1").arg(deviceId))
#endif
{ {
QJsonObject _data; QJsonObject _data;
addParam<IfNotEmpty>(_data, QStringLiteral("auth"), auth); addParam<IfNotEmpty>(_data, QStringLiteral("auth"), auth);
@@ -632,11 +585,7 @@ bool Controller::hasWindowSystem() const
bool Controller::encryptionSupported() const bool Controller::encryptionSupported() const
{ {
#ifdef QUOTIENT_07
return Quotient::encryptionSupported(); return Quotient::encryptionSupported();
#else
return false;
#endif
} }
void Controller::forceRefreshTextDocument(QQuickTextDocument *textDocument, QQuickItem *item) void Controller::forceRefreshTextDocument(QQuickTextDocument *textDocument, QQuickItem *item)
@@ -677,29 +626,16 @@ void Controller::setApplicationProxy()
int Controller::activeConnectionIndex() const int Controller::activeConnectionIndex() const
{ {
#ifdef QUOTIENT_07
auto result = std::find_if(Accounts.accounts().begin(), Accounts.accounts().end(), [this](const auto &it) { auto result = std::find_if(Accounts.accounts().begin(), Accounts.accounts().end(), [this](const auto &it) {
return it == m_connection; return it == m_connection;
}); });
return result - Accounts.accounts().begin(); return result - Accounts.accounts().begin();
#else
for (int i = 0; i < AccountRegistry::instance().rowCount(); i++) {
if (AccountRegistry::instance().data(AccountRegistry::instance().index(i, 0), AccountRegistry::UserIdRole).toString() == m_connection->userId()) {
return i;
}
}
return 0;
#endif
} }
int Controller::quotientMinorVersion() const int Controller::quotientMinorVersion() const
{ {
// TODO libQuotient 0.7: Replace with version function from libQuotient // TODO libQuotient 0.7: Replace with version function from libQuotient
#ifdef QUOTIENT_07
return 7; return 7;
#else
return 6;
#endif
} }
bool Controller::isFlatpak() const bool Controller::isFlatpak() const

View File

@@ -11,11 +11,7 @@ ImagePackEventContent::ImagePackEventContent(const QJsonObject &json)
if (json.contains(QStringLiteral("pack"))) { if (json.contains(QStringLiteral("pack"))) {
pack = ImagePackEventContent::Pack{ pack = ImagePackEventContent::Pack{
fromJson<Omittable<QString>>(json["pack"].toObject()["display_name"]), fromJson<Omittable<QString>>(json["pack"].toObject()["display_name"]),
#ifdef QUOTIENT_07
fromJson<Omittable<QUrl>>(json["pack"].toObject()["avatar_url"]), fromJson<Omittable<QUrl>>(json["pack"].toObject()["avatar_url"]),
#else
QUrl(),
#endif
fromJson<Omittable<QStringList>>(json["pack"].toObject()["usage"]), fromJson<Omittable<QStringList>>(json["pack"].toObject()["usage"]),
fromJson<Omittable<QString>>(json["pack"].toObject()["attribution"]), fromJson<Omittable<QString>>(json["pack"].toObject()["attribution"]),
}; };
@@ -27,21 +23,13 @@ ImagePackEventContent::ImagePackEventContent(const QJsonObject &json)
for (const auto &k : keys) { for (const auto &k : keys) {
Omittable<EventContent::ImageInfo> info; Omittable<EventContent::ImageInfo> info;
if (json["images"][k].toObject().contains(QStringLiteral("info"))) { if (json["images"][k].toObject().contains(QStringLiteral("info"))) {
#ifdef QUOTIENT_07
info = EventContent::ImageInfo(QUrl(json["images"][k]["url"].toString()), json["images"][k]["info"].toObject(), k); info = EventContent::ImageInfo(QUrl(json["images"][k]["url"].toString()), json["images"][k]["info"].toObject(), k);
#else
info = EventContent::ImageInfo(QUrl(json["images"][k]["url"].toString()), json["images"][k].toObject(), k);
#endif
} else { } else {
info = none; info = none;
} }
images += ImagePackImage{ images += ImagePackImage{
k, k,
#ifdef QUOTIENT_07
fromJson<QUrl>(json["images"][k]["url"].toString()), fromJson<QUrl>(json["images"][k]["url"].toString()),
#else
QUrl(),
#endif
fromJson<Omittable<QString>>(json["images"][k]["body"]), fromJson<Omittable<QString>>(json["images"][k]["body"]),
info, info,
fromJson<Omittable<QStringList>>(json["images"][k]["usage"]), fromJson<Omittable<QStringList>>(json["images"][k]["usage"]),

View File

@@ -83,23 +83,11 @@ public:
* *
* @sa Quotient::StateEvent, ImagePackEventContent * @sa Quotient::StateEvent, ImagePackEventContent
*/ */
#ifdef QUOTIENT_07
class ImagePackEvent : public KeyedStateEventBase<ImagePackEvent, ImagePackEventContent> class ImagePackEvent : public KeyedStateEventBase<ImagePackEvent, ImagePackEventContent>
#else
class ImagePackEvent : public StateEvent<ImagePackEventContent>
#endif
{ {
public: public:
#ifdef QUOTIENT_07
QUO_EVENT(ImagePackEvent, "im.ponies.room_emotes") QUO_EVENT(ImagePackEvent, "im.ponies.room_emotes")
using KeyedStateEventBase::KeyedStateEventBase; using KeyedStateEventBase::KeyedStateEventBase;
#else
DEFINE_EVENT_TYPEID("im.ponies.room_emotes", ImagePackEvent)
explicit ImagePackEvent(const QJsonObject &obj)
: StateEvent(typeId(), obj)
{
}
#endif
}; };
REGISTER_EVENT_TYPE(ImagePackEvent) REGISTER_EVENT_TYPE(ImagePackEvent)

View File

@@ -14,25 +14,13 @@ namespace Quotient
* *
* @sa Quotient::StateEvent * @sa Quotient::StateEvent
*/ */
#ifdef QUOTIENT_07
class JoinRulesEvent : public StateEvent class JoinRulesEvent : public StateEvent
#else
class JoinRulesEvent : public StateEventBase
#endif
{ {
public: public:
#ifdef QUOTIENT_07
QUO_EVENT(JoinRulesEvent, "m.room.join_rules") QUO_EVENT(JoinRulesEvent, "m.room.join_rules")
#else
DEFINE_EVENT_TYPEID("m.room.join_rules", JoinRulesEvent)
#endif
explicit JoinRulesEvent(const QJsonObject &obj) explicit JoinRulesEvent(const QJsonObject &obj)
#ifdef QUOTIENT_07
: StateEvent(obj) : StateEvent(obj)
#else
: StateEventBase(typeId(), obj)
#endif
{ {
} }

View File

@@ -1,35 +0,0 @@
// SPDX-FileCopyrightText: 2020 Carl Schwan <carlschwan@kde.org>
// SPDX-License-Identifier: LGPL-2.1-or-later
#include "stickerevent.h"
using namespace Quotient;
StickerEvent::StickerEvent(const QJsonObject &obj)
#ifdef QUOTIENT_07
: RoomEvent(obj)
#else
: RoomEvent(typeId(), obj)
#endif
, m_imageContent(EventContent::ImageContent(obj["content"_ls].toObject()))
{
}
QString StickerEvent::body() const
{
return content<QString>("body"_ls);
}
const EventContent::ImageContent &StickerEvent::image() const
{
return m_imageContent;
}
QUrl StickerEvent::url() const
{
#ifdef QUOTIENT_07
return m_imageContent.url();
#else
return m_imageContent.url;
#endif
}

View File

@@ -1,55 +0,0 @@
// SPDX-FileCopyrightText: 2020 Carl Schwan <carlschwan@kde.org>
// SPDX-License-Identifier: LGPL-2.1-or-later
#pragma once
#include <events/eventcontent.h>
#include <events/roomevent.h>
namespace Quotient
{
/**
* @class StickerEvent
*
* Class to define a sticker event.
*
* Sticker messages are specialised image messages that are displayed without
* controls (e.g. no "download" link, or light-box view on click, as would be
* displayed for for m.image events).
*
* @sa Quotient::RoomEvent
*/
class StickerEvent : public RoomEvent
{
public:
#ifdef QUOTIENT_07
QUO_EVENT(StickerEvent, "m.sticker")
#else
DEFINE_EVENT_TYPEID("m.sticker", StickerEvent)
#endif
explicit StickerEvent(const QJsonObject &obj);
/**
* @brief A textual representation or associated description of the sticker image.
*
* This could be the alt text of the original image, or a message to accompany
* and further describe the sticker.
*/
QString body() const;
/**
* @brief Metadata about the image referred to in url including a thumbnail representation.
*/
const EventContent::ImageContent &image() const;
/**
* @brief The URL to the sticker image. This must be a valid mxc:// URI.
*/
QUrl url() const;
private:
EventContent::ImageContent m_imageContent;
};
REGISTER_EVENT_TYPE(StickerEvent)
}

View File

@@ -69,14 +69,7 @@ void LinkPreviewer::loadUrlPreview()
auto imageUrl = QUrl(json["og:image"].toString()); auto imageUrl = QUrl(json["og:image"].toString());
if (imageUrl.isValid() && imageUrl.scheme() == QStringLiteral("mxc")) { if (imageUrl.isValid() && imageUrl.scheme() == QStringLiteral("mxc")) {
#ifdef QUOTIENT_07
m_imageSource = conn->makeMediaUrl(imageUrl); m_imageSource = conn->makeMediaUrl(imageUrl);
#else
QUrlQuery q(imageUrl.query());
q.addQueryItem(QStringLiteral("user_id"), conn->userId());
imageUrl.setQuery(q);
m_imageSource = imageUrl;
#endif
} else { } else {
m_imageSource = QUrl(); m_imageSource = QUrl();
} }

View File

@@ -3,11 +3,7 @@
#include "login.h" #include "login.h"
#ifdef QUOTIENT_07
#include <accountregistry.h> #include <accountregistry.h>
#else
#include "neochataccountregistry.h"
#endif
#include <connection.h> #include <connection.h>
#include <qt_connection_util.h> #include <qt_connection_util.h>
@@ -47,11 +43,7 @@ void Login::init()
return; return;
} }
#ifdef QUOTIENT_07
m_isLoggedIn = Accounts.isLoggedIn(m_matrixId); m_isLoggedIn = Accounts.isLoggedIn(m_matrixId);
#else
m_isLoggedIn = AccountRegistry::instance().isLoggedIn(m_matrixId);
#endif
Q_EMIT isLoggedInChanged(); Q_EMIT isLoggedInChanged();
if (m_isLoggedIn) { if (m_isLoggedIn) {
return; return;

View File

@@ -28,12 +28,7 @@
#include "neochat-version.h" #include "neochat-version.h"
#ifdef QUOTIENT_07
#include <accountregistry.h> #include <accountregistry.h>
#else
#include "neochataccountregistry.h"
#endif
#include <networkaccessmanager.h> #include <networkaccessmanager.h>
#include <room.h> #include <room.h>
#include <util.h> #include <util.h>
@@ -70,6 +65,8 @@
#include "models/serverlistmodel.h" #include "models/serverlistmodel.h"
#include "models/sortfilterroomlistmodel.h" #include "models/sortfilterroomlistmodel.h"
#include "models/sortfilterspacelistmodel.h" #include "models/sortfilterspacelistmodel.h"
#include "models/statefiltermodel.h"
#include "models/stickermodel.h"
#include "models/userdirectorylistmodel.h" #include "models/userdirectorylistmodel.h"
#include "models/userfiltermodel.h" #include "models/userfiltermodel.h"
#include "models/userlistmodel.h" #include "models/userlistmodel.h"
@@ -78,18 +75,12 @@
#include "neochatroom.h" #include "neochatroom.h"
#include "neochatuser.h" #include "neochatuser.h"
#include "notificationsmanager.h" #include "notificationsmanager.h"
#ifdef QUOTIENT_07
#include "pollhandler.h" #include "pollhandler.h"
#endif
#include "models/statefiltermodel.h"
#include "models/stickermodel.h"
#include "roommanager.h" #include "roommanager.h"
#include "spacehierarchycache.h" #include "spacehierarchycache.h"
#include "urlhelper.h" #include "urlhelper.h"
#include "windowcontroller.h" #include "windowcontroller.h"
#ifdef QUOTIENT_07
#include <keyverificationsession.h> #include <keyverificationsession.h>
#endif
#ifdef HAVE_COLORSCHEME #ifdef HAVE_COLORSCHEME
#include "colorschemer.h" #include "colorschemer.h"
#endif #endif
@@ -179,14 +170,10 @@ int main(int argc, char *argv[])
about.addComponent(QStringLiteral("libQuotient"), about.addComponent(QStringLiteral("libQuotient"),
i18n("A Qt5 library to write cross-platform clients for Matrix"), i18n("A Qt5 library to write cross-platform clients for Matrix"),
#ifdef QUOTIENT_07
i18nc("<version number> (built against <possibly different version number>)", i18nc("<version number> (built against <possibly different version number>)",
"%1 (built against %2)", "%1 (built against %2)",
Quotient::versionString(), Quotient::versionString(),
QStringLiteral(Quotient_VERSION_STRING)), QStringLiteral(Quotient_VERSION_STRING)),
#else
QStringLiteral(QUOTIENT_VERSION),
#endif
QStringLiteral("https://github.com/quotient-im/libquotient"), QStringLiteral("https://github.com/quotient-im/libquotient"),
KAboutLicense::LGPL_V2_1); KAboutLicense::LGPL_V2_1);
@@ -229,11 +216,7 @@ int main(int argc, char *argv[])
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "LoginHelper", login); qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "LoginHelper", login);
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "UrlHelper", &urlHelper); qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "UrlHelper", &urlHelper);
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "EmojiModel", &EmojiModel::instance()); qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "EmojiModel", &EmojiModel::instance());
#ifdef QUOTIENT_07
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "AccountRegistry", &Quotient::Accounts); qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "AccountRegistry", &Quotient::Accounts);
#else
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "AccountRegistry", &Quotient::AccountRegistry::instance());
#endif
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "SpaceHierarchyCache", &SpaceHierarchyCache::instance()); qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "SpaceHierarchyCache", &SpaceHierarchyCache::instance());
qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "CustomEmojiModel", &CustomEmojiModel::instance()); qmlRegisterSingletonInstance("org.kde.neochat", 1, 0, "CustomEmojiModel", &CustomEmojiModel::instance());
qmlRegisterType<ActionsHandler>("org.kde.neochat", 1, 0, "ActionsHandler"); qmlRegisterType<ActionsHandler>("org.kde.neochat", 1, 0, "ActionsHandler");
@@ -260,9 +243,7 @@ int main(int argc, char *argv[])
qmlRegisterType<SearchModel>("org.kde.neochat", 1, 0, "SearchModel"); qmlRegisterType<SearchModel>("org.kde.neochat", 1, 0, "SearchModel");
qmlRegisterType<LiveLocationsModel>("org.kde.neochat", 1, 0, "LiveLocationsModel"); qmlRegisterType<LiveLocationsModel>("org.kde.neochat", 1, 0, "LiveLocationsModel");
qmlRegisterType<LocationsModel>("org.kde.neochat", 1, 0, "LocationsModel"); qmlRegisterType<LocationsModel>("org.kde.neochat", 1, 0, "LocationsModel");
#ifdef QUOTIENT_07
qmlRegisterType<PollHandler>("org.kde.neochat", 1, 0, "PollHandler"); qmlRegisterType<PollHandler>("org.kde.neochat", 1, 0, "PollHandler");
#endif
qmlRegisterType<PushRuleModel>("org.kde.neochat", 1, 0, "PushRuleModel"); qmlRegisterType<PushRuleModel>("org.kde.neochat", 1, 0, "PushRuleModel");
qmlRegisterType<StickerModel>("org.kde.neochat", 1, 0, "StickerModel"); qmlRegisterType<StickerModel>("org.kde.neochat", 1, 0, "StickerModel");
qmlRegisterType<ImagePacksModel>("org.kde.neochat", 1, 0, "ImagePacksModel"); qmlRegisterType<ImagePacksModel>("org.kde.neochat", 1, 0, "ImagePacksModel");
@@ -288,12 +269,10 @@ int main(int argc, char *argv[])
qRegisterMetaType<NeoChatUser *>("NeoChatUser*"); qRegisterMetaType<NeoChatUser *>("NeoChatUser*");
qRegisterMetaType<GetRoomEventsJob *>("GetRoomEventsJob*"); qRegisterMetaType<GetRoomEventsJob *>("GetRoomEventsJob*");
qRegisterMetaType<QMimeType>("QMimeType"); qRegisterMetaType<QMimeType>("QMimeType");
#ifdef QUOTIENT_07
#ifdef Quotient_E2EE_ENABLED #ifdef Quotient_E2EE_ENABLED
qRegisterMetaType<KeyVerificationSession *>("KeyVerificationSession*"); qRegisterMetaType<KeyVerificationSession *>("KeyVerificationSession*");
qmlRegisterUncreatableType<KeyVerificationSession>("org.kde.neochat", 1, 0, "KeyVerificationSession", {}); qmlRegisterUncreatableType<KeyVerificationSession>("org.kde.neochat", 1, 0, "KeyVerificationSession", {});
qRegisterMetaType<QVector<EmojiEntry>>("QVector<EmojiEntry>"); qRegisterMetaType<QVector<EmojiEntry>>("QVector<EmojiEntry>");
#endif
#endif #endif
qmlRegisterSingletonType("org.kde.neochat", 1, 0, "About", [](QQmlEngine *engine, QJSEngine *) -> QJSValue { qmlRegisterSingletonType("org.kde.neochat", 1, 0, "About", [](QQmlEngine *engine, QJSEngine *) -> QJSValue {
return engine->toScriptValue(KAboutData::applicationData()); return engine->toScriptValue(KAboutData::applicationData());

View File

@@ -27,11 +27,7 @@ QVariant AccountEmoticonModel::data(const QModelIndex &index, int role) const
const auto &row = index.row(); const auto &row = index.row();
const auto &image = m_images->images[row]; const auto &image = m_images->images[row];
if (role == UrlRole) { if (role == UrlRole) {
#ifdef QUOTIENT_07
return m_connection->makeMediaUrl(image.url); return m_connection->makeMediaUrl(image.url);
#else
return QUrl();
#endif
} }
if (role == BodyRole) { if (role == BodyRole) {
if (image.body) { if (image.body) {
@@ -142,11 +138,7 @@ QCoro::Task<void> AccountEmoticonModel::doSetEmoticonImage(int index, QUrl sourc
if (job->error() != BaseJob::NoError) { if (job->error() != BaseJob::NoError) {
co_return; co_return;
} }
#ifdef QUOTIENT_07
m_images->images[index].url = job->contentUri().toString(); m_images->images[index].url = job->contentUri().toString();
#else
m_images->images[index].url = job->contentUri();
#endif
m_images->images[index].info = none; m_images->images[index].info = none;
QJsonObject data; QJsonObject data;
m_images->fillJson(&data); m_images->fillJson(&data);

View File

@@ -191,7 +191,6 @@ QVector<ActionsModel::Action> actions{
Q_EMIT room->showMessage(NeoChatRoom::Error, i18nc("'<text>' does not look like a matrix id.", "'%1' does not look like a matrix id.", text)); Q_EMIT room->showMessage(NeoChatRoom::Error, i18nc("'<text>' does not look like a matrix id.", "'%1' does not look like a matrix id.", text));
return QString(); return QString();
} }
#ifdef QUOTIENT_07
const RoomMemberEvent *roomMemberEvent = room->currentState().get<RoomMemberEvent>(text); const RoomMemberEvent *roomMemberEvent = room->currentState().get<RoomMemberEvent>(text);
if (roomMemberEvent && roomMemberEvent->membership() == Membership::Invite) { if (roomMemberEvent && roomMemberEvent->membership() == Membership::Invite) {
Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("<user> is already invited to this room.", "%1 is already invited to this room.", text)); Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("<user> is already invited to this room.", "%1 is already invited to this room.", text));
@@ -201,7 +200,6 @@ QVector<ActionsModel::Action> actions{
Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("<user> is banned from this room.", "%1 is banned from this room.", text)); Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("<user> is banned from this room.", "%1 is banned from this room.", text));
return QString(); return QString();
} }
#endif
if (room->localUser()->id() == text) { if (room->localUser()->id() == text) {
Q_EMIT room->showMessage(NeoChatRoom::Positive, i18n("You are already in this room.")); Q_EMIT room->showMessage(NeoChatRoom::Positive, i18n("You are already in this room."));
return QString(); return QString();
@@ -243,7 +241,6 @@ QVector<ActionsModel::Action> actions{
kli18n("<room alias or id>"), kli18n("<room alias or id>"),
kli18n("Joins the given room"), kli18n("Joins the given room"),
}, },
#ifdef QUOTIENT_07
Action{ Action{
QStringLiteral("knock"), QStringLiteral("knock"),
[](const QString &text, NeoChatRoom *room) { [](const QString &text, NeoChatRoom *room) {
@@ -276,7 +273,6 @@ QVector<ActionsModel::Action> actions{
kli18n("<room alias or id> [<reason>]"), kli18n("<room alias or id> [<reason>]"),
kli18n("Requests to join the given room"), kli18n("Requests to join the given room"),
}, },
#endif
Action{ Action{
QStringLiteral("j"), QStringLiteral("j"),
[](const QString &text, NeoChatRoom *room) { [](const QString &text, NeoChatRoom *room) {
@@ -435,13 +431,11 @@ QVector<ActionsModel::Action> actions{
Q_EMIT room->showMessage(NeoChatRoom::Error, i18nc("'<text>' does not look like a matrix id.", "'%1' does not look like a matrix id.", text)); Q_EMIT room->showMessage(NeoChatRoom::Error, i18nc("'<text>' does not look like a matrix id.", "'%1' does not look like a matrix id.", text));
return QString(); return QString();
} }
#ifdef QUOTIENT_07
auto state = room->currentState().get<RoomMemberEvent>(parts[0]); auto state = room->currentState().get<RoomMemberEvent>(parts[0]);
if (state && state->membership() == Membership::Ban) { if (state && state->membership() == Membership::Ban) {
Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("<user> is already banned from this room.", "%1 is already banned from this room.", text)); Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("<user> is already banned from this room.", "%1 is already banned from this room.", text));
return QString(); return QString();
} }
#endif
auto plEvent = room->getCurrentState<RoomPowerLevelsEvent>(); auto plEvent = room->getCurrentState<RoomPowerLevelsEvent>();
if (plEvent->ban() > plEvent->powerLevelForUser(room->localUser()->id())) { if (plEvent->ban() > plEvent->powerLevelForUser(room->localUser()->id())) {
Q_EMIT room->showMessage(NeoChatRoom::Error, i18n("You are not allowed to ban users from this room.")); Q_EMIT room->showMessage(NeoChatRoom::Error, i18n("You are not allowed to ban users from this room."));
@@ -477,13 +471,11 @@ QVector<ActionsModel::Action> actions{
Q_EMIT room->showMessage(NeoChatRoom::Error, i18n("You are not allowed to unban users from this room.")); Q_EMIT room->showMessage(NeoChatRoom::Error, i18n("You are not allowed to unban users from this room."));
return QString(); return QString();
} }
#ifdef QUOTIENT_07
auto state = room->currentState().get<RoomMemberEvent>(text); auto state = room->currentState().get<RoomMemberEvent>(text);
if (state && state->membership() != Membership::Ban) { if (state && state->membership() != Membership::Ban) {
Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("<user> is not banned from this room.", "%1 is not banned from this room.", text)); Q_EMIT room->showMessage(NeoChatRoom::Info, i18nc("<user> is not banned from this room.", "%1 is not banned from this room.", text));
return QString(); return QString();
} }
#endif
room->unban(text); room->unban(text);
Q_EMIT room->showMessage(NeoChatRoom::Positive, i18nc("<username> was unbanned from this room.", "%1 was unbanned from this room.", text)); Q_EMIT room->showMessage(NeoChatRoom::Positive, i18nc("<username> was unbanned from this room.", "%1 was unbanned from this room.", text));
@@ -510,12 +502,10 @@ QVector<ActionsModel::Action> actions{
Q_EMIT room->showMessage(NeoChatRoom::Error, i18n("You cannot kick yourself from the room.")); Q_EMIT room->showMessage(NeoChatRoom::Error, i18n("You cannot kick yourself from the room."));
return QString(); return QString();
} }
#ifdef QUOTIENT_07
if (!room->isMember(parts[0])) { if (!room->isMember(parts[0])) {
Q_EMIT room->showMessage(NeoChatRoom::Error, i18nc("<username> is not in this room", "%1 is not in this room.", parts[0])); Q_EMIT room->showMessage(NeoChatRoom::Error, i18nc("<username> is not in this room", "%1 is not in this room.", parts[0]));
return QString(); return QString();
} }
#endif
auto plEvent = room->getCurrentState<RoomPowerLevelsEvent>(); auto plEvent = room->getCurrentState<RoomPowerLevelsEvent>();
auto kick = plEvent->kick(); auto kick = plEvent->kick();
if (plEvent->powerLevelForUser(room->localUser()->id()) < kick) { if (plEvent->powerLevelForUser(room->localUser()->id()) < kick) {

View File

@@ -62,11 +62,7 @@ void CustomEmojiModel::addEmoji(const QString &name, const QUrl &location)
auto emojiData = json["images"].toObject(); auto emojiData = json["images"].toObject();
QString url; QString url;
#ifdef QUOTIENT_07
url = job->contentUri().toString(); url = job->contentUri().toString();
#else
url = job->contentUri();
#endif
QImage image(location.toLocalFile()); QImage image(location.toLocalFile());
QJsonObject imageInfo; QJsonObject imageInfo;

View File

@@ -33,13 +33,9 @@ QVariant ImagePacksModel::data(const QModelIndex &index, int role) const
} }
if (role == AvatarUrlRole) { if (role == AvatarUrlRole) {
if (event.pack->avatarUrl) { if (event.pack->avatarUrl) {
#ifdef QUOTIENT_07
return m_room->connection()->makeMediaUrl(*event.pack->avatarUrl); return m_room->connection()->makeMediaUrl(*event.pack->avatarUrl);
#endif
} else if (!event.images.empty()) { } else if (!event.images.empty()) {
#ifdef QUOTIENT_07
return m_room->connection()->makeMediaUrl(event.images[0].url); return m_room->connection()->makeMediaUrl(event.images[0].url);
#endif
} }
} }
return {}; return {};
@@ -106,7 +102,6 @@ void ImagePacksModel::reloadImages()
auto packs = rooms[roomId].toObject(); auto packs = rooms[roomId].toObject();
const auto &stickerRoom = m_room->connection()->room(roomId); const auto &stickerRoom = m_room->connection()->room(roomId);
for (const auto &packKey : packs.keys()) { for (const auto &packKey : packs.keys()) {
#ifdef QUOTIENT_07
if (const auto &pack = stickerRoom->currentState().get<ImagePackEvent>(packKey)) { if (const auto &pack = stickerRoom->currentState().get<ImagePackEvent>(packKey)) {
const auto packContent = pack->content(); const auto packContent = pack->content();
if ((!packContent.pack || !packContent.pack->usage || (packContent.pack->usage->contains("emoticon") && showEmoticons()) if ((!packContent.pack || !packContent.pack->usage || (packContent.pack->usage->contains("emoticon") && showEmoticons())
@@ -115,11 +110,9 @@ void ImagePacksModel::reloadImages()
m_events += packContent; m_events += packContent;
} }
} }
#endif
} }
} }
} }
#ifdef QUOTIENT_07
// Load emoticons from the current room // Load emoticons from the current room
auto events = m_room->currentState().eventsOfType("im.ponies.room_emotes"); auto events = m_room->currentState().eventsOfType("im.ponies.room_emotes");
@@ -132,7 +125,6 @@ void ImagePacksModel::reloadImages()
} }
} }
} }
#endif
Q_EMIT imagesLoaded(); Q_EMIT imagesLoaded();
endResetModel(); endResetModel();
} }

View File

@@ -14,9 +14,7 @@
#include <qt_connection_util.h> #include <qt_connection_util.h>
#include <user.h> #include <user.h>
#ifdef QUOTIENT_07
#include "events/pollevent.h" #include "events/pollevent.h"
#endif
#include "events/stickerevent.h" #include "events/stickerevent.h"
#include <QDebug> #include <QDebug>
@@ -117,11 +115,7 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
if (m_currentRoom->timelineSize() < 10 && !room->allHistoryLoaded()) { if (m_currentRoom->timelineSize() < 10 && !room->allHistoryLoaded()) {
room->getPreviousContent(50); room->getPreviousContent(50);
} }
#ifdef QUOTIENT_07
lastReadEventId = room->lastFullyReadEventId(); lastReadEventId = room->lastFullyReadEventId();
#else
lastReadEventId = room->readMarkerEventId();
#endif
connect(m_currentRoom, &NeoChatRoom::replyLoaded, this, [this](const auto &eventId, const auto &replyId) { connect(m_currentRoom, &NeoChatRoom::replyLoaded, this, [this](const auto &eventId, const auto &replyId) {
Q_UNUSED(replyId); Q_UNUSED(replyId);
auto row = eventIdToRow(eventId); auto row = eventIdToRow(eventId);
@@ -191,11 +185,7 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
} }
if (!m_lastReadEventIndex.isValid()) { if (!m_lastReadEventIndex.isValid()) {
// no read marker, so see if we need to create one. // no read marker, so see if we need to create one.
#ifdef QUOTIENT_07
moveReadMarker(m_currentRoom->lastFullyReadEventId()); moveReadMarker(m_currentRoom->lastFullyReadEventId());
#else
moveReadMarker(m_currentRoom->readMarkerEventId());
#endif
} }
if (biggest < m_currentRoom->maxTimelineIndex()) { if (biggest < m_currentRoom->maxTimelineIndex()) {
auto rowBelowInserted = m_currentRoom->maxTimelineIndex() - biggest + timelineBaseIndex() - 1; auto rowBelowInserted = m_currentRoom->maxTimelineIndex() - biggest + timelineBaseIndex() - 1;
@@ -264,9 +254,6 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
connect(m_currentRoom, &Room::fileTransferProgress, this, &MessageEventModel::refreshEvent); connect(m_currentRoom, &Room::fileTransferProgress, this, &MessageEventModel::refreshEvent);
connect(m_currentRoom, &Room::fileTransferCompleted, this, &MessageEventModel::refreshEvent); connect(m_currentRoom, &Room::fileTransferCompleted, this, &MessageEventModel::refreshEvent);
connect(m_currentRoom, &Room::fileTransferFailed, this, &MessageEventModel::refreshEvent); connect(m_currentRoom, &Room::fileTransferFailed, this, &MessageEventModel::refreshEvent);
#ifndef QUOTIENT_07
connect(m_currentRoom, &Room::fileTransferCancelled, this, &MessageEventModel::refreshEvent);
#endif
connect(m_currentRoom->connection(), &Connection::ignoredUsersListChanged, this, [this] { connect(m_currentRoom->connection(), &Connection::ignoredUsersListChanged, this, [this] {
beginResetModel(); beginResetModel();
endResetModel(); endResetModel();
@@ -532,14 +519,12 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
if (is<const EncryptedEvent>(evt)) { if (is<const EncryptedEvent>(evt)) {
return DelegateType::Encrypted; return DelegateType::Encrypted;
} }
#ifdef QUOTIENT_07
if (is<PollStartEvent>(evt)) { if (is<PollStartEvent>(evt)) {
if (evt.isRedacted()) { if (evt.isRedacted()) {
return DelegateType::Message; return DelegateType::Message;
} }
return DelegateType::Poll; return DelegateType::Poll;
} }
#endif
return DelegateType::Other; return DelegateType::Other;
} }
@@ -811,7 +796,6 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
} }
if (role == ReadMarkersRole) { if (role == ReadMarkersRole) {
#ifdef QUOTIENT_07
auto userIds_temp = room()->userIdsAtEvent(evt.id()); auto userIds_temp = room()->userIdsAtEvent(evt.id());
userIds_temp.remove(m_currentRoom->localUser()->id()); userIds_temp.remove(m_currentRoom->localUser()->id());
@@ -819,19 +803,11 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
if (userIds.count() > 5) { if (userIds.count() > 5) {
userIds = userIds.mid(0, 5); userIds = userIds.mid(0, 5);
} }
#else
auto userIds = room()->usersAtEventId(evt.id());
userIds.removeAll(m_currentRoom->localUser());
#endif
QVariantList users; QVariantList users;
users.reserve(userIds.size()); users.reserve(userIds.size());
for (const auto &userId : userIds) { for (const auto &userId : userIds) {
#ifdef QUOTIENT_07
auto user = static_cast<NeoChatUser *>(m_currentRoom->user(userId)); auto user = static_cast<NeoChatUser *>(m_currentRoom->user(userId));
#else
auto user = static_cast<NeoChatUser *>(userId);
#endif
users += m_currentRoom->getUser(user); users += m_currentRoom->getUser(user);
} }
@@ -839,13 +815,8 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
} }
if (role == ExcessReadMarkersRole) { if (role == ExcessReadMarkersRole) {
#ifdef QUOTIENT_07
auto userIds = room()->userIdsAtEvent(evt.id()); auto userIds = room()->userIdsAtEvent(evt.id());
userIds.remove(m_currentRoom->localUser()->id()); userIds.remove(m_currentRoom->localUser()->id());
#else
auto userIds = room()->usersAtEventId(evt.id());
userIds.removeAll(m_currentRoom->localUser());
#endif
if (userIds.count() > 5) { if (userIds.count() > 5) {
return QStringLiteral("+ ") + QString::number(userIds.count() - 5); return QStringLiteral("+ ") + QString::number(userIds.count() - 5);
@@ -855,24 +826,16 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
} }
if (role == ReadMarkersStringRole) { if (role == ReadMarkersStringRole) {
#ifdef QUOTIENT_07
auto userIds = room()->userIdsAtEvent(evt.id()); auto userIds = room()->userIdsAtEvent(evt.id());
userIds.remove(m_currentRoom->localUser()->id()); userIds.remove(m_currentRoom->localUser()->id());
#else
auto userIds = room()->usersAtEventId(evt.id());
userIds.removeAll(m_currentRoom->localUser());
#endif
/** /**
* The string ends up in the form * The string ends up in the form
* "x users: user1DisplayName, user2DisplayName, etc." * "x users: user1DisplayName, user2DisplayName, etc."
*/ */
QString readMarkersString = i18np("1 user: ", "%1 users: ", userIds.size()); QString readMarkersString = i18np("1 user: ", "%1 users: ", userIds.size());
for (const auto &userId : userIds) { for (const auto &userId : userIds) {
#ifdef QUOTIENT_07
auto user = static_cast<NeoChatUser *>(m_currentRoom->user(userId)); auto user = static_cast<NeoChatUser *>(m_currentRoom->user(userId));
#else
auto user = static_cast<NeoChatUser *>(userId);
#endif
readMarkersString += user->displayname(m_currentRoom) + i18nc("list separator", ", "); readMarkersString += user->displayname(m_currentRoom) + i18nc("list separator", ", ");
} }
readMarkersString.chop(2); readMarkersString.chop(2);
@@ -880,13 +843,8 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
} }
if (role == ShowReadMarkersRole) { if (role == ShowReadMarkersRole) {
#ifdef QUOTIENT_07
auto userIds = room()->userIdsAtEvent(evt.id()); auto userIds = room()->userIdsAtEvent(evt.id());
userIds.remove(m_currentRoom->localUser()->id()); userIds.remove(m_currentRoom->localUser()->id());
#else
auto userIds = room()->usersAtEventId(evt.id());
userIds.removeAll(m_currentRoom->localUser());
#endif
return userIds.size() > 0; return userIds.size() > 0;
} }
@@ -907,14 +865,12 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
} }
if (role == VerifiedRole) { if (role == VerifiedRole) {
#ifdef QUOTIENT_07
#ifdef Quotient_E2EE_ENABLED #ifdef Quotient_E2EE_ENABLED
if (evt.originalEvent()) { if (evt.originalEvent()) {
auto encrypted = dynamic_cast<const EncryptedEvent *>(evt.originalEvent()); auto encrypted = dynamic_cast<const EncryptedEvent *>(evt.originalEvent());
Q_ASSERT(encrypted); Q_ASSERT(encrypted);
return m_currentRoom->connection()->isVerifiedSession(encrypted->sessionId().toLatin1()); return m_currentRoom->connection()->isVerifiedSession(encrypted->sessionId().toLatin1());
} }
#endif
#endif #endif
return false; return false;
} }
@@ -966,22 +922,14 @@ QVariantMap MessageEventModel::getMediaInfoForEvent(const RoomEvent &event) cons
// Get the file info for the event. // Get the file info for the event.
const EventContent::FileInfo *fileInfo; const EventContent::FileInfo *fileInfo;
#ifdef QUOTIENT_07
if (event.is<RoomMessageEvent>()) { if (event.is<RoomMessageEvent>()) {
auto roomMessageEvent = eventCast<const RoomMessageEvent>(&event); auto roomMessageEvent = eventCast<const RoomMessageEvent>(&event);
#else
if (auto roomMessageEvent = eventCast<const RoomMessageEvent>(&event)) {
#endif
if (!roomMessageEvent->hasFileContent()) { if (!roomMessageEvent->hasFileContent()) {
return {}; return {};
} }
fileInfo = roomMessageEvent->content()->fileInfo(); fileInfo = roomMessageEvent->content()->fileInfo();
#ifdef QUOTIENT_07
} else if (event.is<StickerEvent>()) { } else if (event.is<StickerEvent>()) {
auto stickerEvent = eventCast<const StickerEvent>(&event); auto stickerEvent = eventCast<const StickerEvent>(&event);
#else
} else if (auto stickerEvent = eventCast<const StickerEvent>(&event)) {
#endif
fileInfo = &stickerEvent->image(); fileInfo = &stickerEvent->image();
} else { } else {
return {}; return {};
@@ -995,7 +943,6 @@ QVariantMap MessageEventModel::getMediaInfoFromFileInfo(const EventContent::File
QVariantMap mediaInfo; QVariantMap mediaInfo;
// Get the mxc URL for the media. // Get the mxc URL for the media.
#ifdef QUOTIENT_07
if (!fileInfo->url().isValid() || eventId.isEmpty()) { if (!fileInfo->url().isValid() || eventId.isEmpty()) {
mediaInfo["source"] = QUrl(); mediaInfo["source"] = QUrl();
} else { } else {
@@ -1007,13 +954,6 @@ QVariantMap MessageEventModel::getMediaInfoFromFileInfo(const EventContent::File
mediaInfo["source"] = QUrl(); mediaInfo["source"] = QUrl();
} }
} }
#else
auto url = QUrl(m_currentRoom->connection()->homeserver().toString() + "/_matrix/media/r0/download/" + fileInfo->url.toString().remove("mxc://"));
QUrlQuery q(url.query());
q.addQueryItem("allow_remote", "true");
url.setQuery(q);
mediaInfo["source"] = url;
#endif
auto mimeType = fileInfo->mimeType; auto mimeType = fileInfo->mimeType;
// Add the MIME type for the media if available. // Add the MIME type for the media if available.

View File

@@ -132,11 +132,7 @@ void PublicRoomListModel::next(int count)
return; return;
} }
#ifdef QUOTIENT_07
job = m_connection->callApi<QueryPublicRoomsJob>(m_server, count, nextBatch, QueryPublicRoomsJob::Filter{m_keyword, {}}); job = m_connection->callApi<QueryPublicRoomsJob>(m_server, count, nextBatch, QueryPublicRoomsJob::Filter{m_keyword, {}});
#else
job = m_connection->callApi<QueryPublicRoomsJob>(m_server, count, nextBatch, QueryPublicRoomsJob::Filter{m_keyword});
#endif
connect(job, &BaseJob::finished, this, [this] { connect(job, &BaseJob::finished, this, [this] {
attempted = true; attempted = true;
@@ -192,11 +188,7 @@ QVariant PublicRoomListModel::data(const QModelIndex &index, int role) const
if (avatarUrl.isEmpty()) { if (avatarUrl.isEmpty()) {
return ""; return "";
} }
#ifdef QUOTIENT_07
return avatarUrl.url().remove(0, 6); return avatarUrl.url().remove(0, 6);
#else
return avatarUrl.remove(0, 6);
#endif
} }
if (role == TopicRole) { if (role == TopicRole) {
return room.topic; return room.topic;

View File

@@ -23,11 +23,6 @@
#include <QGuiApplication> #include <QGuiApplication>
#include <utility> #include <utility>
#ifndef QUOTIENT_07
#include "notificationsmanager.h"
#include <csapi/notifications.h>
#endif
using namespace Quotient; using namespace Quotient;
Q_DECLARE_METATYPE(Quotient::JoinState) Q_DECLARE_METATYPE(Quotient::JoinState)
@@ -181,71 +176,9 @@ void RoomListModel::connectRoomSignals(NeoChatRoom *room)
connect(room, &Room::pendingEventMerged, this, [this, room] { connect(room, &Room::pendingEventMerged, this, [this, room] {
refresh(room, {LastEventRole, SubtitleTextRole}); refresh(room, {LastEventRole, SubtitleTextRole});
}); });
#ifndef QUOTIENT_07
connect(room, &Room::notificationCountChanged, this, &RoomListModel::handleNotifications);
#endif
#ifndef QUOTIENT_07
connect(room, &Room::notificationCountChanged, this, &RoomListModel::refreshNotificationCount);
#else
connect(room, &Room::unreadStatsChanged, this, &RoomListModel::refreshNotificationCount); connect(room, &Room::unreadStatsChanged, this, &RoomListModel::refreshNotificationCount);
#endif
} }
#ifndef QUOTIENT_07
void RoomListModel::handleNotifications()
{
static bool initial = true;
static QStringList oldNotifications;
auto job = m_connection->callApi<GetNotificationsJob>();
connect(job, &BaseJob::success, this, [this, job]() {
const auto notifications = job->jsonData()["notifications"].toArray();
if (initial) {
initial = false;
for (const auto &n : notifications) {
oldNotifications += n.toObject()["event"].toObject()["event_id"].toString();
}
return;
}
for (const auto &n : notifications) {
const auto notification = n.toObject();
if (notification["read"].toBool()) {
oldNotifications.removeOne(notification["event"].toObject()["event_id"].toString());
continue;
}
if (oldNotifications.contains(notification["event"].toObject()["event_id"].toString())) {
continue;
}
oldNotifications += notification["event"].toObject()["event_id"].toString();
auto room = m_connection->room(notification["room_id"].toString());
auto currentRoom = RoomManager::instance().currentRoom();
bool roomIsActive = currentRoom && room->id() == currentRoom->id();
// If room exists, room is NOT active OR the application is NOT active, show notification
if (room && !(roomIsActive && QGuiApplication::applicationState() == Qt::ApplicationActive)) {
// The room might have been deleted (for example rejected invitation).
auto sender = room->user(notification["event"].toObject()["sender"].toString());
QImage avatar_image;
if (!sender->avatarUrl(room).isEmpty()) {
avatar_image = sender->avatar(128, room);
} else {
avatar_image = room->avatar(128);
}
NotificationsManager::instance().postNotification(dynamic_cast<NeoChatRoom *>(room),
sender->displayname(room),
notification["event"].toObject()["content"].toObject()["body"].toString(),
avatar_image,
notification["event"].toObject()["event_id"].toString(),
true);
}
}
});
}
#endif
int RoomListModel::notificationCount() const int RoomListModel::notificationCount() const
{ {
return m_notificationCount; return m_notificationCount;

View File

@@ -166,9 +166,6 @@ private:
QString m_activeSpaceId = ""; QString m_activeSpaceId = "";
void connectRoomSignals(NeoChatRoom *room); void connectRoomSignals(NeoChatRoom *room);
#ifndef QUOTIENT_07
void handleNotifications();
#endif
Q_SIGNALS: Q_SIGNALS:
void connectionChanged(); void connectionChanged();

View File

@@ -9,9 +9,6 @@
#include <KLocalizedString> #include <KLocalizedString>
#include <connection.h> #include <connection.h>
#ifdef QUOTIENT_07
#endif
using namespace Quotient; using namespace Quotient;
// TODO search only in the current room // TODO search only in the current room
@@ -34,7 +31,6 @@ void SearchModel::setSearchText(const QString &searchText)
void SearchModel::search() void SearchModel::search()
{ {
#ifdef QUOTIENT_07
Q_ASSERT(m_connection); Q_ASSERT(m_connection);
setSearching(true); setSearching(true);
if (m_job) { if (m_job) {
@@ -71,7 +67,6 @@ void SearchModel::search()
m_job = nullptr; m_job = nullptr;
// TODO error handling // TODO error handling
}); });
#endif
} }
Connection *SearchModel::connection() const Connection *SearchModel::connection() const
@@ -87,7 +82,6 @@ void SearchModel::setConnection(Connection *connection)
QVariant SearchModel::data(const QModelIndex &index, int role) const QVariant SearchModel::data(const QModelIndex &index, int role) const
{ {
#ifdef QUOTIENT_07
auto row = index.row(); auto row = index.row();
const auto &event = *m_result->results[row].result; const auto &event = *m_result->results[row].result;
switch (role) { switch (role) {
@@ -174,18 +168,14 @@ QVariant SearchModel::data(const QModelIndex &index, int role) const
return event.contentJson()["m.relates_to"].toObject()["m.in_reply_to"].toObject()["event_id"].toString(); return event.contentJson()["m.relates_to"].toObject()["m.in_reply_to"].toObject()["event_id"].toString();
} }
return MessageEventModel::DelegateType::Message; return MessageEventModel::DelegateType::Message;
#endif
return {};
} }
int SearchModel::rowCount(const QModelIndex &parent) const int SearchModel::rowCount(const QModelIndex &parent) const
{ {
Q_UNUSED(parent); Q_UNUSED(parent);
#ifdef QUOTIENT_07
if (m_result.has_value()) { if (m_result.has_value()) {
return m_result->results.size(); return m_result->results.size();
} }
#endif
return 0; return 0;
} }
@@ -236,7 +226,6 @@ void SearchModel::setRoom(NeoChatRoom *room)
m_room = room; m_room = room;
Q_EMIT roomChanged(); Q_EMIT roomChanged();
#ifdef QUOTIENT_07
connect(m_room, &NeoChatRoom::replyLoaded, this, [this](const auto &eventId, const auto &replyId) { connect(m_room, &NeoChatRoom::replyLoaded, this, [this](const auto &eventId, const auto &replyId) {
Q_UNUSED(replyId); Q_UNUSED(replyId);
const auto &results = m_result->results; const auto &results = m_result->results;
@@ -249,7 +238,6 @@ void SearchModel::setRoom(NeoChatRoom *room)
auto row = it - results.begin(); auto row = it - results.begin();
Q_EMIT dataChanged(index(row, 0), index(row, 0), {ReplyRole, ReplyMediaInfoRole, ReplyAuthorRole}); Q_EMIT dataChanged(index(row, 0), index(row, 0), {ReplyRole, ReplyMediaInfoRole, ReplyAuthorRole});
}); });
#endif
} }
// TODO deduplicate with messageeventmodel // TODO deduplicate with messageeventmodel

View File

@@ -6,9 +6,7 @@
#include <QAbstractListModel> #include <QAbstractListModel>
#include <QString> #include <QString>
#ifdef QUOTIENT_07
#include <csapi/search.h> #include <csapi/search.h>
#endif
namespace Quotient namespace Quotient
{ {
@@ -137,10 +135,8 @@ private:
QString m_searchText; QString m_searchText;
Quotient::Connection *m_connection = nullptr; Quotient::Connection *m_connection = nullptr;
NeoChatRoom *m_room = nullptr; NeoChatRoom *m_room = nullptr;
#ifdef QUOTIENT_07
Quotient::Omittable<Quotient::SearchJob::ResultRoomEvents> m_result = Quotient::none; Quotient::Omittable<Quotient::SearchJob::ResultRoomEvents> m_result = Quotient::none;
Quotient::SearchJob *m_job = nullptr; Quotient::SearchJob *m_job = nullptr;
#endif
bool m_searching = false; bool m_searching = false;
}; };

View File

@@ -95,11 +95,7 @@ void ServerListModel::checkServer(const QString &url)
KConfigGroup serverGroup(&dataResource, "Servers"); KConfigGroup serverGroup(&dataResource, "Servers");
if (!serverGroup.hasKey(url)) { if (!serverGroup.hasKey(url)) {
#ifdef QUOTIENT_07
if (Quotient::isJobPending(m_checkServerJob)) { if (Quotient::isJobPending(m_checkServerJob)) {
#else
if (Quotient::isJobRunning(m_checkServerJob)) {
#endif
m_checkServerJob->abandon(); m_checkServerJob->abandon();
} }

View File

@@ -14,7 +14,6 @@ QHash<int, QByteArray> StateModel::roleNames() const
} }
QVariant StateModel::data(const QModelIndex &index, int role) const QVariant StateModel::data(const QModelIndex &index, int role) const
{ {
#ifdef QUOTIENT_07
auto row = index.row(); auto row = index.row();
switch (role) { switch (role) {
case TypeRole: case TypeRole:
@@ -22,18 +21,13 @@ QVariant StateModel::data(const QModelIndex &index, int role) const
case StateKeyRole: case StateKeyRole:
return m_stateEvents[row].second; return m_stateEvents[row].second;
} }
#endif
return {}; return {};
} }
int StateModel::rowCount(const QModelIndex &parent) const int StateModel::rowCount(const QModelIndex &parent) const
{ {
Q_UNUSED(parent); Q_UNUSED(parent);
#ifdef QUOTIENT_07
return m_room->currentState().events().size(); return m_room->currentState().events().size();
#else
return 0;
#endif
} }
NeoChatRoom *StateModel::room() const NeoChatRoom *StateModel::room() const
@@ -47,16 +41,12 @@ void StateModel::setRoom(NeoChatRoom *room)
Q_EMIT roomChanged(); Q_EMIT roomChanged();
beginResetModel(); beginResetModel();
m_stateEvents.clear(); m_stateEvents.clear();
#ifdef QUOTIENT_07
m_stateEvents = m_room->currentState().events().keys(); m_stateEvents = m_room->currentState().events().keys();
#endif
endResetModel(); endResetModel();
connect(room, &NeoChatRoom::changed, this, [this] { connect(room, &NeoChatRoom::changed, this, [this] {
beginResetModel(); beginResetModel();
m_stateEvents.clear(); m_stateEvents.clear();
#ifdef QUOTIENT_07
m_stateEvents = m_room->currentState().events().keys(); m_stateEvents = m_room->currentState().events().keys();
#endif
endResetModel(); endResetModel();
}); });
} }
@@ -64,11 +54,7 @@ void StateModel::setRoom(NeoChatRoom *room)
QByteArray StateModel::stateEventJson(const QModelIndex &index) QByteArray StateModel::stateEventJson(const QModelIndex &index)
{ {
auto row = index.row(); auto row = index.row();
#ifdef QUOTIENT_07
return QJsonDocument(m_room->currentState().events()[m_stateEvents[row]]->fullJson()).toJson(); return QJsonDocument(m_room->currentState().events()[m_stateEvents[row]]->fullJson()).toJson();
#else
return {};
#endif
} }
#include "moc_statemodel.cpp" #include "moc_statemodel.cpp"

View File

@@ -22,9 +22,7 @@ QVariant StickerModel::data(const QModelIndex &index, int role) const
const auto &row = index.row(); const auto &row = index.row();
const auto &image = m_images[row]; const auto &image = m_images[row];
if (role == UrlRole) { if (role == UrlRole) {
#ifdef QUOTIENT_07
return m_room->connection()->makeMediaUrl(image.url); return m_room->connection()->makeMediaUrl(image.url);
#endif
} }
if (role == BodyRole) { if (role == BodyRole) {
if (image.body) { if (image.body) {

View File

@@ -146,11 +146,7 @@ QVariant UserDirectoryListModel::data(const QModelIndex &index, int role) const
if (avatarUrl.isEmpty()) { if (avatarUrl.isEmpty()) {
return ""; return "";
} }
#ifdef QUOTIENT_07
return avatarUrl.url().remove(0, 6); return avatarUrl.url().remove(0, 6);
#else
return avatarUrl.remove(0, 6);
#endif
} }
if (role == UserIDRole) { if (role == UserIDRole) {
return user.userId; return user.userId;

View File

@@ -82,11 +82,7 @@ QVariant UserListModel::data(const QModelIndex &index, int role) const
return pl->powerLevelForUser(user->id()); return pl->powerLevelForUser(user->id());
} }
if (role == PowerLevelStringRole) { if (role == PowerLevelStringRole) {
#ifdef QUOTIENT_07
auto pl = m_currentRoom->currentState().get<RoomPowerLevelsEvent>(); auto pl = m_currentRoom->currentState().get<RoomPowerLevelsEvent>();
#else
auto pl = m_currentRoom->getCurrentState<RoomPowerLevelsEvent>();
#endif
// User might not in the room yet, in this case pl can be nullptr. // User might not in the room yet, in this case pl can be nullptr.
// e.g. When invited but user not accepted or denied the invitation. // e.g. When invited but user not accepted or denied the invitation.
if (!pl) { if (!pl) {
@@ -124,15 +120,9 @@ void UserListModel::userAdded(Quotient::User *user)
beginInsertRows(QModelIndex(), pos, pos); beginInsertRows(QModelIndex(), pos, pos);
m_users.insert(pos, user); m_users.insert(pos, user);
endInsertRows(); endInsertRows();
#ifdef QUOTIENT_07
connect(user, &User::defaultAvatarChanged, this, [this, user]() { connect(user, &User::defaultAvatarChanged, this, [this, user]() {
refreshUser(user, {AvatarRole}); refreshUser(user, {AvatarRole});
}); });
#else
connect(user, &Quotient::User::avatarChanged, this, [this, user]() {
refreshUser(user, {AvatarRole});
});
#endif
} }
void UserListModel::userRemoved(Quotient::User *user) void UserListModel::userRemoved(Quotient::User *user)
@@ -170,15 +160,9 @@ void UserListModel::refreshAllUsers()
std::sort(m_users.begin(), m_users.end(), m_currentRoom->memberSorter()); std::sort(m_users.begin(), m_users.end(), m_currentRoom->memberSorter());
for (User *user : std::as_const(m_users)) { for (User *user : std::as_const(m_users)) {
#ifdef QUOTIENT_07
connect(user, &User::defaultAvatarChanged, this, [this, user]() { connect(user, &User::defaultAvatarChanged, this, [this, user]() {
refreshUser(user, {AvatarRole}); refreshUser(user, {AvatarRole});
}); });
#else
connect(user, &User::avatarChanged, this, [this, user]() {
refreshUser(user, {AvatarRole});
});
#endif
} }
connect(m_currentRoom->connection(), &Connection::loggedOut, this, [this]() { connect(m_currentRoom->connection(), &Connection::loggedOut, this, [this]() {
setRoom(nullptr); setRoom(nullptr);

View File

@@ -1,107 +0,0 @@
// SPDX-FileCopyrightText: Kitsune Ral <Kitsune-Ral@users.sf.net>
// SPDX-FileCopyrightText: Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: LGPL-2.1-or-later
#include "neochataccountregistry.h"
#include <connection.h>
using namespace Quotient;
void AccountRegistry::add(Connection *c)
{
if (m_accounts.contains(c))
return;
beginInsertRows(QModelIndex(), m_accounts.size(), m_accounts.size());
m_accounts += c;
endInsertRows();
emit accountCountChanged();
}
void AccountRegistry::drop(Connection *c)
{
beginRemoveRows(QModelIndex(), m_accounts.indexOf(c), m_accounts.indexOf(c));
m_accounts.removeOne(c);
endRemoveRows();
Q_ASSERT(!m_accounts.contains(c));
emit accountCountChanged();
}
bool AccountRegistry::isLoggedIn(const QString &userId) const
{
return std::any_of(m_accounts.cbegin(), m_accounts.cend(), [&userId](Connection *a) {
return a->userId() == userId;
});
}
bool AccountRegistry::contains(Connection *c) const
{
return m_accounts.contains(c);
}
AccountRegistry::AccountRegistry() = default;
QVariant AccountRegistry::data(const QModelIndex &index, int role) const
{
if (!index.isValid()) {
return {};
}
if (index.row() >= m_accounts.count()) {
return {};
}
const auto account = m_accounts[index.row()];
switch (role) {
case ConnectionRole:
return QVariant::fromValue(account);
case UserIdRole:
return QVariant::fromValue(account->userId());
default:
return {};
}
return {};
}
int AccountRegistry::rowCount(const QModelIndex &parent) const
{
if (parent.isValid()) {
return 0;
}
return m_accounts.count();
}
QHash<int, QByteArray> AccountRegistry::roleNames() const
{
return {{ConnectionRole, "connection"}, {UserIdRole, "userId"}};
}
bool AccountRegistry::isEmpty() const
{
return m_accounts.isEmpty();
}
int AccountRegistry::count() const
{
return m_accounts.count();
}
const QVector<Connection *> AccountRegistry::accounts() const
{
return m_accounts;
}
Connection *AccountRegistry::get(const QString &userId)
{
for (const auto &connection : m_accounts) {
if (connection->userId() == userId) {
return connection;
}
}
return nullptr;
}
#include "moc_neochataccountregistry.cpp"

View File

@@ -1,54 +0,0 @@
// SPDX-FileCopyrightText: 2020 Kitsune Ral <Kitsune-Ral@users.sf.net>
// SPDX-FileCopyrightText: Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: LGPL-2.1-or-later
#pragma once
#include <QAbstractListModel>
#include <QList>
#include <QObject>
namespace Quotient
{
class Connection;
class AccountRegistry : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(int accountCount READ count NOTIFY accountCountChanged);
public:
enum EventRoles {
ConnectionRole = Qt::UserRole + 1,
UserIdRole = Qt::DisplayRole,
};
static AccountRegistry &instance()
{
static AccountRegistry _instance;
return _instance;
}
const QVector<Connection *> accounts() const;
void add(Connection *a);
void drop(Connection *a);
bool isLoggedIn(const QString &userId) const;
bool isEmpty() const;
int count() const;
bool contains(Connection *) const;
Connection *get(const QString &userId);
[[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
[[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
[[nodiscard]] QHash<int, QByteArray> roleNames() const override;
Q_SIGNALS:
void accountCountChanged();
private:
AccountRegistry();
QVector<Connection *> m_accounts;
};
}

View File

@@ -35,22 +35,15 @@
#include <events/simplestateevents.h> #include <events/simplestateevents.h>
#include <jobs/downloadfilejob.h> #include <jobs/downloadfilejob.h>
#ifndef QUOTIENT_07
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
#include <joinstate.h>
#endif
#endif
#include <qt_connection_util.h> #include <qt_connection_util.h>
#include "controller.h" #include "controller.h"
#include "events/joinrulesevent.h" #include "events/joinrulesevent.h"
#include "neochatconfig.h"
#include "notificationsmanager.h"
#ifdef QUOTIENT_07
#include "events/pollevent.h" #include "events/pollevent.h"
#endif
#include "events/stickerevent.h" #include "events/stickerevent.h"
#include "filetransferpseudojob.h" #include "filetransferpseudojob.h"
#include "neochatconfig.h"
#include "notificationsmanager.h"
#include "texthandler.h" #include "texthandler.h"
#include <KConfig> #include <KConfig>
@@ -195,17 +188,9 @@ QCoro::Task<void> NeoChatRoom::doUploadFile(QUrl url, QString body)
} else { } else {
content = new EventContent::FileContent(url, fileInfo.size(), mime, fileInfo.fileName()); content = new EventContent::FileContent(url, fileInfo.size(), mime, fileInfo.fileName());
} }
#ifdef QUOTIENT_07
QString txnId = postFile(body.isEmpty() ? url.fileName() : body, content); QString txnId = postFile(body.isEmpty() ? url.fileName() : body, content);
#else
QString txnId = postFile(body.isEmpty() ? url.fileName() : body, url, false);
#endif
setHasFileUploading(true); setHasFileUploading(true);
#ifdef QUOTIENT_07
connect(this, &Room::fileTransferCompleted, [this, txnId](const QString &id, FileSourceInfo) { connect(this, &Room::fileTransferCompleted, [this, txnId](const QString &id, FileSourceInfo) {
#else
connect(this, &Room::fileTransferCompleted, [this, txnId](const QString &id, const QUrl & /*localFile*/, const QUrl & /*mxcUrl*/) {
#endif
if (id == txnId) { if (id == txnId) {
setFileUploadingProgress(0); setFileUploadingProgress(0);
setHasFileUploading(false); setHasFileUploading(false);
@@ -302,22 +287,16 @@ const RoomEvent *NeoChatRoom::lastEvent() const
continue; continue;
} }
#ifdef QUOTIENT_07
if (auto lastEvent = eventCast<const StateEvent>(event)) { if (auto lastEvent = eventCast<const StateEvent>(event)) {
#else
if (auto lastEvent = eventCast<const StateEventBase>(event)) {
#endif
return lastEvent; return lastEvent;
} }
if (auto lastEvent = eventCast<const RoomMessageEvent>(event)) { if (auto lastEvent = eventCast<const RoomMessageEvent>(event)) {
return lastEvent; return lastEvent;
} }
#ifdef QUOTIENT_07
if (auto lastEvent = eventCast<const PollStartEvent>(event)) { if (auto lastEvent = eventCast<const PollStartEvent>(event)) {
return lastEvent; return lastEvent;
} }
#endif
} }
if (m_cachedEvent != nullptr) { if (m_cachedEvent != nullptr) {
@@ -506,11 +485,7 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format,
const bool prettyPrint = (format == Qt::RichText); const bool prettyPrint = (format == Qt::RichText);
using namespace Quotient; using namespace Quotient;
#ifdef QUOTIENT_07
return switchOnType( return switchOnType(
#else
return visit(
#endif
evt, evt,
[this, format, stripNewlines](const RoomMessageEvent &e) { [this, format, stripNewlines](const RoomMessageEvent &e) {
using namespace MessageEventContent; using namespace MessageEventContent;
@@ -557,13 +532,8 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format,
// FIXME: Rewind to the name that was at the time of this event // FIXME: Rewind to the name that was at the time of this event
auto subjectName = this->htmlSafeMemberName(e.userId()); auto subjectName = this->htmlSafeMemberName(e.userId());
if (e.membership() == MembershipType::Leave) { if (e.membership() == MembershipType::Leave) {
#ifdef QUOTIENT_07
if (e.prevContent() && e.prevContent()->displayName) { if (e.prevContent() && e.prevContent()->displayName) {
subjectName = sanitized(*e.prevContent()->displayName).toHtmlEscaped(); subjectName = sanitized(*e.prevContent()->displayName).toHtmlEscaped();
#else
if (e.prevContent() && e.prevContent()->displayName.isEmpty()) {
subjectName = sanitized(e.prevContent()->displayName).toHtmlEscaped();
#endif
} }
} }
@@ -611,11 +581,7 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format,
} }
if (e.avatarUrl().isEmpty()) { if (e.avatarUrl().isEmpty()) {
text += i18nc("their refers to a singular user", "cleared their avatar"); text += i18nc("their refers to a singular user", "cleared their avatar");
#ifdef QUOTIENT_07
} else if (!e.prevContent()->avatarUrl) { } else if (!e.prevContent()->avatarUrl) {
#else
} else if (e.prevContent()->avatarUrl.isEmpty()) {
#endif
text += i18n("set an avatar"); text += i18n("set an avatar");
} else { } else {
text += i18nc("their refers to a singular user", "updated their avatar"); text += i18nc("their refers to a singular user", "updated their avatar");
@@ -700,21 +666,15 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format,
return e.stateKey().isEmpty() ? i18n("updated %1 state", e.matrixType()) return e.stateKey().isEmpty() ? i18n("updated %1 state", e.matrixType())
: i18n("updated %1 state for %2", e.matrixType(), e.stateKey().toHtmlEscaped()); : i18n("updated %1 state for %2", e.matrixType(), e.stateKey().toHtmlEscaped());
}, },
#ifdef QUOTIENT_07
[](const PollStartEvent &e) { [](const PollStartEvent &e) {
return e.question(); return e.question();
}, },
#endif
i18n("Unknown event")); i18n("Unknown event"));
} }
QString NeoChatRoom::eventToGenericString(const RoomEvent &evt) const QString NeoChatRoom::eventToGenericString(const RoomEvent &evt) const
{ {
#ifdef QUOTIENT_07
return switchOnType( return switchOnType(
#else
return visit(
#endif
evt, evt,
[](const RoomMessageEvent &e) { [](const RoomMessageEvent &e) {
Q_UNUSED(e) Q_UNUSED(e)
@@ -756,11 +716,7 @@ QString NeoChatRoom::eventToGenericString(const RoomEvent &evt) const
} }
if (e.avatarUrl().isEmpty()) { if (e.avatarUrl().isEmpty()) {
text += i18nc("their refers to a singular user", "cleared their avatar"); text += i18nc("their refers to a singular user", "cleared their avatar");
#ifdef QUOTIENT_07
} else if (!e.prevContent()->avatarUrl) { } else if (!e.prevContent()->avatarUrl) {
#else
} else if (e.prevContent()->avatarUrl.isEmpty()) {
#endif
text += i18n("set an avatar"); text += i18n("set an avatar");
} else { } else {
text += i18nc("their refers to a singular user", "updated their avatar"); text += i18nc("their refers to a singular user", "updated their avatar");
@@ -829,29 +785,19 @@ QString NeoChatRoom::eventToGenericString(const RoomEvent &evt) const
} }
return i18n("updated the state"); return i18n("updated the state");
}, },
#ifdef QUOTIENT_07
[](const PollStartEvent &e) { [](const PollStartEvent &e) {
Q_UNUSED(e); Q_UNUSED(e);
return i18n("started a poll"); return i18n("started a poll");
}, },
#endif
i18n("Unknown event")); i18n("Unknown event"));
} }
void NeoChatRoom::changeAvatar(const QUrl &localFile) void NeoChatRoom::changeAvatar(const QUrl &localFile)
{ {
const auto job = connection()->uploadFile(localFile.toLocalFile()); const auto job = connection()->uploadFile(localFile.toLocalFile());
#ifdef QUOTIENT_07
if (isJobPending(job)) { if (isJobPending(job)) {
#else
if (isJobRunning(job)) {
#endif
connect(job, &BaseJob::success, this, [this, job] { connect(job, &BaseJob::success, this, [this, job] {
#ifdef QUOTIENT_07
connection()->callApi<SetRoomStateWithKeyJob>(id(), "m.room.avatar", QString(), QJsonObject{{"url", job->contentUri().toString()}}); connection()->callApi<SetRoomStateWithKeyJob>(id(), "m.room.avatar", QString(), QJsonObject{{"url", job->contentUri().toString()}});
#else
connection()->callApi<SetRoomStateWithKeyJob>(id(), "m.room.avatar", QString(), QJsonObject{{"url", job->contentUri()}});
#endif
}); });
} }
} }
@@ -987,17 +933,7 @@ void NeoChatRoom::toggleReaction(const QString &eventId, const QString &reaction
bool NeoChatRoom::containsUser(const QString &userID) const bool NeoChatRoom::containsUser(const QString &userID) const
{ {
#ifdef QUOTIENT_07
return memberState(userID) != Membership::Leave; return memberState(userID) != Membership::Leave;
#else
auto u = Room::user(userID);
if (!u) {
return false;
}
return Room::memberJoinState(u) != JoinState::Leave;
#endif
} }
bool NeoChatRoom::canSendEvent(const QString &eventType) const bool NeoChatRoom::canSendEvent(const QString &eventType) const
@@ -1015,24 +951,12 @@ bool NeoChatRoom::canSendState(const QString &eventType) const
auto pl = plEvent->powerLevelForState(eventType); auto pl = plEvent->powerLevelForState(eventType);
auto currentPl = plEvent->powerLevelForUser(localUser()->id()); auto currentPl = plEvent->powerLevelForUser(localUser()->id());
#ifndef QUOTIENT_07
if (eventType == "m.room.history_visibility" || eventType == "org.matrix.room.preview_urls") {
return false;
} else {
return currentPl >= pl;
}
#else
return currentPl >= pl; return currentPl >= pl;
#endif
} }
bool NeoChatRoom::readMarkerLoaded() const bool NeoChatRoom::readMarkerLoaded() const
{ {
#ifdef QUOTIENT_07
const auto it = findInTimeline(lastFullyReadEventId()); const auto it = findInTimeline(lastFullyReadEventId());
#else
const auto it = findInTimeline(readMarkerEventId());
#endif
return it != historyEdge(); return it != historyEdge();
} }
@@ -1067,21 +991,13 @@ void NeoChatRoom::setJoinRule(const QString &joinRule)
qWarning() << "Power level too low to set join rules"; qWarning() << "Power level too low to set join rules";
return; return;
} }
#ifdef QUOTIENT_07
setState("m.room.join_rules", "", QJsonObject{{"join_rule", joinRule}}); setState("m.room.join_rules", "", QJsonObject{{"join_rule", joinRule}});
#else
setState<JoinRulesEvent>(QJsonObject{{"type", "m.room.join_rules"}, {"state_key", ""}, {"content", QJsonObject{{"join_rule", joinRule}}}});
#endif
// Not emitting joinRuleChanged() here, since that would override the change in the UI with the *current* value, which is not the *new* value. // Not emitting joinRuleChanged() here, since that would override the change in the UI with the *current* value, which is not the *new* value.
} }
QString NeoChatRoom::historyVisibility() const QString NeoChatRoom::historyVisibility() const
{ {
#ifdef QUOTIENT_07
return currentState().get("m.room.history_visibility")->contentJson()["history_visibility"_ls].toString(); return currentState().get("m.room.history_visibility")->contentJson()["history_visibility"_ls].toString();
#else
return getCurrentState("m.room.history_visibility")->contentJson()["history_visibility"_ls].toString();
#endif
} }
void NeoChatRoom::setHistoryVisibility(const QString &historyVisibilityRule) void NeoChatRoom::setHistoryVisibility(const QString &historyVisibilityRule)
@@ -1091,23 +1007,13 @@ void NeoChatRoom::setHistoryVisibility(const QString &historyVisibilityRule)
return; return;
} }
#ifdef QUOTIENT_07
setState("m.room.history_visibility", "", QJsonObject{{"history_visibility", historyVisibilityRule}}); setState("m.room.history_visibility", "", QJsonObject{{"history_visibility", historyVisibilityRule}});
#else
qWarning() << "Quotient 0.7 required to set history visibility";
return;
#endif
// Not emitting historyVisibilityChanged() here, since that would override the change in the UI with the *current* value, which is not the *new* value. // Not emitting historyVisibilityChanged() here, since that would override the change in the UI with the *current* value, which is not the *new* value.
} }
bool NeoChatRoom::defaultUrlPreviewState() const bool NeoChatRoom::defaultUrlPreviewState() const
{ {
#ifdef QUOTIENT_07
auto urlPreviewsDisabled = currentState().get("org.matrix.room.preview_urls"); auto urlPreviewsDisabled = currentState().get("org.matrix.room.preview_urls");
#else
auto urlPreviewsDisabled = getCurrentState("org.matrix.room.preview_urls");
#endif
// Some rooms will not have this state event set so check for a nullptr return. // Some rooms will not have this state event set so check for a nullptr return.
if (urlPreviewsDisabled != nullptr) { if (urlPreviewsDisabled != nullptr) {
@@ -1153,12 +1059,7 @@ void NeoChatRoom::setDefaultUrlPreviewState(const bool &defaultUrlPreviewState)
* *
* You just have to set disable to true to disable URL previews by default. * You just have to set disable to true to disable URL previews by default.
*/ */
#ifdef QUOTIENT_07
setState("org.matrix.room.preview_urls", "", QJsonObject{{"disable", !defaultUrlPreviewState}}); setState("org.matrix.room.preview_urls", "", QJsonObject{{"disable", !defaultUrlPreviewState}});
#else
qWarning() << "Quotient 0.7 required to set room default url preview setting";
return;
#endif
} }
bool NeoChatRoom::urlPreviewEnabled() const bool NeoChatRoom::urlPreviewEnabled() const
@@ -1196,32 +1097,20 @@ void NeoChatRoom::setUserPowerLevel(const QString &userID, const int &powerLevel
qWarning() << "Power level too low to set user power levels"; qWarning() << "Power level too low to set user power levels";
return; return;
} }
#ifdef QUOTIENT_07
if (!isMember(userID)) { if (!isMember(userID)) {
#else
if (memberJoinState(user(userID)) == JoinState::Join) {
#endif
qWarning() << "User is not a member of this room so power level cannot be set"; qWarning() << "User is not a member of this room so power level cannot be set";
return; return;
} }
int clampPowerLevel = std::clamp(powerLevel, 0, 100); int clampPowerLevel = std::clamp(powerLevel, 0, 100);
#ifdef QUOTIENT_07
auto powerLevelContent = currentState().get("m.room.power_levels")->contentJson(); auto powerLevelContent = currentState().get("m.room.power_levels")->contentJson();
#else
auto powerLevelContent = getCurrentState<RoomPowerLevelsEvent>()->contentJson();
#endif
auto powerLevelUserOverrides = powerLevelContent["users"].toObject(); auto powerLevelUserOverrides = powerLevelContent["users"].toObject();
if (powerLevelUserOverrides[userID] != clampPowerLevel) { if (powerLevelUserOverrides[userID] != clampPowerLevel) {
powerLevelUserOverrides[userID] = clampPowerLevel; powerLevelUserOverrides[userID] = clampPowerLevel;
powerLevelContent["users"] = powerLevelUserOverrides; powerLevelContent["users"] = powerLevelUserOverrides;
#ifdef QUOTIENT_07
setState("m.room.power_levels", "", powerLevelContent); setState("m.room.power_levels", "", powerLevelContent);
#else
setState<RoomPowerLevelsEvent>(QJsonObject{{"type", "m.room.power_levels"}, {"state_key", ""}, {"content", powerLevelContent}});
#endif
} }
} }
@@ -1233,11 +1122,7 @@ int NeoChatRoom::getUserPowerLevel(const QString &userId) const
int NeoChatRoom::powerLevel(const QString &eventName, const bool &isStateEvent) const int NeoChatRoom::powerLevel(const QString &eventName, const bool &isStateEvent) const
{ {
#ifdef QUOTIENT_07
const auto powerLevelEvent = currentState().get<RoomPowerLevelsEvent>(); const auto powerLevelEvent = currentState().get<RoomPowerLevelsEvent>();
#else
const auto powerLevelEvent = getCurrentState<RoomPowerLevelsEvent>();
#endif
if (eventName == "ban") { if (eventName == "ban") {
return powerLevelEvent->ban(); return powerLevelEvent->ban();
} else if (eventName == "kick") { } else if (eventName == "kick") {
@@ -1261,11 +1146,7 @@ int NeoChatRoom::powerLevel(const QString &eventName, const bool &isStateEvent)
void NeoChatRoom::setPowerLevel(const QString &eventName, const int &newPowerLevel, const bool &isStateEvent) void NeoChatRoom::setPowerLevel(const QString &eventName, const int &newPowerLevel, const bool &isStateEvent)
{ {
#ifdef QUOTIENT_07
auto powerLevelContent = currentState().get("m.room.power_levels")->contentJson(); auto powerLevelContent = currentState().get("m.room.power_levels")->contentJson();
#else
auto powerLevelContent = getCurrentState<RoomPowerLevelsEvent>()->contentJson();
#endif
int clampPowerLevel = std::clamp(newPowerLevel, 0, 100); int clampPowerLevel = std::clamp(newPowerLevel, 0, 100);
int powerLevel = 0; int powerLevel = 0;
@@ -1294,11 +1175,7 @@ void NeoChatRoom::setPowerLevel(const QString &eventName, const int &newPowerLev
} }
} }
#ifdef QUOTIENT_07
setState("m.room.power_levels", "", powerLevelContent); setState("m.room.power_levels", "", powerLevelContent);
#else
setState<RoomPowerLevelsEvent>(QJsonObject{{"type", "m.room.power_levels"}, {"state_key", ""}, {"content", powerLevelContent}});
#endif
} }
int NeoChatRoom::defaultUserPowerLevel() const int NeoChatRoom::defaultUserPowerLevel() const
@@ -1521,11 +1398,7 @@ bool NeoChatRoom::isSpace()
return false; return false;
} }
#ifdef QUOTIENT_07
return creationEvent->roomType() == RoomType::Space; return creationEvent->roomType() == RoomType::Space;
#else
return false;
#endif
} }
PushNotificationState::State NeoChatRoom::pushNotificationState() const PushNotificationState::State NeoChatRoom::pushNotificationState() const
@@ -1919,15 +1792,12 @@ void NeoChatRoom::editLastMessage()
bool NeoChatRoom::canEncryptRoom() const bool NeoChatRoom::canEncryptRoom() const
{ {
#ifdef QUOTIENT_07
#ifdef Quotient_E2EE_ENABLED #ifdef Quotient_E2EE_ENABLED
return !usesEncryption() && canSendState("m.room.encryption"); return !usesEncryption() && canSendState("m.room.encryption");
#endif
#endif #endif
return false; return false;
} }
#ifdef QUOTIENT_07
PollHandler *NeoChatRoom::poll(const QString &eventId) PollHandler *NeoChatRoom::poll(const QString &eventId)
{ {
if (!m_polls.contains(eventId)) { if (!m_polls.contains(eventId)) {
@@ -1938,7 +1808,6 @@ PollHandler *NeoChatRoom::poll(const QString &eventId)
} }
return m_polls[eventId]; return m_polls[eventId];
} }
#endif
bool NeoChatRoom::downloadTempFile(const QString &eventId) bool NeoChatRoom::downloadTempFile(const QString &eventId)
{ {
@@ -2054,7 +1923,6 @@ QByteArray NeoChatRoom::roomAcountDataJson(const QString &eventType)
QUrl NeoChatRoom::avatarForMember(NeoChatUser *user) const QUrl NeoChatRoom::avatarForMember(NeoChatUser *user) const
{ {
#ifdef QUOTIENT_07
const auto &url = memberAvatarUrl(user->id()); const auto &url = memberAvatarUrl(user->id());
if (url.isEmpty()) { if (url.isEmpty()) {
return {}; return {};
@@ -2065,13 +1933,6 @@ QUrl NeoChatRoom::avatarForMember(NeoChatUser *user) const
} else { } else {
return QUrl(); return QUrl();
} }
#else
QUrl url(QStringLiteral("mxc://%1").arg(user->avatarMediaId()));
QUrlQuery q(url.query());
q.addQueryItem(QStringLiteral("user_id"), user->id());
url.setQuery(q);
return url;
#endif
} }
const RoomEvent *NeoChatRoom::getReplyForEvent(const RoomEvent &event) const const RoomEvent *NeoChatRoom::getReplyForEvent(const RoomEvent &event) const

View File

@@ -592,16 +592,6 @@ public:
QString htmlSafeDisplayName() const; QString htmlSafeDisplayName() const;
#ifndef QUOTIENT_07
/**
* @brief Get a display name for the user with html escaped.
*/
Q_INVOKABLE QString htmlSafeMemberName(const QString &userId) const
{
return safeMemberName(userId).toHtmlEscaped();
}
#endif
/** /**
* @brief Get subtitle text for room * @brief Get subtitle text for room
* *
@@ -812,7 +802,6 @@ public:
*/ */
Q_INVOKABLE void editLastMessage(); Q_INVOKABLE void editLastMessage();
#ifdef QUOTIENT_07
/** /**
* @brief Get a PollHandler object for the given event Id. * @brief Get a PollHandler object for the given event Id.
* *
@@ -824,7 +813,6 @@ public:
* @sa PollHandler * @sa PollHandler
*/ */
Q_INVOKABLE PollHandler *poll(const QString &eventId); Q_INVOKABLE PollHandler *poll(const QString &eventId);
#endif
/** /**
* @brief Get the full Json data for a given room account data event. * @brief Get the full Json data for a given room account data event.
@@ -873,9 +861,7 @@ private:
QVector<Mention> m_mentions; QVector<Mention> m_mentions;
QVector<Mention> m_editMentions; QVector<Mention> m_editMentions;
QString m_savedText; QString m_savedText;
#ifdef QUOTIENT_07
QCache<QString, PollHandler> m_polls; QCache<QString, PollHandler> m_polls;
#endif
std::vector<Quotient::event_ptr_tt<Quotient::RoomEvent>> m_extraEvents; std::vector<Quotient::event_ptr_tt<Quotient::RoomEvent>> m_extraEvents;
private Q_SLOTS: private Q_SLOTS:

View File

@@ -11,11 +11,7 @@
#include <KNotification> #include <KNotification>
#include <KNotificationReplyAction> #include <KNotificationReplyAction>
#ifdef QUOTIENT_07
#include <accountregistry.h> #include <accountregistry.h>
#else
#include "neochataccountregistry.h"
#endif
#include <connection.h> #include <connection.h>
#include <csapi/pushrules.h> #include <csapi/pushrules.h>
@@ -41,7 +37,6 @@ NotificationsManager::NotificationsManager(QObject *parent)
{ {
} }
#ifdef QUOTIENT_07
void NotificationsManager::handleNotifications(QPointer<Connection> connection) void NotificationsManager::handleNotifications(QPointer<Connection> connection)
{ {
if (!m_connActiveJob.contains(connection->user()->id())) { if (!m_connActiveJob.contains(connection->user()->id())) {
@@ -53,7 +48,6 @@ void NotificationsManager::handleNotifications(QPointer<Connection> connection)
}); });
} }
} }
#endif
void NotificationsManager::processNotificationJob(QPointer<Quotient::Connection> connection, Quotient::GetNotificationsJob *job, bool initialization) void NotificationsManager::processNotificationJob(QPointer<Quotient::Connection> connection, Quotient::GetNotificationsJob *job, bool initialization)
{ {
@@ -219,11 +213,7 @@ void NotificationsManager::postNotification(NeoChatRoom *room,
return; return;
} }
if (room->localUser()->id() != Controller::instance().activeConnection()->userId()) { if (room->localUser()->id() != Controller::instance().activeConnection()->userId()) {
#ifdef QUOTIENT_07
Controller::instance().setActiveConnection(Accounts.get(room->localUser()->id())); Controller::instance().setActiveConnection(Accounts.get(room->localUser()->id()));
#else
Controller::instance().setActiveConnection(AccountRegistry::instance().get(room->localUser()->id()));
#endif
} }
RoomManager::instance().enterRoom(room); RoomManager::instance().enterRoom(room);
}); });

View File

@@ -77,12 +77,10 @@ public:
*/ */
void clearInvitationNotification(const QString &roomId); void clearInvitationNotification(const QString &roomId);
#ifdef QUOTIENT_07
/** /**
* @brief Handle the notifications for the given connection. * @brief Handle the notifications for the given connection.
*/ */
void handleNotifications(QPointer<Quotient::Connection> connection); void handleNotifications(QPointer<Quotient::Connection> connection);
#endif
private: private:
explicit NotificationsManager(QObject *parent = nullptr); explicit NotificationsManager(QObject *parent = nullptr);

View File

@@ -11,9 +11,7 @@
#include <QQuickTextDocument> #include <QQuickTextDocument>
#include <QStandardPaths> #include <QStandardPaths>
#include <csapi/joining.h> #include <csapi/joining.h>
#ifdef QUOTIENT_07
#include <csapi/knocking.h> #include <csapi/knocking.h>
#endif
#include <qt_connection_util.h> #include <qt_connection_util.h>
#include <user.h> #include <user.h>
@@ -166,16 +164,12 @@ UriResolveResult RoomManager::visitUser(User *user, const QString &action)
{ {
if (action == "mention" || action.isEmpty()) { if (action == "mention" || action.isEmpty()) {
// send it has QVariantMap because the properties in the // send it has QVariantMap because the properties in the
#ifdef QUOTIENT_07
user->load(); user->load();
#endif
Q_EMIT showUserDetail(user); Q_EMIT showUserDetail(user);
} else if (action == "_interactive") { } else if (action == "_interactive") {
user->requestDirectChat(); user->requestDirectChat();
} else if (action == "chat") { } else if (action == "chat") {
#ifdef QUOTIENT_07
user->load(); user->load();
#endif
Q_EMIT askDirectChatConfirmation(user); Q_EMIT askDirectChatConfirmation(user);
} else { } else {
return Quotient::IncorrectAction; return Quotient::IncorrectAction;
@@ -218,8 +212,6 @@ void RoomManager::joinRoom(Quotient::Connection *account, const QString &roomAli
}); });
} }
// TODO: maybe need use the function upstream later
#ifdef QUOTIENT_07
void RoomManager::knockRoom(Quotient::Connection *account, const QString &roomAliasOrId, const QString &reason, const QStringList &viaServers) void RoomManager::knockRoom(Quotient::Connection *account, const QString &roomAliasOrId, const QString &reason, const QStringList &viaServers)
{ {
auto *const job = account->callApi<KnockRoomJob>(roomAliasOrId, viaServers, reason); auto *const job = account->callApi<KnockRoomJob>(roomAliasOrId, viaServers, reason);
@@ -237,7 +229,6 @@ void RoomManager::knockRoom(Quotient::Connection *account, const QString &roomAl
} }
}); });
} }
#endif
bool RoomManager::visitNonMatrix(const QUrl &url) bool RoomManager::visitNonMatrix(const QUrl &url)
{ {

View File

@@ -133,8 +133,6 @@ public:
*/ */
Q_INVOKABLE bool visitNonMatrix(const QUrl &url) override; Q_INVOKABLE bool visitNonMatrix(const QUrl &url) override;
// TODO: it need also override in the feature?
#ifdef QUOTIENT_07
/** /**
* @brief Knock a room. * @brief Knock a room.
* *
@@ -142,7 +140,6 @@ public:
* knocking on rooms. * knocking on rooms.
*/ */
void knockRoom(Quotient::Connection *account, const QString &roomAliasOrId, const QString &reason, const QStringList &viaServers); void knockRoom(Quotient::Connection *account, const QString &roomAliasOrId, const QString &reason, const QStringList &viaServers);
#endif
/** /**
* @brief Open the given resource. * @brief Open the given resource.

View File

@@ -3,9 +3,7 @@
#include "spacehierarchycache.h" #include "spacehierarchycache.h"
#ifdef QUOTIENT_07
#include <csapi/space_hierarchy.h> #include <csapi/space_hierarchy.h>
#endif
#include <qt_connection_util.h> #include <qt_connection_util.h>
#include "controller.h" #include "controller.h"
@@ -26,7 +24,6 @@ SpaceHierarchyCache::SpaceHierarchyCache(QObject *parent)
void SpaceHierarchyCache::cacheSpaceHierarchy() void SpaceHierarchyCache::cacheSpaceHierarchy()
{ {
#ifdef QUOTIENT_07
auto connection = Controller::instance().activeConnection(); auto connection = Controller::instance().activeConnection();
if (!connection) { if (!connection) {
return; return;
@@ -45,7 +42,6 @@ void SpaceHierarchyCache::cacheSpaceHierarchy()
}); });
} }
} }
#endif
} }
void SpaceHierarchyCache::populateSpaceHierarchy(const QString &spaceId) void SpaceHierarchyCache::populateSpaceHierarchy(const QString &spaceId)
@@ -54,7 +50,6 @@ void SpaceHierarchyCache::populateSpaceHierarchy(const QString &spaceId)
if (!connection) { if (!connection) {
return; return;
} }
#ifdef QUOTIENT_07
auto job = connection->callApi<GetSpaceHierarchyJob>(spaceId); auto job = connection->callApi<GetSpaceHierarchyJob>(spaceId);
connect(job, &BaseJob::success, this, [this, job, spaceId]() { connect(job, &BaseJob::success, this, [this, job, spaceId]() {
@@ -68,7 +63,6 @@ void SpaceHierarchyCache::populateSpaceHierarchy(const QString &spaceId)
m_spaceHierarchy.insert(spaceId, roomList); m_spaceHierarchy.insert(spaceId, roomList);
Q_EMIT spaceHierarchyChanged(); Q_EMIT spaceHierarchyChanged();
}); });
#endif
} }
void SpaceHierarchyCache::addSpaceToHierarchy(Quotient::Room *room) void SpaceHierarchyCache::addSpaceToHierarchy(Quotient::Room *room)

View File

@@ -100,18 +100,10 @@ QString TextHandler::handleRecieveRichText(Qt::TextFormat inputFormat, const Neo
QRegularExpressionMatchIterator i = TextRegex::mxcImage.globalMatch(m_dataBuffer); QRegularExpressionMatchIterator i = TextRegex::mxcImage.globalMatch(m_dataBuffer);
while (i.hasNext()) { while (i.hasNext()) {
const QRegularExpressionMatch match = i.next(); const QRegularExpressionMatch match = i.next();
#ifdef QUOTIENT_07
const QUrl mediaUrl = room->makeMediaUrl(event->id(), QUrl(QStringLiteral("mxc://") + match.captured(2) + u'/' + match.captured(3))); const QUrl mediaUrl = room->makeMediaUrl(event->id(), QUrl(QStringLiteral("mxc://") + match.captured(2) + u'/' + match.captured(3)));
m_dataBuffer.replace(match.captured(0), m_dataBuffer.replace(match.captured(0),
QStringLiteral("<img ") + match.captured(1) + QStringLiteral("src=\"") + mediaUrl.toString() + u'"' + match.captured(4) QStringLiteral("<img ") + match.captured(1) + QStringLiteral("src=\"") + mediaUrl.toString() + u'"' + match.captured(4)
+ u'>'); + u'>');
#else
auto url = room->connection()->homeserver();
auto base = url.scheme() + QStringLiteral("://") + url.host() + (url.port() != -1 ? ':' + QString::number(url.port()) : QString());
m_dataBuffer.replace(match.captured(0),
QStringLiteral("<img ") + match.captured(1) + QStringLiteral("src=\"") + base + QStringLiteral("/_matrix/media/r0/download/")
+ match.captured(2) + u'/' + match.captured(3) + u'"' + match.captured(4) + u'>');
#endif
} }
} }
@@ -330,11 +322,7 @@ bool TextHandler::isAllowedLink(const QString &link, bool isImg)
const QUrl linkUrl = QUrl(link); const QUrl linkUrl = QUrl(link);
if (isImg) { if (isImg) {
#ifdef QUOTIENT_07
return !linkUrl.isRelative() && linkUrl.scheme() == "mxc"; return !linkUrl.isRelative() && linkUrl.scheme() == "mxc";
#else
return !linkUrl.isRelative() && (linkUrl.scheme() == "mxc" || linkUrl.scheme() == "https");
#endif
} else { } else {
return !linkUrl.isRelative() && allowedLinkSchemes.contains(linkUrl.scheme()); return !linkUrl.isRelative() && allowedLinkSchemes.contains(linkUrl.scheme());
} }