enabled support for KUnifiedPush

OBS-URL: https://build.opensuse.org/package/show/KDE:Applications/neochat?expand=0&rev=51
This commit is contained in:
Christophe Marin 2024-11-13 12:02:29 +00:00 committed by Git OBS Bridge
commit 01e9a813d7
16 changed files with 1365 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -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

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

View File

@ -0,0 +1,532 @@
From eb802ff91f98204784d87db61a698b4038b7ef84 Mon Sep 17 00:00:00 2001
From: James Graham <james.h.graham@protonmail.com>
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<const RoomMessageEvent>(&**it)) {
+#if Quotient_VERSION_MINOR > 8
+ if (event->senderId() == m_room->localMember().id() && event->has<EventContent::TextContent>()) {
+#else
if (event->senderId() == m_room->localMember().id() && event->hasTextContent()) {
+#endif
QString originalString;
if (event->content()) {
+#if Quotient_VERSION_MINOR > 8
+ originalString = event->get<EventContent::TextContent>()->body;
+#else
originalString = static_cast<const Quotient::EventContent::TextContent *>(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 <Quotient/eventitem.h>
#include <Quotient/events/encryptionevent.h>
+#include <Quotient/events/event.h>
+#include <Quotient/events/eventcontent.h>
#include <Quotient/events/reactionevent.h>
#include <Quotient/events/redactionevent.h>
#include <Quotient/events/roomavatarevent.h>
@@ -234,10 +236,18 @@ QString EventHandler::rawMessageBody(const Quotient::RoomMessageEvent &event)
{
QString body;
+#if Quotient_VERSION_MINOR > 8
+ if (event.has<EventContent::FileContent>()) {
+#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<EventContent::FileContent>()->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<EventContent::TextContent>() && event.content()) {
+ body = event.get<EventContent::TextContent>()->body;
+#else
if (event.hasTextContent() && event.content()) {
body = static_cast<const EventContent::TextContent *>(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<EventContent::FileContent>()) {
+ QString fileCaption = event.get<EventContent::FileContent>()->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<EventContent::TextContent>() && event.content()) {
+ body = event.get<EventContent::TextContent>()->body;
+#else
if (event.hasTextContent() && event.content()) {
body = static_cast<const EventContent::TextContent *>(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<RoomMessageEvent>()) {
auto roomMessageEvent = eventCast<const RoomMessageEvent>(event);
+#if Quotient_VERSION_MINOR > 8
+ if (!roomMessageEvent->has<EventContent::FileContentBase>()) {
+#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<EventContent::FileContentBase>();
+ QVariantMap mediaInfo = getMediaInfoFromFileInfo(content.get(), eventId, false, false);
+#else
+ const auto content = static_cast<const EventContent::FileContent *>(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<StickerEvent>()) {
- const EventContent::FileInfo *fileInfo;
-
auto stickerEvent = eventCast<const StickerEvent>(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<const EventContent::FileContent *>(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<const EventContent::ImageContent *>(fileInfo)) {
+ if (auto castInfo = static_cast<const EventContent::ImageContent *>(fileContent)) {
+#if Quotient_VERSION_MINOR > 8
mediaInfo["width"_ls] = castInfo->imageSize.width();
mediaInfo["height"_ls] = castInfo->imageSize.height();
+#else
+ const auto imageInfo = static_cast<const EventContent::ImageInfo *>(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<const EventContent::VideoContent *>(fileInfo)) {
+ if (auto castInfo = static_cast<const EventContent::VideoContent *>(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<const EventContent::AudioContent *>(fileInfo)) {
+ if (auto castInfo = static_cast<const EventContent::AudioContent *>(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 <QImageReader>
+#include <Quotient/events/eventcontent.h>
#include <Quotient/events/redactionevent.h>
#include <Quotient/events/roommessageevent.h>
#include <Quotient/events/stickerevent.h>
@@ -445,10 +446,19 @@ QList<MessageComponent> 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<EventContent::FileContent>());
+ const QMimeType mimeType = event->get<EventContent::FileContent>()->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<EventContent::FileContent>()->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<const Quotient::RoomMessageEvent>(m_event)) {
+#if Quotient_VERSION_MINOR > 8
+ if (event->has<EventContent::FileContent>()) {
+#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 <Quotient/csapi/rooms.h>
+#include <Quotient/events/eventcontent.h>
#include <Quotient/events/redactionevent.h>
#include <Quotient/events/roommessageevent.h>
#include <Quotient/events/stickerevent.h>
@@ -498,7 +499,11 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
if (role == ProgressInfoRole) {
if (auto e = eventCast<const RoomMessageEvent>(&evt)) {
+#if Quotient_VERSION_MINOR > 8
+ if (e->has<EventContent::FileContent>()) {
+#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 <QMimeDatabase>
#include <QTemporaryFile>
+#include <Quotient/events/eventcontent.h>
#include <Quotient/jobs/basejob.h>
#include <Quotient/quotient_common.h>
#include <qcoro/qcorosignal.h>
@@ -76,11 +77,16 @@ NeoChatRoom::NeoChatRoom(Connection *connection, QString roomId, JoinState joinS
const auto m_event = evtIt->viewAs<RoomEvent>();
QString mxcUrl;
if (auto event = eventCast<const Quotient::RoomMessageEvent>(m_event)) {
+#if Quotient_VERSION_MINOR > 8
+ if (event->has<EventContent::FileContentBase>()) {
+ mxcUrl = event->get<EventContent::FileContentBase>()->url().toString();
+#else
if (event->hasFileContent()) {
mxcUrl = event->content()->fileInfo()->url().toString();
+#endif
}
} else if (auto event = eventCast<const Quotient::StickerEvent>(m_event)) {
- mxcUrl = event->image().fileInfo()->url().toString();
+ mxcUrl = event->image().url().toString();
}
if (mxcUrl.isEmpty()) {
return;
@@ -255,7 +261,11 @@ QCoro::Task<void> 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<void> 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<EventContent::FileContentBase>(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<const RoomMessageEvent>(event)) {
+#if Quotient_VERSION_MINOR > 8
+ if (e->has<EventContent::TextContent>() && e->content() && e->mimeType().name() == "text/html"_ls) {
+ auto htmlBody = e->get<EventContent::TextContent>()->body;
+#else
if (e->hasTextContent() && e->content() && e->mimeType().name() == "text/html"_ls) {
auto htmlBody = static_cast<const Quotient::EventContent::TextContent *>(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<RoomMessageEvent>(**evtIt)) {
const auto event = evtIt->viewAs<RoomMessageEvent>();
+#if Quotient_VERSION_MINOR > 8
+ if (event->has<EventContent::FileContent>()) {
+#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<RoomMessageEvent>(**evtIt)) {
const auto event = evtIt->viewAs<RoomMessageEvent>();
+#if Quotient_VERSION_MINOR > 8
+ if (event->has<EventContent::FileContent>()) {
+#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<const Quotient::RoomMessageEvent>(event)) {
+#if Quotient_VERSION_MINOR > 8
+ if (evt->has<EventContent::FileContent>()) {
+ const auto fileContent = evt->get<EventContent::FileContent>();
+#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<const Quotient::StickerEvent>(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

BIN
applications.keyring Normal file

Binary file not shown.

3
neochat-24.05.2.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cfd419a87cbbe5fecbd7833189255ee2f582b4e1fb0f4f88bdef7e60a92fbc8f
size 980740

View File

@ -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-----

3
neochat-24.08.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6b72d1864cc0d90704318c8970b9dc6a2dacd541fc5b95c46dcebb5c6a61705f
size 1024700

View File

@ -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-----

3
neochat-24.08.1.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a394f04cf19d5567437e558075c9f7ce5c37bf73943b13c47739ff56acde571d
size 1025240

View File

@ -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-----

3
neochat-24.08.2.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:873f08f35ef1055b17647098a2ba5a3924dc0fb8350441d380c3598d8213c1bc
size 1027192

View File

@ -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-----

3
neochat-24.08.3.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f28988f68ebf405b0c448ab9f8e4ddace819e08e86fad9d6b2149bb98e7d0f09
size 1031148

View File

@ -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-----

588
neochat.changes Normal file
View File

@ -0,0 +1,588 @@
-------------------------------------------------------------------
Wed Nov 13 09:31:29 UTC 2024 - Adam Mizerski <adam@mizerski.pl>
- enabled support for KUnifiedPush
-------------------------------------------------------------------
Tue Nov 5 10:44:14 UTC 2024 - Christophe Marin <christophe@krop.fr>
- 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 <christophe@krop.fr>
- Add upstream change:
* 0001-Cherry-pick-compatability-changes-for-libquotient-0.patch
-------------------------------------------------------------------
Tue Oct 8 12:02:28 UTC 2024 - Christophe Marin <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- Update the kquickimageeditor build requirement
-------------------------------------------------------------------
Fri Feb 23 14:00:53 UTC 2024 - Christophe Marin <christophe@krop.fr>
- 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 <christophe@krop.fr>
- Update to 24.01.95
* https://kde.org/announcements/megarelease/6/rc2/
-------------------------------------------------------------------
Tue Dec 5 14:20:34 UTC 2023 - Christophe Marin <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <fabian@ritter-vogt.de>
- Add some qt5qmlimport runtime deps (boo#1214916)
-------------------------------------------------------------------
Sun Aug 20 14:00:22 UTC 2023 - Christophe Marin <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- 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 <christophe@krop.fr>
- Update to 23.03.90
* New feature release
-------------------------------------------------------------------
Sat Mar 18 18:47:55 UTC 2023 - Christophe Marin <christophe@krop.fr>
- Update to 23.03.80
* New feature release
-------------------------------------------------------------------
Wed Feb 15 21:27:24 UTC 2023 - Christophe Marin <christophe@krop.fr>
- 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 <tschmitz@suse.com>
- 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 <dmueller@suse.com>
- 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 <christophe@krop.fr>
- Use GCC 10 to build neochat on Leap.
-------------------------------------------------------------------
Wed Aug 3 07:56:35 UTC 2022 - Dirk Müller <dmueller@suse.com>
- 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 <christophe@krop.fr>
- Update the QCoro build dependency.
-------------------------------------------------------------------
Wed Feb 9 19:07:37 UTC 2022 - Fabian Vogt <fabian@ritter-vogt.de>
- 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
* Dont 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 <fabian@ritter-vogt.de>
- 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 <ecsos@opensuse.org>
- Fix build error.
- Add missig cmark which will not be install with libcmark-devel.
-------------------------------------------------------------------
Tue Jun 1 14:04:23 UTC 2021 - Paolo Stivanin <info@paolostivanin.com>
- 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 <message>
* now supports opening Matrix URI from the web browser
-------------------------------------------------------------------
Thu Feb 25 18:52:07 UTC 2021 - ecsos <ecsos@opensuse.org>
- 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 <sleep_walker@opensuse.org>
- Add missing require libqt5-qtquickcontrols again.
-------------------------------------------------------------------
Sat Jan 16 10:14:57 UTC 2021 - Luca Beltrame <lbeltrame@kde.org>
- Adjust spec file to conform to the KDE team's guidelines
-------------------------------------------------------------------
Wed Jan 13 11:49:59 UTC 2021 - ecsos <ecsos@opensuse.org>
- Update to 1.0.1
- NeoChat doesn't require a .well-know configuration in the
server to work.
- Edited messages wont 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 <ecsos@opensuse.org>
- Add missing require libqt5-qtquickcontrols.
-------------------------------------------------------------------
Wed Dec 23 14:17:40 UTC 2020 - ecsos <ecsos@opensuse.org>
- Change from git version to version 1.0
-------------------------------------------------------------------
Mon Nov 23 15:12:10 UTC 2020 - Dead Mozay <dead_mozay@opensuse.org>
- Initial package

126
neochat.spec Normal file
View File

@ -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