diff --git a/CMakeLists.txt b/CMakeLists.txt index 73647d26e..e310c1787 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,10 +85,6 @@ set_package_properties(Quotient PROPERTIES PURPOSE "Talk with matrix server" ) -if(${Quotient_VERSION_MINOR} GREATER 6) - message(SEND_ERROR "NeoChat cannot be compiled against a 0.7 version of libQuotient. Use a 0.6 version instead") -endif() - find_package(cmark) set_package_properties(cmark PROPERTIES TYPE REQUIRED diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 87d58ead3..842dc4e81 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -31,6 +31,10 @@ add_executable(neochat ../res.qrc ) +if(${Quotient_VERSION_MINOR} GREATER 6) + target_compile_definitions(neochat PRIVATE QUOTIENT_07) +endif() + ecm_add_app_icon(NEOCHAT_ICON ICONS ${CMAKE_SOURCE_DIR}/128-logo.png) target_sources(neochat PRIVATE ${NEOCHAT_ICON}) diff --git a/src/controller.cpp b/src/controller.cpp index aa03c2cad..454ba3da7 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -395,7 +395,11 @@ void Controller::playAudio(const QUrl &localFile) void Controller::changeAvatar(Connection *conn, const QUrl &localFile) { auto job = conn->uploadFile(localFile.toLocalFile()); +#ifdef QUOTIENT_07 + if(isJobPending(job)) { +#else if (isJobRunning(job)) { +#endif connect(job, &BaseJob::success, this, [conn, job] { conn->callApi(conn->userId(), job->contentUri()); }); diff --git a/src/neochatroom.cpp b/src/neochatroom.cpp index 5b6646efc..10e3e9ffd 100644 --- a/src/neochatroom.cpp +++ b/src/neochatroom.cpp @@ -392,7 +392,11 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format, } if (e.avatarUrl().isEmpty()) { text += i18nc("their refers to a singular user", "cleared their avatar"); +#ifdef QUOTIENT_07 + } else if (!e.prevContent()->avatarUrl) { +#else } else if (e.prevContent()->avatarUrl.isEmpty()) { +#endif text += i18n("set an avatar"); } else { text += i18nc("their refers to a singular user", "updated their avatar"); @@ -451,7 +455,11 @@ QString NeoChatRoom::eventToString(const RoomEvent &evt, Qt::TextFormat format, void NeoChatRoom::changeAvatar(const QUrl &localFile) { const auto job = connection()->uploadFile(localFile.toLocalFile()); +#ifdef QUOTIENT_07 + if(isJobPending(job)) { +#else if (isJobRunning(job)) { +#endif connect(job, &BaseJob::success, this, [this, job] { connection()->callApi(id(), "m.room.avatar", localUser()->id(), QJsonObject{{"url", job->contentUri()}}); }); diff --git a/src/userlistmodel.cpp b/src/userlistmodel.cpp index edab621bb..0a79b45bb 100644 --- a/src/userlistmodel.cpp +++ b/src/userlistmodel.cpp @@ -48,7 +48,13 @@ void UserListModel::setRoom(Quotient::Room *room) std::sort(m_users.begin(), m_users.end(), room->memberSorter()); } for (User *user : qAsConst(m_users)) { +#ifdef QUOTIENT_07 + connect(user, &User::defaultAvatarChanged, this, [=](){ + avatarChanged(user, m_currentRoom); + }); +#else connect(user, &User::avatarChanged, this, &UserListModel::avatarChanged); +#endif } connect(m_currentRoom->connection(), &Connection::loggedOut, this, [=] { setRoom(nullptr); @@ -147,7 +153,13 @@ void UserListModel::userAdded(Quotient::User *user) beginInsertRows(QModelIndex(), pos, pos); m_users.insert(pos, user); endInsertRows(); +#ifdef QUOTIENT_07 + connect(user, &User::defaultAvatarChanged, this, [=](){ + avatarChanged(user, m_currentRoom); + }); +#else connect(user, &Quotient::User::avatarChanged, this, &UserListModel::avatarChanged); +#endif } void UserListModel::userRemoved(Quotient::User *user)