commit 01e9a813d786d7d95bc2c5e382312e3007cc993ee4dbaaec0e4ec870a174ed14 Author: Christophe Marin Date: Wed Nov 13 12:02:29 2024 +0000 enabled support for KUnifiedPush OBS-URL: https://build.opensuse.org/package/show/KDE:Applications/neochat?expand=0&rev=51 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/0001-Cherry-pick-compatability-changes-for-libquotient-0.patch b/0001-Cherry-pick-compatability-changes-for-libquotient-0.patch new file mode 100644 index 0000000..133db4c --- /dev/null +++ b/0001-Cherry-pick-compatability-changes-for-libquotient-0.patch @@ -0,0 +1,532 @@ +From eb802ff91f98204784d87db61a698b4038b7ef84 Mon Sep 17 00:00:00 2001 +From: James Graham +Date: Sat, 26 Oct 2024 07:47:15 +0000 +Subject: [PATCH] Cherry pick compatability changes for libquotient 0.9 + +Title +--- + src/actionshandler.cpp | 8 ++ + src/eventhandler.cpp | 151 +++++++++++++++++++++++------ + src/eventhandler.h | 12 ++- + src/models/messagecontentmodel.cpp | 18 +++- + src/models/messageeventmodel.cpp | 5 + + src/neochatroom.cpp | 44 ++++++++- + 6 files changed, 199 insertions(+), 39 deletions(-) + +diff --git a/src/actionshandler.cpp b/src/actionshandler.cpp +index e5ddaadbd..c47b780b1 100644 +--- a/src/actionshandler.cpp ++++ b/src/actionshandler.cpp +@@ -91,10 +91,18 @@ void ActionsHandler::handleMessage(const QString &text, QString handledText, Cha + + for (auto it = m_room->messageEvents().crbegin(); it != m_room->messageEvents().crend(); it++) { + if (const auto event = eventCast(&**it)) { ++#if Quotient_VERSION_MINOR > 8 ++ if (event->senderId() == m_room->localMember().id() && event->has()) { ++#else + if (event->senderId() == m_room->localMember().id() && event->hasTextContent()) { ++#endif + QString originalString; + if (event->content()) { ++#if Quotient_VERSION_MINOR > 8 ++ originalString = event->get()->body; ++#else + originalString = static_cast(event->content())->body; ++#endif + } else { + originalString = event->plainBody(); + } +diff --git a/src/eventhandler.cpp b/src/eventhandler.cpp +index 8cad14601..6b02ade67 100644 +--- a/src/eventhandler.cpp ++++ b/src/eventhandler.cpp +@@ -9,6 +9,8 @@ + + #include + #include ++#include ++#include + #include + #include + #include +@@ -234,10 +236,18 @@ QString EventHandler::rawMessageBody(const Quotient::RoomMessageEvent &event) + { + QString body; + ++#if Quotient_VERSION_MINOR > 8 ++ if (event.has()) { ++#else + if (event.hasFileContent()) { ++#endif + // if filename is given or body is equal to filename, + // then body is a caption ++#if Quotient_VERSION_MINOR > 8 ++ QString filename = event.get()->originalName; ++#else + QString filename = event.content()->fileInfo()->originalName; ++#endif + QString body = event.plainBody(); + if (filename.isEmpty() || filename == body) { + return QString(); +@@ -245,8 +255,13 @@ QString EventHandler::rawMessageBody(const Quotient::RoomMessageEvent &event) + return body; + } + ++#if Quotient_VERSION_MINOR > 8 ++ if (event.has() && event.content()) { ++ body = event.get()->body; ++#else + if (event.hasTextContent() && event.content()) { + body = static_cast(event.content())->body; ++#endif + } else { + body = event.plainBody(); + } +@@ -461,11 +476,16 @@ QString EventHandler::getMessageBody(const RoomMessageEvent &event, Qt::TextForm + { + TextHandler textHandler; + ++#if Quotient_VERSION_MINOR > 8 ++ if (event.has()) { ++ QString fileCaption = event.get()->originalName; ++#else + if (event.hasFileContent()) { + auto fileCaption = event.content()->fileInfo()->originalName; ++#endif + if (fileCaption.isEmpty()) { + fileCaption = event.plainBody(); +- } else if (event.content()->fileInfo()->originalName != event.plainBody()) { ++ } else if (fileCaption != event.plainBody()) { + fileCaption = event.plainBody() + " | "_ls + fileCaption; + } + textHandler.setData(fileCaption); +@@ -473,8 +493,13 @@ QString EventHandler::getMessageBody(const RoomMessageEvent &event, Qt::TextForm + } + + QString body; ++#if Quotient_VERSION_MINOR > 8 ++ if (event.has() && event.content()) { ++ body = event.get()->body; ++#else + if (event.hasTextContent() && event.content()) { + body = static_cast(event.content())->body; ++#endif + } else { + body = event.plainBody(); + } +@@ -655,39 +680,65 @@ QVariantMap EventHandler::getMediaInfoForEvent(const Quotient::RoomEvent *event) + // Get the file info for the event. + if (event->is()) { + auto roomMessageEvent = eventCast(event); ++#if Quotient_VERSION_MINOR > 8 ++ if (!roomMessageEvent->has()) { ++#else + if (!roomMessageEvent->hasFileContent()) { ++#endif + return {}; + } + +- const EventContent::FileInfo *fileInfo; +- fileInfo = roomMessageEvent->content()->fileInfo(); +- QVariantMap mediaInfo = getMediaInfoFromFileInfo(fileInfo, eventId, false, false); ++#if Quotient_VERSION_MINOR > 8 ++ const auto content = roomMessageEvent->get(); ++ QVariantMap mediaInfo = getMediaInfoFromFileInfo(content.get(), eventId, false, false); ++#else ++ const auto content = static_cast(roomMessageEvent->content()); ++ QVariantMap mediaInfo = getMediaInfoFromFileInfo(content, eventId, false, false); ++#endif + // if filename isn't specifically given, it is in body + // https://spec.matrix.org/latest/client-server-api/#mfile +- mediaInfo["filename"_ls] = (fileInfo->originalName.isEmpty()) ? roomMessageEvent->plainBody() : fileInfo->originalName; ++#if Quotient_VERSION_MINOR > 8 ++ mediaInfo["filename"_ls] = content->commonInfo().originalName.isEmpty() ? roomMessageEvent->plainBody() : content->commonInfo().originalName; ++#else ++ mediaInfo["filename"_ls] = (content->fileInfo()->originalName.isEmpty()) ? roomMessageEvent->plainBody() : content->fileInfo()->originalName; ++#endif + + return mediaInfo; + } else if (event->is()) { +- const EventContent::FileInfo *fileInfo; +- + auto stickerEvent = eventCast(event); +- fileInfo = &stickerEvent->image(); ++ auto content = &stickerEvent->image(); + +- return getMediaInfoFromFileInfo(fileInfo, eventId, false, true); ++ return getMediaInfoFromFileInfo(content, eventId, false, true); + } else { + return {}; + } + } + +-QVariantMap EventHandler::getMediaInfoFromFileInfo(const EventContent::FileInfo *fileInfo, const QString &eventId, bool isThumbnail, bool isSticker) const ++QVariantMap EventHandler::getMediaInfoFromFileInfo( ++#if Quotient_VERSION_MINOR > 8 ++ const Quotient::EventContent::FileContentBase *fileContent, ++#else ++ const Quotient::EventContent::TypedBase *fileContent, ++#endif ++ const QString &eventId, ++ bool isThumbnail, ++ bool isSticker) const + { + QVariantMap mediaInfo; + + // Get the mxc URL for the media. +- if (!fileInfo->url().isValid() || fileInfo->url().scheme() != QStringLiteral("mxc") || eventId.isEmpty()) { ++#if Quotient_VERSION_MINOR > 8 ++ if (!fileContent->url().isValid() || fileContent->url().scheme() != QStringLiteral("mxc") || eventId.isEmpty()) { ++#else ++ if (!fileContent->fileInfo()->url().isValid() || fileContent->fileInfo()->url().scheme() != QStringLiteral("mxc") || eventId.isEmpty()) { ++#endif + mediaInfo["source"_ls] = QUrl(); + } else { +- QUrl source = m_room->makeMediaUrl(eventId, fileInfo->url()); ++#if Quotient_VERSION_MINOR > 8 ++ QUrl source = m_room->makeMediaUrl(eventId, fileContent->url()); ++#else ++ QUrl source = m_room->makeMediaUrl(eventId, fileContent->fileInfo()->url()); ++#endif + + if (source.isValid()) { + mediaInfo["source"_ls] = source; +@@ -696,7 +747,7 @@ QVariantMap EventHandler::getMediaInfoFromFileInfo(const EventContent::FileInfo + } + } + +- auto mimeType = fileInfo->mimeType; ++ auto mimeType = fileContent->type(); + // Add the MIME type for the media if available. + mediaInfo["mimeType"_ls] = mimeType.name(); + +@@ -704,45 +755,53 @@ QVariantMap EventHandler::getMediaInfoFromFileInfo(const EventContent::FileInfo + mediaInfo["mimeIcon"_ls] = mimeType.iconName(); + + // Add media size if available. +- mediaInfo["size"_ls] = fileInfo->payloadSize; ++#if Quotient_VERSION_MINOR > 8 ++ mediaInfo["size"_ls] = fileContent->commonInfo().payloadSize; ++#else ++ mediaInfo["size"_ls] = static_cast(fileContent)->fileInfo()->payloadSize; ++#endif + + mediaInfo["isSticker"_ls] = isSticker; + + // Add parameter depending on media type. + if (mimeType.name().contains(QStringLiteral("image"))) { +- if (auto castInfo = static_cast(fileInfo)) { ++ if (auto castInfo = static_cast(fileContent)) { ++#if Quotient_VERSION_MINOR > 8 + mediaInfo["width"_ls] = castInfo->imageSize.width(); + mediaInfo["height"_ls] = castInfo->imageSize.height(); ++#else ++ const auto imageInfo = static_cast(castInfo->fileInfo()); ++ mediaInfo["width"_ls] = imageInfo->imageSize.width(); ++ mediaInfo["height"_ls] = imageInfo->imageSize.height(); ++#endif + + // TODO: Images in certain formats (e.g. WebP) will be erroneously marked as animated, even if they are static. + mediaInfo["animated"_ls] = QMovie::supportedFormats().contains(mimeType.preferredSuffix().toUtf8()); + +- if (!isThumbnail) { +- QVariantMap tempInfo; +- auto thumbnailInfo = getMediaInfoFromFileInfo(castInfo->thumbnailInfo(), eventId, true); +- if (thumbnailInfo["source"_ls].toUrl().scheme() == "mxc"_ls) { +- tempInfo = thumbnailInfo; ++ QVariantMap tempInfo; ++ auto thumbnailInfo = getMediaInfoFromTumbnail(castInfo->thumbnail, eventId); ++ if (thumbnailInfo["source"_ls].toUrl().scheme() == "mxc"_ls) { ++ tempInfo = thumbnailInfo; ++ } else { ++ QString blurhash = castInfo->originalInfoJson["xyz.amorgan.blurhash"_ls].toString(); ++ if (blurhash.isEmpty()) { ++ tempInfo["source"_ls] = QUrl(); + } else { +- QString blurhash = castInfo->originalInfoJson["xyz.amorgan.blurhash"_ls].toString(); +- if (blurhash.isEmpty()) { +- tempInfo["source"_ls] = QUrl(); +- } else { +- tempInfo["source"_ls] = QUrl("image://blurhash/"_ls + blurhash); +- } ++ tempInfo["source"_ls] = QUrl("image://blurhash/"_ls + blurhash); + } +- mediaInfo["tempInfo"_ls] = tempInfo; + } ++ mediaInfo["tempInfo"_ls] = tempInfo; + } + } + if (mimeType.name().contains(QStringLiteral("video"))) { +- if (auto castInfo = static_cast(fileInfo)) { ++ if (auto castInfo = static_cast(fileContent)) { + mediaInfo["width"_ls] = castInfo->imageSize.width(); + mediaInfo["height"_ls] = castInfo->imageSize.height(); + mediaInfo["duration"_ls] = castInfo->duration; + + if (!isThumbnail) { + QVariantMap tempInfo; +- auto thumbnailInfo = getMediaInfoFromFileInfo(castInfo->thumbnailInfo(), eventId, true); ++ auto thumbnailInfo = getMediaInfoFromTumbnail(castInfo->thumbnail, eventId); + if (thumbnailInfo["source"_ls].toUrl().scheme() == "mxc"_ls) { + tempInfo = thumbnailInfo; + } else { +@@ -758,7 +817,7 @@ QVariantMap EventHandler::getMediaInfoFromFileInfo(const EventContent::FileInfo + } + } + if (mimeType.name().contains(QStringLiteral("audio"))) { +- if (auto castInfo = static_cast(fileInfo)) { ++ if (auto castInfo = static_cast(fileContent)) { + mediaInfo["duration"_ls] = castInfo->duration; + } + } +@@ -766,6 +825,38 @@ QVariantMap EventHandler::getMediaInfoFromFileInfo(const EventContent::FileInfo + return mediaInfo; + } + ++QVariantMap EventHandler::getMediaInfoFromTumbnail(const Quotient::EventContent::Thumbnail &thumbnail, const QString &eventId) const ++{ ++ QVariantMap thumbnailInfo; ++ ++ if (!thumbnail.url().isValid() || thumbnail.url().scheme() != QStringLiteral("mxc") || eventId.isEmpty()) { ++ thumbnailInfo["source"_ls] = QUrl(); ++ } else { ++ QUrl source = m_room->makeMediaUrl(eventId, thumbnail.url()); ++ ++ if (source.isValid()) { ++ thumbnailInfo["source"_ls] = source; ++ } else { ++ thumbnailInfo["source"_ls] = QUrl(); ++ } ++ } ++ ++ auto mimeType = thumbnail.mimeType; ++ // Add the MIME type for the media if available. ++ thumbnailInfo["mimeType"_ls] = mimeType.name(); ++ ++ // Add the MIME type icon if available. ++ thumbnailInfo["mimeIcon"_ls] = mimeType.iconName(); ++ ++ // Add media size if available. ++ thumbnailInfo["size"_ls] = thumbnail.payloadSize; ++ ++ thumbnailInfo["width"_ls] = thumbnail.imageSize.width(); ++ thumbnailInfo["height"_ls] = thumbnail.imageSize.height(); ++ ++ return thumbnailInfo; ++} ++ + bool EventHandler::hasReply() const + { + if (m_event == nullptr) { +diff --git a/src/eventhandler.h b/src/eventhandler.h +index 277273c9e..6a3520882 100644 +--- a/src/eventhandler.h ++++ b/src/eventhandler.h +@@ -339,6 +339,14 @@ private: + QString getMessageBody(const Quotient::RoomMessageEvent &event, Qt::TextFormat format, bool stripNewlines) const; + + QVariantMap getMediaInfoForEvent(const Quotient::RoomEvent *event) const; +- QVariantMap +- getMediaInfoFromFileInfo(const Quotient::EventContent::FileInfo *fileInfo, const QString &eventId, bool isThumbnail = false, bool isSticker = false) const; ++ QVariantMap getMediaInfoFromFileInfo( ++#if Quotient_VERSION_MINOR > 8 ++ const Quotient::EventContent::FileContentBase *fileContent, ++#else ++ const Quotient::EventContent::TypedBase *fileContent, ++#endif ++ const QString &eventId, ++ bool isThumbnail = false, ++ bool isSticker = false) const; ++ QVariantMap getMediaInfoFromTumbnail(const Quotient::EventContent::Thumbnail &thumbnail, const QString &eventId) const; + }; +diff --git a/src/models/messagecontentmodel.cpp b/src/models/messagecontentmodel.cpp +index 7de11f274..ac1756f84 100644 +--- a/src/models/messagecontentmodel.cpp ++++ b/src/models/messagecontentmodel.cpp +@@ -7,6 +7,7 @@ + + #include + ++#include + #include + #include + #include +@@ -445,10 +446,19 @@ QList MessageContentModel::componentsForType(MessageComponentT + auto fileTransferInfo = m_room->cachedFileTransferInfo(m_event.get()); + + #ifndef Q_OS_ANDROID +- Q_ASSERT(event->content() != nullptr && event->content()->fileInfo() != nullptr); ++#if Quotient_VERSION_MINOR > 8 ++ Q_ASSERT(event->content() != nullptr && event->has()); ++ const QMimeType mimeType = event->get()->mimeType; ++#else ++ Q_ASSERT(event->content() != nullptr && event->hasFileContent()); + const QMimeType mimeType = event->content()->fileInfo()->mimeType; ++#endif + if (mimeType.name() == QStringLiteral("text/plain") || mimeType.parentMimeTypes().contains(QStringLiteral("text/plain"))) { ++#if Quotient_VERSION_MINOR > 8 ++ QString originalName = event->get()->originalName; ++#else + QString originalName = event->content()->fileInfo()->originalName; ++#endif + if (originalName.isEmpty()) { + originalName = event->plainBody(); + } +@@ -571,8 +581,12 @@ void MessageContentModel::updateItineraryModel() + } + + if (auto event = eventCast(m_event)) { ++#if Quotient_VERSION_MINOR > 8 ++ if (event->has()) { ++#else + if (event->hasFileContent()) { +- auto filePath = m_room->cachedFileTransferInfo(m_event.get()).localPath; ++#endif ++ auto filePath = m_room->cachedFileTransferInfo(event).localPath; + if (filePath.isEmpty() && m_itineraryModel != nullptr) { + delete m_itineraryModel; + m_itineraryModel = nullptr; +diff --git a/src/models/messageeventmodel.cpp b/src/models/messageeventmodel.cpp +index 09c738d0e..784fcd36e 100644 +--- a/src/models/messageeventmodel.cpp ++++ b/src/models/messageeventmodel.cpp +@@ -8,6 +8,7 @@ + #include "neochatconfig.h" + + #include ++#include + #include + #include + #include +@@ -498,7 +499,11 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const + + if (role == ProgressInfoRole) { + if (auto e = eventCast(&evt)) { ++#if Quotient_VERSION_MINOR > 8 ++ if (e->has()) { ++#else + if (e->hasFileContent()) { ++#endif + return QVariant::fromValue(m_currentRoom->cachedFileTransferInfo(&evt)); + } + } +diff --git a/src/neochatroom.cpp b/src/neochatroom.cpp +index f5b1eb57b..8f4201e58 100644 +--- a/src/neochatroom.cpp ++++ b/src/neochatroom.cpp +@@ -9,6 +9,7 @@ + #include + #include + ++#include + #include + #include + #include +@@ -76,11 +77,16 @@ NeoChatRoom::NeoChatRoom(Connection *connection, QString roomId, JoinState joinS + const auto m_event = evtIt->viewAs(); + QString mxcUrl; + if (auto event = eventCast(m_event)) { ++#if Quotient_VERSION_MINOR > 8 ++ if (event->has()) { ++ mxcUrl = event->get()->url().toString(); ++#else + if (event->hasFileContent()) { + mxcUrl = event->content()->fileInfo()->url().toString(); ++#endif + } + } else if (auto event = eventCast(m_event)) { +- mxcUrl = event->image().fileInfo()->url().toString(); ++ mxcUrl = event->image().url().toString(); + } + if (mxcUrl.isEmpty()) { + return; +@@ -255,7 +261,11 @@ QCoro::Task NeoChatRoom::doUploadFile(QUrl url, QString body) + auto mime = QMimeDatabase().mimeTypeForUrl(url); + url.setScheme("file"_ls); + QFileInfo fileInfo(url.isLocalFile() ? url.toLocalFile() : url.toString()); ++#if Quotient_VERSION_MINOR > 8 ++ EventContent::FileContentBase *content; ++#else + EventContent::TypedBase *content; ++#endif + if (mime.name().startsWith("image/"_ls)) { + QImage image(url.toLocalFile()); + content = new EventContent::ImageContent(url, fileInfo.size(), mime, image.size(), fileInfo.fileName()); +@@ -270,7 +280,11 @@ QCoro::Task NeoChatRoom::doUploadFile(QUrl url, QString body) + } else { + content = new EventContent::FileContent(url, fileInfo.size(), mime, fileInfo.fileName()); + } ++#if Quotient_VERSION_MINOR > 8 ++ QString txnId = postFile(body.isEmpty() ? url.fileName() : body, std::unique_ptr(content)); ++#else + QString txnId = postFile(body.isEmpty() ? url.fileName() : body, content); ++#endif + setHasFileUploading(true); + connect(this, &Room::fileTransferCompleted, [this, txnId](const QString &id, FileSourceInfo) { + if (id == txnId) { +@@ -396,8 +410,13 @@ bool NeoChatRoom::lastEventIsSpoiler() const + { + if (auto event = lastEvent()) { + if (auto e = eventCast(event)) { ++#if Quotient_VERSION_MINOR > 8 ++ if (e->has() && e->content() && e->mimeType().name() == "text/html"_ls) { ++ auto htmlBody = e->get()->body; ++#else + if (e->hasTextContent() && e->content() && e->mimeType().name() == "text/html"_ls) { + auto htmlBody = static_cast(e->content())->body; ++#endif + return htmlBody.contains("data-mx-spoiler"_ls); + } + } +@@ -1456,7 +1475,11 @@ void NeoChatRoom::openEventMediaExternally(const QString &eventId) + const auto evtIt = findInTimeline(eventId); + if (evtIt != messageEvents().rend() && is(**evtIt)) { + const auto event = evtIt->viewAs(); ++#if Quotient_VERSION_MINOR > 8 ++ if (event->has()) { ++#else + if (event->hasFileContent()) { ++#endif + const auto transferInfo = cachedFileTransferInfo(event); + if (transferInfo.completed()) { + UrlHelper helper; +@@ -1489,7 +1512,11 @@ void NeoChatRoom::copyEventMedia(const QString &eventId) + const auto evtIt = findInTimeline(eventId); + if (evtIt != messageEvents().rend() && is(**evtIt)) { + const auto event = evtIt->viewAs(); ++#if Quotient_VERSION_MINOR > 8 ++ if (event->has()) { ++#else + if (event->hasFileContent()) { ++#endif + const auto transferInfo = fileTransferInfo(eventId); + if (transferInfo.completed()) { + Clipboard clipboard; +@@ -1522,13 +1549,20 @@ FileTransferInfo NeoChatRoom::cachedFileTransferInfo(const Quotient::RoomEvent * + QString mxcUrl; + int total = 0; + if (auto evt = eventCast(event)) { ++#if Quotient_VERSION_MINOR > 8 ++ if (evt->has()) { ++ const auto fileContent = evt->get(); ++#else + if (evt->hasFileContent()) { +- mxcUrl = evt->content()->fileInfo()->url().toString(); +- total = evt->content()->fileInfo()->payloadSize; ++ const auto fileContent = evt->content()->fileInfo(); ++#endif ++ ++ mxcUrl = fileContent->url().toString(); ++ total = fileContent->payloadSize; + } + } else if (auto evt = eventCast(event)) { +- mxcUrl = evt->image().fileInfo()->url().toString(); +- total = evt->image().fileInfo()->payloadSize; ++ mxcUrl = evt->image().url().toString(); ++ total = evt->image().payloadSize; + } + + FileTransferInfo transferInfo = fileTransferInfo(event->id()); +-- +2.47.0 + diff --git a/applications.keyring b/applications.keyring new file mode 100644 index 0000000..2998088 Binary files /dev/null and b/applications.keyring differ diff --git a/neochat-24.05.2.tar.xz b/neochat-24.05.2.tar.xz new file mode 100644 index 0000000..01ade2c --- /dev/null +++ b/neochat-24.05.2.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfd419a87cbbe5fecbd7833189255ee2f582b4e1fb0f4f88bdef7e60a92fbc8f +size 980740 diff --git a/neochat-24.05.2.tar.xz.sig b/neochat-24.05.2.tar.xz.sig new file mode 100644 index 0000000..a194d97 --- /dev/null +++ b/neochat-24.05.2.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE2BwMs463Je9mkcOFu0YzUNbvMe8FAmaDnTEACgkQu0YzUNbv +Me+NtQ/9GvS+JIQ/Q2lIz7j+kHAM8AB/+iU2QT/9EEwUB1C43KnGr71xK/SW9Cnc +Ug1ctNLE1kuDu1cfOo59+MY/ite1r4lksGl/3lGFUe6OGexbkfj9sArtFrm2ci4+ +JIiNfceGgFIrVcDotyDEqyoSrRTpeT33IIlNbmB6TrJmPNPQtnHwE4CPp1K7/oXK +/YEYfikYJ7FJ3a329qQ6IqiX9pNGNYnA10Hnh7fFEIrEqPPjQOG/0wIOXYtZHdfK +sjWYpxkXm47NDuvJdh40oRYYFEPfnsTMyalA08jZ/v7LJk6tii2UPkQXDW3QRdj5 +1CHgtScM5bmwvpOqPoPmC3tldS3aQQmevRARIKucXfp2cG+oXvWWejOM+rcFCQK9 +/B8E+M8Yg5emLUNGHmnC0yp7TnwjY3E5SQO43Vvu3o87pM+VICP9q2tjtM1p41dH +TbGVMEJghD502IGS49zXTDpgxmvcfEY1DcfaaMIQTEvlc2vYEYiF9iYlBka/snUb +1UjvwIpZE6XPkV1eZx0QZEjwE9lqrIwImKp+gqOFWvMlDsc/nw4BgzbofNApZFkU +rDtBiUpRUJzCUBR0mGY+u45RT+PfMsZ4jwTCK7b7HS/CFBlMgNEB+QIrlA3hH7Hd +s6D27AhtAfNv6BO2gmmghrq7mp1NPqZd7OonOrIm6HpM12LVo/U= +=uTZj +-----END PGP SIGNATURE----- diff --git a/neochat-24.08.0.tar.xz b/neochat-24.08.0.tar.xz new file mode 100644 index 0000000..8d243f0 --- /dev/null +++ b/neochat-24.08.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b72d1864cc0d90704318c8970b9dc6a2dacd541fc5b95c46dcebb5c6a61705f +size 1024700 diff --git a/neochat-24.08.0.tar.xz.sig b/neochat-24.08.0.tar.xz.sig new file mode 100644 index 0000000..a4960d5 --- /dev/null +++ b/neochat-24.08.0.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE2BwMs463Je9mkcOFu0YzUNbvMe8FAma+4OIACgkQu0YzUNbv +Me9Ulg//RSBBVRtllnbfvqEtMsR4GTdAl9MzMI56XvPRszsHWiNVJqP3PXOYR7+m +fqpGkxbAxelBxKn8gpYzBqj75TLMnPKQdjXR5op3kI9EIr5kToc6VWvPyr7+MOaW +V1Jos7n3EzzL9cMOyWcG+ty9ar5+o80Zr3MuLNN7bevc11YQSzmx+EG1A6sfCPCO +wWyjX0CBepYZJsuafbT0Zxd1+hHvjGOTQg6GmVl1l0kn1Jkt7jb1hS+pVzNPgniJ +y3/sMkR6PE/fNmteUbBiqYBMVLyx7Ii2lqwlD+8vWRrRjSF/p5QjAieVjYybY/6q +sHgsBvfoPS4znN6ld1Guvx9KdoCUkoftJ54xZpe6fPZBlRLAqxd91a7guZ1aqbSp +XRsVnos0JCsViHIXCgaSm8KmmtGgHZSQX3rxmRzx2hnLn7V16zs7rAA6rXRE36XH +6fntJwYBKPER6BK06h8bxCxna0qljF9v1nSx84qN06jtWcn78dGZsR+EWR8PcN6C +gPpoXyp050sUwtVYPaYD/xZ/ypsuRFj0z2fbmUslONFwMPwmCdgcYoaRcUXey6Nc +iEQe2YkUY0408INPgVafA5puVgWrGm6dU6wSv6sjQHl70Z2p/RDA91hpQC/662Fy +cvoREbi83cVIpzrf+EaYCGLd6JiDhddpaZayPCG/XvGm7Qr+mfc= +=q5Hs +-----END PGP SIGNATURE----- diff --git a/neochat-24.08.1.tar.xz b/neochat-24.08.1.tar.xz new file mode 100644 index 0000000..1912c61 --- /dev/null +++ b/neochat-24.08.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a394f04cf19d5567437e558075c9f7ce5c37bf73943b13c47739ff56acde571d +size 1025240 diff --git a/neochat-24.08.1.tar.xz.sig b/neochat-24.08.1.tar.xz.sig new file mode 100644 index 0000000..a2135a8 --- /dev/null +++ b/neochat-24.08.1.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE2BwMs463Je9mkcOFu0YzUNbvMe8FAmbf/SUACgkQu0YzUNbv +Me8geQ//RxjnQ0GVT7lKRZAIqd3Do6mFGt8Mi0L1pspRRRW8W9HmG+k7aO5Syo2D +slkPngcLFEOwm/4x5dqIre2SOt+vvJwC07TDkUv8pkd4GjsmnyJmnAV2Y6yz1+cw +kDKP569Re/IW+EZxnuweGTlAn7eu4sp36LpFwZwFHxNUcdHMX2BvO24nk4kLy2VC +Igt8BCZfng1Qf0jybIjIqKGPDmaJ8WGmUMRfyqn9aPVc+O9Tb6SMo4cPSUMbic4i +XAFpPlrkgudwd0KlBftAx1zGNFxUU/3o3kTQv/2ZNj/Y4ouuRBpR0vl5Js5zDK4E ++S5bVtSTIFU4qYcxm1nTVYrfjp0DGADUavz64op5DgLzmalMAe7DNqHIhOmA25O3 +urKbyU6p9WtUZ2Dx6ZPO78TepTGgl+CSkfPtCTTtSGFwQyR/D7HzihMXqXHb7rjK +L+FjUq7Kq+Vkl5cXyYWJaqMBDbwRRRU0Vv72DUB/Lj6GpVUSaJzNKTlU76Xgp/hj +vUhIvanwube9FTiKLfRxuf64vm56j2/llkAqpb3sBFz6ygOlwMo+AF7gFKmvHtlc +UuF4khQQYimjaoAMI/skd1xBmjVGVZmrTpiX3ZeDwhb9Sq240kazRxLwEnh7tfoG +0mEv0Efl7Zv5DR3G+x6MKJPmWxU6zn/fewlT59xfiFuAOyYp+as= +=F8mD +-----END PGP SIGNATURE----- diff --git a/neochat-24.08.2.tar.xz b/neochat-24.08.2.tar.xz new file mode 100644 index 0000000..f48e4d1 --- /dev/null +++ b/neochat-24.08.2.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:873f08f35ef1055b17647098a2ba5a3924dc0fb8350441d380c3598d8213c1bc +size 1027192 diff --git a/neochat-24.08.2.tar.xz.sig b/neochat-24.08.2.tar.xz.sig new file mode 100644 index 0000000..4eae775 --- /dev/null +++ b/neochat-24.08.2.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE2BwMs463Je9mkcOFu0YzUNbvMe8FAmcGk4kACgkQu0YzUNbv +Me8e9Q/+LTIxIAfoDPOM1KjqErxZC9FGfQVewTwQhE7G3+zsXmydxk3J0CskKlKL +3FrbKJKE5APPJU33fnGRK+5mBpF9ZlnfD4p6eN8Cj//8M09M8NOHK1uTeNXzxD9L +YTFkJftkW8lGqAoFE6xOPqJz3enZrnpjoH5tisRp6UHRgAjSL72yljVL5PPID1Rn +aTISvCvPd3efKDdTiLJozYCSzboH5hJI4t3Unq9EACBXCnpecFZGQaFx/IGkm+wc +VF46g6YPV5wnYseqYrmS2esCBrdDz7DmT2chfeeJz42HkhmVUpqzyWs00tTo3j6n +cHcsOv5IFpHe9ryxnHPBfeh4uSnVvHMpDpeFbjWvQqF3zssiJNMluqiXAKKyHK2e +W5WJZd5+gSerSNDEnNUnCiX6hVhJ2+EN1Ez5CINJferJx7yp9Vz+Gsh3119E6chs +x/x9qJS3Jtibi4gKKZq+dKFEzGiaFyUcBG9iXM864rrzKumZ4cATmar8ik7x35Sh +tp6B8IvklMREZz4t327eV8l8FtbogEanvNFKyv+bohDAzyDgNG9eRvCLto4W9/ab +2QZVydVru1hnbQRgg1UcxNe/WIqex4zLS5hSUpISWmxanJGGzGJn4z8lUQxs14GF +/jQjwN5DIpa90Rcl9OY9KKNNd6ZTbN5V9M0dGBLENJuThx/Hf6E= +=w8nA +-----END PGP SIGNATURE----- diff --git a/neochat-24.08.3.tar.xz b/neochat-24.08.3.tar.xz new file mode 100644 index 0000000..729ab69 --- /dev/null +++ b/neochat-24.08.3.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f28988f68ebf405b0c448ab9f8e4ddace819e08e86fad9d6b2149bb98e7d0f09 +size 1031148 diff --git a/neochat-24.08.3.tar.xz.sig b/neochat-24.08.3.tar.xz.sig new file mode 100644 index 0000000..bc10f2e --- /dev/null +++ b/neochat-24.08.3.tar.xz.sig @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE2BwMs463Je9mkcOFu0YzUNbvMe8FAmcpZPAACgkQu0YzUNbv +Me+WHg/8CZJFrkPTvJ9r/hYwLheQhvgBqfcU4HnxM/IDss62ckeba3XQohMg5xze +jxgPq72zVRAB9UDN4srpsUH2JKdmKgEbYJP1MLzr9x7074mh7c8Ooa0iyMDrrlGR ++NfHU7vBCphUYd6oSEMzoOnV03pWAQ5o3nz7YW5+syZrJgnhbPbqZ9YXVrGcDuZy +wbrEjEnPXy9StPKi8M+kbr8ufHardBfgoccYr7Vn8ONeLm6iEzmnT8CjDumAZBSL +I28ZpO6dn3+5zbdtUDe2EkFNqzQvrlSVPornFtSpl1wfnmBwwCdBRjiuy1FFLUF0 +YCB0W6Boog1S62j10pWaQl5zrHjJbT/+QTkzSTtp4x6GWwk0k5L/jOTrwe3NUVEO +Ztc4MGO2vDw5OZ7QjGPGa/YxWAwvx1lnyHpxz+DiXKGZQ9Ry0rILg/sOMkHnI0s7 +BtM7KW4b160MCLP7Z2iIXx6GWJBL94/VLM3+quJ5ou7z9rxYHgyLJsbTrE38X1Af +WkXoixjJRH4BYVBe/xyyu4x2y/bNC270CH/t7CdA2ZPZcFa6TV7LfSxi9taqMuPe +K4DX3Hfh8+f47+/KZ7KivCqtLEpldYIpTEGCa59po+ueIxAXstr/CYscZ7GXjne5 +m4c9gFkcPbXwseOh+8KsjiMjIHLj1xWvdhnkYYT6WuyDgvG2jVw= +=seO3 +-----END PGP SIGNATURE----- diff --git a/neochat.changes b/neochat.changes new file mode 100644 index 0000000..08ddf4c --- /dev/null +++ b/neochat.changes @@ -0,0 +1,588 @@ +------------------------------------------------------------------- +Wed Nov 13 09:31:29 UTC 2024 - Adam Mizerski + +- enabled support for KUnifiedPush + +------------------------------------------------------------------- +Tue Nov 5 10:44:14 UTC 2024 - Christophe Marin + +- Update to 24.08.3 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/24.08.3/ +- Changes since 24.08.2: + * Cherry pick compatability changes for libquotient 0.9 + * snap: add snap package +- Drop patch, merged upstream: + * 0001-Cherry-pick-compatability-changes-for-libquotient-0.patch + +------------------------------------------------------------------- +Mon Oct 28 07:59:23 UTC 2024 - Christophe Marin + +- Add upstream change: + * 0001-Cherry-pick-compatability-changes-for-libquotient-0.patch + +------------------------------------------------------------------- +Tue Oct 8 12:02:28 UTC 2024 - Christophe Marin + +- Update to 24.08.2 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/24.08.2/ +- Changes since 24.08.1: + * Fix for not rendering html in replies + * Fix compilation + * Fix compilation against changes in libQuotient + * Adapt to libQuotient changes + * Unify redaction handling + * Escape html from redaction message + * Ensure floating buttons have correct size on mobile + * Make sure that m_components cannot be accessed out of bounds in closeLinkPreview + * Fix NeoChatRoom::directChatRemoteMember (kde#492733) + * Fix crash in MessageContentModel + * Fix display name in verification message + * Fix filtering users in the member list + * Don't open a room by default on mobile + * Fix increasing font size of certain emojis + * Use autoTransform on images + +------------------------------------------------------------------- +Tue Sep 10 14:11:42 UTC 2024 - Christophe Marin + +- Update to 24.08.1 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/24.08.1/ +- Changes since 24.08.0: + * Web Shortcuts: kcmshell5 does not exist anymore on Plasma 6 + * LocationHelper: Move clamp from zoomToFit to QML + * AuthorDelegate: Don't make empty space clickable + * AuthorDelegate: Add pointing hand cursor to indicate you can tap + * Make the SectionDelegate look just a little bit better + * Fix pending indicator + * Use plaintext for reply author component + * Don't run QtKeychain job in a nested event loop + * Adapt to libQuotient API change + * Ensure that room list does not show rooms without title during startup + * Include missing ECMQmlModule + * Re-add pending event indicator (kde#491277) + +------------------------------------------------------------------- +Mon Aug 19 07:14:43 UTC 2024 - Christophe Marin + +- Update to 24.08.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/gear/24.08.0/ +- Too many changes since 24.05.2, only listing bugfixes: + * Re-add pending event indicator (kde#491277) + * Only enable taphandler for mouse clicks (kde#486545) + * GlobalMenu: remove shortcut for QuickSwitcher (kde#488212) + * Make notifications more useful (kde#475228) + * Use simpler and less restrictive server url regex (kde#486888) + * Make sure to ask before leaving a room (kde#486546) + * Push ImageEditorPage using pushDialogLayer (kde#486315) + * Fix the master show link preview setting and add back the per room setting (kde#486126) + * Fix Roomlist Shortcuts (kde#485949) + +------------------------------------------------------------------- +Tue Jul 2 13:55:13 UTC 2024 - Christophe Marin + +- Update to 24.05.2 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/24.05.2/ +- Changes since 24.05.1: + * GlobalMenu: remove shortcut for QuickSwitcher (kde#488212) + * Fix global menu + * CI: Disable requiring Windows tests passing + +------------------------------------------------------------------- +Wed Jun 12 07:34:49 UTC 2024 - Christophe Marin + +- Update to 24.05.1 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/24.05.1/ +- Changes since 24.05.0: + * Fix keyboard navigation on search pages + * Fix the tooltips for the two drawer buttons at the top + * Fix keyboard navigation in space drawer + * Add keyboard navigation for server selection in room search dialog + * Remove room member highlight on click + * Use Qt.alpha in ThemeRadioButton + * Add focus border for the theme radio button, used on the Appearance page + * Fix QR code not showing when tapping the button under account settings + * Fix map copyright link activation + * Don't show the map if there's no locations available + * Fixup AttachDialog + * CreateRoomDialog: Add missing formcard separators + * Fix if X11 on apple + * Cleanup quick switcher + * Fix spacing of HiddenDelegate + * Fix micro spacing inconsistency in SpaceHierarchyDelegate + +------------------------------------------------------------------- +Sun May 19 09:57:37 UTC 2024 - Christophe Marin + +- Update to 24.05.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/gear/24.05.0/ +- Changes since 24.04.80: + * Fix module + * Adapt to behavior change in libQuotient + * Push ImageEditorPage using pushDialogLayer (kde#486315) + * Fix opening room on mobile + * Fix AddServerSheet + * Revert "Preserve mx-reply in the edited message if it exists" + +------------------------------------------------------------------- +Fri May 3 09:17:23 UTC 2024 - Christophe Marin + +- Update to 24.04.80 + * New feature release +- Too many changes since 24.02.2, only listing bugfixes: + * Fix Roomlist Shortcuts (kde#485949) + * Fix Verification Window Sizing (kde#485309) + * Linkpreviewer Improvements (kde#484927) + * Re-add requirement for having devtools active for the show message source action (kde#485140) + * Only ask for URL opening confirmation for QR codes (kde#484870) + * Add "Leave room" button to sidebar (kde#484425) + * UserInfo compact (kde#482261) + * Remove external room window feature (kde#455984) + * Support selected text for replies in the right click menu (kde#463885) + * Don't Maximize Stickers (kde#482701) + * Fix Message Components for Tags with Attributes (kde#482331) + * Fix crash when visiting user (kde#483744) + * Remove manual window toggling for system tray icon (kde#479721) + * Favourites -> Favorites (kde#481814) + * Port RoomList to TreeView (kde#456643) + * Move notifications button to space drawer. (kde#479051) + * Readonly Room (kde#479590) + +------------------------------------------------------------------- +Tue Apr 9 18:09:45 UTC 2024 - Christophe Marin + +- Update to 24.02.2 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/24.02.2/ +- Changes since 24.02.1: + * Fix crash when visiting user (kde#483744) + * Add back Appimage job, it is fixed now + * Remove craft-appimage-qt6 + +------------------------------------------------------------------- +Tue Mar 19 15:27:55 UTC 2024 - Christophe Marin + +- Update to 24.02.1 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/24.02.1/ +- Changes since 24.02.0: + * Fix the quick format bar not actually doing anything + * Exclude lonely question marks from the linkify regex + * Don't destroy formatting when editing previous messages + * Prevent collision between KUnifiedPush DBus and KRunner DBus + * This is no longer needed now that ECM 6.0.0 is available + * Create an APPX package for NeoChat 24.02 + * Remove manual window toggling for system tray icon (kde#479721) + * Don't link KDBusAddons on windows + * Don't require kirigami-addons master + * flatpak: Switch to non-preview runtime + * Fix (un)ignoring unknown users + * Fix saving images from maximize component + +------------------------------------------------------------------- +Thu Feb 29 14:33:12 UTC 2024 - Christophe Marin + +- Update the kquickimageeditor build requirement + +------------------------------------------------------------------- +Fri Feb 23 14:00:53 UTC 2024 - Christophe Marin + +- Update to 24.02.0 + * New feature release +- Changes since 24.01.95: + * Fix saving images from maximize component + * Add feature flag for reply in thread + * Add neochat 24.02 release note + * Fix reaction update event when the event is not there anymore + * Fix reaction delegate sizing for text reaction + * Skip Welcome screen when there's only one connection and it's loaded + * Allow dropping connections from the welcome page + * Show custom emoji reactions as per MSC4027 + * Fix AudioDelegate playback + +------------------------------------------------------------------- +Fri Feb 9 16:10:01 UTC 2024 - Christophe Marin + +- Update to 24.01.95 + * https://kde.org/announcements/megarelease/6/rc2/ + +------------------------------------------------------------------- +Tue Dec 5 14:20:34 UTC 2023 - Christophe Marin + +- Update to 23.08.4 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/23.08.4/ +- Changes since 23.08.3: + * Build Windows installers on invent + * Fix crash for forbidden non-mxc media (kde#476698) + +------------------------------------------------------------------- +Tue Nov 7 17:05:35 UTC 2023 - Christophe Marin + +- Update to 23.08.3 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/23.08.3/ +- Changes since 23.08.2: + * snapcraft: remove dbus slots rejected by store. + * Add CI template for building APKs + * snapcraft: Fix libsecret support! BUndle gnomekeychain. + Set XDG variables so it finds keychain. Update qtkeychain. + * snapcraft: initial import snapcraft files. + * Use KF5 version of kirigami-addons in flatpak builds + +------------------------------------------------------------------- +Tue Oct 10 18:28:21 UTC 2023 - Christophe Marin + +- Update to 23.08.2 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/23.08.2/ +- No code change since 23.08.1 + +------------------------------------------------------------------- +Tue Sep 12 11:56:49 UTC 2023 - Christophe Marin + +- Update to 23.08.1 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/23.08.1/ +- Changes since 23.08.0: + * Use shortcode as a fallback for body when sending stickers + * Add cmake check for qtlocation QML module + * Add Windows-specific screenshots as screenshots with custom attribute + * Deselect space when leaving it (kde#473271) + * Fix opening settings (kde#473789) + * Fix opening report sheet + * Force plain text user display name in user detail sheet + * Fix opening ban sheet + * Add release note for last two version + * Remove debuging value + +------------------------------------------------------------------- +Mon Sep 4 06:38:34 UTC 2023 - Fabian Vogt + +- Add some qt5qmlimport runtime deps (boo#1214916) + +------------------------------------------------------------------- +Sun Aug 20 14:00:22 UTC 2023 - Christophe Marin + +- Update to 23.08.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/gear/23.08.0/ +- Changes since 23.07.90: + * Don't inherit color in TimelineContainer + * Use view-list-details instead of expand icon in room drawer + * Destroy the correct component in space list context menu + * Prevent the TapHandler in AvatarTabButton from triggering clicked() + * Add icons to the space list context menu items + * Prevent the chat bar from pasting a local file URL if we save the bitmap + * Ensure that the notification avatar is drawn with no pen + * Further notification avatar improvements + * Fix the account switcher width so it doesn't spill off the side + * Pick a better shadow and clean up emoji popup backgrounds + * Don't clip the emoji popups as they destroy shadows + * Improve tooltips in chatbar + * Wrap room display name in Room Drawer + +------------------------------------------------------------------- +Mon Aug 14 08:03:38 UTC 2023 - Christophe Marin + +- Update to 23.07.90 + * New feature release +- Changes since 23.07.80: + * Display big emoji correctly + * Force plain text in room delegate + * Remove leftover debug statement + * Fix last active time in devices page + * Redesign timeline + * Fix opening account menu on right click + * Html-escape display names in state delegates + * Fix room list icon size in compact room list (kde#472682) + * Fix compilation with e2ee disabled + +------------------------------------------------------------------- +Tue Aug 1 10:14:34 UTC 2023 - Christophe Marin + +- Update to 23.07.80 + * New feature release +- Too many changes since 23.04.3, only listing bugfixes: + * Fix toolbar of RoomList when using font size 11px (kde#467242) + * Don't try getting data for invalid indices (kde#470639) + * Refactor login (kde#469486) + * Improve Delegate Width Sizing (kde#470167) + * Fix replying and editing from chatbox (kde#469733) + * Fix the room timeline being dragged when selecting text (kde#467163) + * Focus message search window's search field by default (kde#469879) + * Cache last event (kde#455042) + * Add more bottom margin (kde#469616) + * Fix autocompletion not working (kde#468967) + * Remove Unread Count (kde#466515) + * Fix regressions from RoomPage refactoring (kde#469427) + * Improve RoomDrawer for direct chats (kde#466895) + * Prevent crash in SyntaxHighlighter when leaving room (kde#467722) + * Fix handling line separators (kde#468977) + * Fix Ctrl+Shift+, opening settings (kde#469057) + * Fix room search field shortcut (kde#469059) + * Fix Chat bubble background changing color when created (kde#468124) + * Fix Long Topics in the RoomDrawer Overflowing (kde#467512) + * Don't crash in UserListModel when there is no room (kde#466045) + * Fix state event visiblity in timeline (kde#455048) + * Improve Text Handling (kde#463932) + +------------------------------------------------------------------- +Tue Jul 4 10:20:37 UTC 2023 - Christophe Marin + +- Update to 23.04.3 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/23.04.3/ +- No code change since 23.04.2 + +------------------------------------------------------------------- +Tue Jun 6 20:01:53 UTC 2023 - Christophe Marin + +- Update to 23.04.2 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/23.04.2/ +- Changes since 23.04.1: + * Focus message search window's search field by default (kde#469879) + * Fix asan runtime error in texthandler + * Update appstream description + +------------------------------------------------------------------- +Tue May 9 10:47:51 UTC 2023 - Christophe Marin + +- Update to 23.04.1 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/gear/23.04.1/ +- Changes since 23.04.0: + * Don't enforce tests on windows Qt6 + * Fix handling line separators (kde#468977) + * Prevent crash in SyntaxHighlighter when leaving room (kde#467722) + * Add loading title to LoadingPage + +------------------------------------------------------------------- +Sat Apr 15 08:46:39 UTC 2023 - Christophe Marin + +- Update to 23.04.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/gear/23.04.0/ + +------------------------------------------------------------------- +Fri Mar 31 16:42:43 UTC 2023 - Christophe Marin + +- Update to 23.03.90 + * New feature release + +------------------------------------------------------------------- +Sat Mar 18 18:47:55 UTC 2023 - Christophe Marin + +- Update to 23.03.80 + * New feature release + +------------------------------------------------------------------- +Wed Feb 15 21:27:24 UTC 2023 - Christophe Marin + +- Update to 23.01.0 + * notifications are now shown for all accounts + * new compact mode for the room list + * searching in history is now possible + * emojis and reactions improvements + +------------------------------------------------------------------- +Thu Jan 23 12:19:20 UTC 2023 - Tamara Schmitz + +- update to 22.11: + * work on end-to-end encryption implementation + * configuration settings ported to new form components + * new settings component for managing notifications settings + * add proxy configuration menu + * added developer tools for inspecting raw matrix events + * added confirmation dialog when signing out and when enabling end-to-end encryption + * rewrite of theaccount switcher +- fix buildrequires, remove redundant requires +- fix permissions of license file + +------------------------------------------------------------------- +Thu Sep 29 19:55:16 UTC 2022 - Dirk Müller + +- update to 22.09: + * implemented support for configuring notifications on a per-room basis. As + part of his GSoC project, Snehit added a space selector to the room list, + which allows filtering the room list for rooms included in the selected + space. James also reworked the timeline layout to make it look nicer when + the window is very wide. There have also been a ton of other fixes and + improvements in translations, the layout and the stability of NeoChat. + +------------------------------------------------------------------- +Fri Aug 5 06:07:29 UTC 2022 - Christophe Giboudeaux + +- Use GCC 10 to build neochat on Leap. + +------------------------------------------------------------------- +Wed Aug 3 07:56:35 UTC 2022 - Dirk Müller + +- update to 22.06: + * Sending of typing notifications can now be disabled. + * In the room list, the scrollbar will now disappear correctly when it is not needed. + * On wayland, NeoChat will now raise correctly when clicking on a notification. + * Several bugs have been fixed that would sometimes cause messages containing + markdown and/or HTML elements to be sent incorrectly. + * The quick switcher can now be controlled using the mouse. + * There is now an option to disable automatic room sidebar opening when + resizing the window. + * Creation of custom emojis has been fixed. + * Editing or replying to the last message using the keyboard shortcuts now + works correctly. + * When switching between rooms using the keyboard, the switching direction is + now correct. + +------------------------------------------------------------------- +Tue Mar 22 09:03:48 UTC 2022 - Christophe Giboudeaux + +- Update the QCoro build dependency. + +------------------------------------------------------------------- +Wed Feb 9 19:07:37 UTC 2022 - Fabian Vogt + +- Update to 22.02: + * Implement sharing with Purpose (export) + * Implement adding labels for account + * Give settings window a title + * Reduce minimum height of the window + * Fix build with qcoro 0.4 + * Fix issues with saveFileAs + * Changed “Settings” to “Configure NeoChat” in menu + * Improve toolbar on mobile + * Improve emoji pane + * Check if password can be changed + * Fix image tooltip + * Adapt list setting pages to new style + * Allow using ESC to go back to room list + * Port away from QNetworkConfigurationManager + * Remove lag when starting user autocompletion + * Set single window hint in desktop file + * Make room address selectable + * Display monochrome icon in tray + * Fix QuickSwitcher activation + * Fix Windows/mac build + * Fix notifications on Android + * Support raising when we receive a notification + * Don’t render html in RoomDrawer heading + * Add support for minimizing to system tray on startup + * Use non blocking passord reading + * Add a mobile oriented context menu for the room list + * Fix loading room settings on mobile + * Use icon from qrc for system tray icon + * Adapt to libQuotient API change + +------------------------------------------------------------------- +Mon Feb 7 16:09:09 UTC 2022 - Fabian Vogt + +- Update to 21.12: + * Solved various problems related to login, logout and account switching + * Fixed a few problems in the timeline layout + * Added Spell checking while writing a message + * Improved Settings pages + * Many improvements to the android and general mobile support + * Show blurhashes while images load + * Support showing custom emojis + * Added a global menu + * Added support for spoilers + * Added a quick switcher to switch between rooms + * Added support for an optional fancy blur background effect + * Resizable left and right drawers + * Added Syntax highlighting in raw json messages + * Better wayland support + * Improved file reception and download +- Part of Plasma Mobile Gear now, adjust URL and neochat.keyring + +------------------------------------------------------------------- +Sat Jun 26 09:38:16 UTC 2021 - ecsos + +- Fix build error. + - Add missig cmark which will not be install with libcmark-devel. + +------------------------------------------------------------------- +Tue Jun 1 14:04:23 UTC 2021 - Paolo Stivanin + +- Update to 1.2.0 + * major UI redesign + * chage page is now using bubbles + * it's now possible to send custom reactions by replying + to a comment with /react + * now supports opening Matrix URI from the web browser + +------------------------------------------------------------------- +Thu Feb 25 18:52:07 UTC 2021 - ecsos + +- Update to 1.1.1 + - First launch experience improvements + - Allow logins to servers requiring SSO + - Display stickers + - Allow editing messages + - Multimodal mode to open a room into a new window + - New chat commands + - Better Plasma integration + +------------------------------------------------------------------- +Mon Feb 15 00:33:01 UTC 2021 - Tomas Cech + +- Add missing require libqt5-qtquickcontrols again. + +------------------------------------------------------------------- +Sat Jan 16 10:14:57 UTC 2021 - Luca Beltrame + +- Adjust spec file to conform to the KDE team's guidelines + +------------------------------------------------------------------- +Wed Jan 13 11:49:59 UTC 2021 - ecsos + +- Update to 1.0.1 + - NeoChat doesn't require a .well-know configuration in the + server to work. + - Edited messages won’t show up duplicated anymore. + - NeoChat now ask for consent to terms and conditions if required + instead of displaying nothing. + - Users avatar in the room list are now displayed correctly. + - Fix image saving + - Various graphic glitches have been fixed. +- Switch source from invent.kde.org to download.kde.org, because in + git is not always the newest tar. +- Add language subpackages. + +------------------------------------------------------------------- +Mon Jan 4 14:16:53 UTC 2021 - ecsos + +- Add missing require libqt5-qtquickcontrols. + +------------------------------------------------------------------- +Wed Dec 23 14:17:40 UTC 2020 - ecsos + +- Change from git version to version 1.0 + +------------------------------------------------------------------- +Mon Nov 23 15:12:10 UTC 2020 - Dead Mozay + +- Initial package diff --git a/neochat.spec b/neochat.spec new file mode 100644 index 0000000..1d986bb --- /dev/null +++ b/neochat.spec @@ -0,0 +1,126 @@ +# +# spec file for package neochat +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define kf6_version 6.3.0 +%define qt6_version 6.6.0 + +%bcond_without released +Name: neochat +Version: 24.08.3 +Release: 0 +Summary: A chat client for Matrix, the decentralized communication protocol +License: BSD-2-Clause AND GPL-3.0-only AND GPL-3.0-or-later +Group: Productivity/Networking/Instant Messenger +URL: https://apps.kde.org/neochat/ +Source0: https://download.kde.org/stable/release-service/%{version}/src/%{name}-%{version}.tar.xz +%if %{with released} +Source1: https://download.kde.org/stable/release-service/%{version}/src/%{name}-%{version}.tar.xz.sig +Source2: applications.keyring +%endif +# Needed for leap 15.5 +BuildRequires: cmark +BuildRequires: fdupes +BuildRequires: kf6-extra-cmake-modules >= %{kf6_version} +# Both kquickimageeditor flavors provide the same CMake target name, use the devel package name instead +# BuildRequires: cmake(KQuickImageEditor) +BuildRequires: kquickimageeditor6-devel +BuildRequires: pkgconfig +BuildRequires: cmake(KF6ColorScheme) >= %{kf6_version} +BuildRequires: cmake(KF6Config) >= %{kf6_version} +BuildRequires: cmake(KF6CoreAddons) >= %{kf6_version} +BuildRequires: cmake(KF6Crash) >= %{kf6_version} +BuildRequires: cmake(KF6DBusAddons) >= %{kf6_version} +BuildRequires: cmake(KF6DocTools) >= %{kf6_version} +BuildRequires: cmake(KF6I18n) >= %{kf6_version} +BuildRequires: cmake(KF6ItemModels) >= %{kf6_version} +BuildRequires: cmake(KF6KIO) >= %{kf6_version} +BuildRequires: cmake(KF6Kirigami) >= %{kf6_version} +BuildRequires: cmake(KF6KirigamiAddons) >= 0.7.2 +BuildRequires: cmake(KF6Notifications) >= %{kf6_version} +BuildRequires: cmake(KF6Purpose) >= %{kf6_version} +BuildRequires: cmake(KF6QQC2DesktopStyle) >= %{kf6_version} +BuildRequires: cmake(KF6Sonnet) >= %{kf6_version} +BuildRequires: cmake(KF6StatusNotifierItem) >= %{kf6_version} +BuildRequires: cmake(KF6SyntaxHighlighting) >= %{kf6_version} +BuildRequires: cmake(KF6WindowSystem) >= %{kf6_version} +BuildRequires: cmake(KUnifiedPush) +BuildRequires: cmake(QCoro6Core) +BuildRequires: cmake(Qt6Core) >= %{qt6_version} +BuildRequires: cmake(Qt6Gui) >= %{qt6_version} +BuildRequires: cmake(Qt6Multimedia) >= %{qt6_version} +BuildRequires: cmake(Qt6Quick) >= %{qt6_version} +BuildRequires: cmake(Qt6QuickControls2) >= %{qt6_version} +BuildRequires: cmake(Qt6Svg) >= %{qt6_version} +BuildRequires: cmake(Qt6WebView) >= %{qt6_version} +BuildRequires: cmake(Qt6Widgets) >= %{qt6_version} +BuildRequires: cmake(QuotientQt6) >= 0.7.0 +BuildRequires: pkgconfig(icu-uc) >= 61.0 +BuildRequires: pkgconfig(libcmark) +# It can only build on the same platforms as Qt Webengine +ExclusiveArch: x86_64 %{x86_64} aarch64 riscv64 +Requires: kf6-kirigami-imports >= %{kf6_version} +Requires: kf6-kitemmodels-imports >= %{kf6_version} +Requires: kf6-kquickcharts >= %{kf6_version} +Requires: kf6-prison-imports >= %{kf6_version} +Requires: kf6-qqc2-desktop-style >= %{kf6_version} +Requires: kf6-syntax-highlighting-imports >= %{kf6_version} +Requires: kirigami-addons6 >= 0.7.2 +Requires: qt6-location >= %{qt6_version} +Requires: qt6-positioning-imports >= %{qt6_version} +Requires: qt6qmlimport(org.kde.kquickimageeditor.1) + +%description +Neochat is a client for Matrix, the decentralized communication protocol for +instant messaging. + +%lang_package + +%prep +%autosetup -p1 + +%build +%cmake_kf6 + +%kf6_build + +%install +%kf6_install + +%fdupes %{buildroot} + +%find_lang %{name} --all-name --with-man + +%files +%license LICENSES/* +%doc README.md +%{_kf6_applicationsdir}/org.kde.neochat.desktop +%{_kf6_appstreamdir}/org.kde.neochat.appdata.xml +%{_kf6_bindir}/neochat +%{_kf6_debugdir}/neochat.categories +%{_kf6_iconsdir}/hicolor/*/apps/org.kde.neochat.svg +%{_kf6_iconsdir}/hicolor/scalable/apps/org.kde.neochat.tray.svg +%{_kf6_mandir}/man1/neochat.1%{?ext_man} +%dir %{_kf6_plugindir}/kf6/purpose +%{_kf6_plugindir}/kf6/purpose/neochatshareplugin.so +%{_kf6_notificationsdir}/neochat.notifyrc +%{_kf6_sharedir}/krunner/dbusplugins/plasma-runner-neochat.desktop +%{_kf6_sharedir}/dbus-1/services/org.kde.neochat.service + +%files lang -f %{name}.lang + +%changelog