From 19835af3cf1eaa1e4e60915fd60ebcb271d01900 Mon Sep 17 00:00:00 2001 From: blue Date: Sun, 12 Nov 2023 19:55:32 -0300 Subject: [PATCH] some debug, fix a crash removing a currently selected contact --- CMakeLists.txt | 5 +++++ core/account.h | 2 +- core/delayManager/manager.cpp | 4 ++-- core/handlers/messagehandler.cpp | 15 +++++++++++++-- core/handlers/omemohandler.cpp | 10 +++++++++- core/handlers/omemohandler.h | 2 +- main/main.cpp | 2 +- packaging/Archlinux/PKGBUILD | 2 +- ui/widgets/messageline/feedview.cpp | 12 +++++++----- 9 files changed, 40 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 552cba9..280fb22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,11 +136,16 @@ if (NOT SYSTEM_QXMPP) target_include_directories(squawk PRIVATE ${CMAKE_SOURCE_DIR}/external/qxmpp/src/omemo) target_include_directories(squawk PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/external/qxmpp/src/omemo) set(BUILD_OMEMO ON) + set(BUILD_TESTS OFF) else () set(BUILD_OMEMO OFF) endif () add_subdirectory(external/qxmpp) + if (WITH_OMEMO) + target_include_directories(QXmppOmemoQt${QT_VERSION_MAJOR} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/external/qxmpp/src) + endif() + target_link_libraries(squawk PRIVATE QXmppQt${QT_VERSION_MAJOR}) if (WITH_OMEMO) target_link_libraries(squawk PRIVATE QXmppOmemoQt${QT_VERSION_MAJOR}) diff --git a/core/account.h b/core/account.h index b156059..47c5c7e 100644 --- a/core/account.h +++ b/core/account.h @@ -61,7 +61,7 @@ #include "handlers/discoveryhandler.h" #ifdef WITH_OMEMO -#include +#include #include #include "handlers/trusthandler.h" #include "handlers/omemohandler.h" diff --git a/core/delayManager/manager.cpp b/core/delayManager/manager.cpp index 3281bc6..07d6431 100644 --- a/core/delayManager/manager.cpp +++ b/core/delayManager/manager.cpp @@ -368,9 +368,9 @@ void Core::DelayManager::Manager::receivedBundles(const QString& jid, const std: Job::Id jobId = itr->second; requestedBundles.erase(itr); std::map::const_iterator jitr = runningJobs.find(jobId); - if (jitr == runningJobs.end()) { + if (jitr == runningJobs.end()) throw JobNotFound(jobId, "receivedBundles"); - } + Job* jb = jitr->second; InfoForUser* job = dynamic_cast(jb); diff --git a/core/handlers/messagehandler.cpp b/core/handlers/messagehandler.cpp index 2c8526a..f9b331f 100644 --- a/core/handlers/messagehandler.cpp +++ b/core/handlers/messagehandler.cpp @@ -357,28 +357,36 @@ std::pair Core::MessageHandler::scheduleSending if (task.isFinished()) { const QXmppE2eeExtension::MessageEncryptResult& res = task.result(); if (std::holds_alternative>(res)) { + qDebug() << "Successfully encrypted a message"; const std::unique_ptr& encrypted = std::get>(res); encrypted->setBody(QString()); encrypted->setOutOfBandUrl(QString()); bool success = acc->client.sendPacket(*encrypted.get()); - if (success) + if (success) { + qDebug() << "Successfully sent an encrypted message"; return {Shared::Message::State::sent, ""}; - else + } else { + qDebug() << "Couldn't sent an encrypted message"; return {Shared::Message::State::error, "Error sending successfully encrypted message"}; + } } else if (std::holds_alternative(res)) { + qDebug() << "Couldn't encrypt a message"; const QXmppError& err = std::get(res); return {Shared::Message::State::error, err.description}; } else { + qDebug() << "Couldn't encrypt a message"; return {Shared::Message::State::error, "Unexpected error ecryptng the message"}; } } else { task.then(this, [this, id] (QXmppE2eeExtension::MessageEncryptResult&& result) { if (std::holds_alternative>(result)) { + qDebug() << "Successfully encrypted a message"; const std::unique_ptr& encrypted = std::get>(result); encrypted->setBody(QString()); encrypted->setOutOfBandUrl(QString()); bool success = acc->client.sendPacket(*encrypted.get()); if (success) { + qDebug() << "Successfully sent an encrypted message"; std::tuple ids = getOriginalPendingMessageId(id, false); if (std::get<0>(ids)) { QString id = std::get<1>(ids); @@ -393,12 +401,15 @@ std::pair Core::MessageHandler::scheduleSending qDebug() << "Encrypted message has been successfully sent, but it couldn't be found to update the sate"; } } else { + qDebug() << "Couldn't sent an encrypted message"; handlePendingMessageError(id, "Error sending successfully encrypted message"); } } else if (std::holds_alternative(result)) { + qDebug() << "Couldn't encrypt a message"; const QXmppError& err = std::get(result); handlePendingMessageError(id, err.description); } else { + qDebug() << "Couldn't encrypt a message"; handlePendingMessageError(id, "Unexpected error ecryptng the message"); } }); diff --git a/core/handlers/omemohandler.cpp b/core/handlers/omemohandler.cpp index 41cee76..7f7c53b 100644 --- a/core/handlers/omemohandler.cpp +++ b/core/handlers/omemohandler.cpp @@ -169,7 +169,15 @@ void Core::OmemoHandler::getDevices(const QString& jid, std::list::const_iterator itr = devs.begin(), end = devs.end(); itr != end; ++itr) { const Device& dev = itr.value(); - out.emplace_back(itr.key(), dev.keyId, dev.label, QDateTime(), Shared::TrustLevel::undecided, Shared::EncryptionProtocol::omemo2, false); + out.emplace_back( + itr.key(), + dev.keyId, + dev.label, + dev.removalFromDeviceListDate, + Shared::TrustLevel::undecided, + Shared::EncryptionProtocol::omemo2, + false + ); } } diff --git a/core/handlers/omemohandler.h b/core/handlers/omemohandler.h index 60fd8d1..2d46546 100644 --- a/core/handlers/omemohandler.h +++ b/core/handlers/omemohandler.h @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include diff --git a/main/main.cpp b/main/main.cpp index 06c2c95..f810dbb 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -24,7 +24,7 @@ #include #ifdef WITH_OMEMO -#include +#include #endif int main(int argc, char *argv[]) { diff --git a/packaging/Archlinux/PKGBUILD b/packaging/Archlinux/PKGBUILD index 6e63901..bd9c981 100644 --- a/packaging/Archlinux/PKGBUILD +++ b/packaging/Archlinux/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: Yury Gubich pkgname=squawk -pkgver=0.2.2 +pkgver=0.2.3 pkgrel=1 pkgdesc="An XMPP desktop messenger, written on pure c++ (qt)" arch=('i686' 'x86_64') diff --git a/ui/widgets/messageline/feedview.cpp b/ui/widgets/messageline/feedview.cpp index 43d0218..41e4484 100644 --- a/ui/widgets/messageline/feedview.cpp +++ b/ui/widgets/messageline/feedview.cpp @@ -133,10 +133,13 @@ void FeedView::dataChanged(const QModelIndex& topLeft, const QModelIndex& bottom void FeedView::updateGeometries() { //qDebug() << "updateGeometries"; - QScrollBar* bar = verticalScrollBar(); - - const QStyle* st = style(); const QAbstractItemModel* m = model(); + if (m == nullptr) + return QAbstractItemView::updateGeometries(); + + QScrollBar* bar = verticalScrollBar(); + const QStyle* st = style(); + QSize layoutBounds = maximumViewportSize(); QStyleOptionViewItem option = viewOptions(); option.rect.setHeight(maxMessageHeight); @@ -210,9 +213,8 @@ void FeedView::updateGeometries() { positionProgress(); - if (specialDelegate) { + if (specialDelegate) clearWidgetsMode = true; - } QAbstractItemView::updateGeometries(); }