--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: norbert@preining.info
Please unblock package rssguard
[ Reason ]
rssguard checks in regular interval for new rss feeds, and
sends desktop notifications when new items are found.
The current version (as well as the development branch until
recently) had a bug that, when using nextcloud (and maybe others)
as news provider, considered any unread item as new and resent
desktop notifications again and again.
The reason for this misbehavior was a misinterpretation of UTC versus
local time stamps (misreading of the API documentation).
[ Impact ]
If not unblock, users with the Nextcloud News provider (and maybe
others) will see permanent desktop notifications.
[ Tests ]
Installation and confirmation that the issue has been fixed.
[ Risks ]
None that I see.
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
unblock rssguard/3.9.0+dfsg-2
Best
Norbert
--
PREINING Norbert https://www.preining.info
Fujitsu Research Labs + IFMGA Guide + TU Wien + TeX Live + Debian Dev
GPG: 0x860CDC13 fp: F7D8 A928 26E3 16A1 9FA0 ACF0 6CAC A448 860C DC13
diff -Nru rssguard-3.9.0+dfsg/debian/changelog rssguard-3.9.0+dfsg/debian/changelog
--- rssguard-3.9.0+dfsg/debian/changelog 2021-02-25 11:11:50.000000000 +0900
+++ rssguard-3.9.0+dfsg/debian/changelog 2021-03-29 19:52:34.000000000 +0900
@@ -1,3 +1,9 @@
+rssguard (3.9.0+dfsg-2) unstable; urgency=medium
+
+ * Backport upstream fix for repeated notifications.
+
+ -- Norbert Preining <norbert@preining.info> Mon, 29 Mar 2021 19:52:34 +0900
+
rssguard (3.9.0+dfsg-1) unstable; urgency=medium
* New upstream version 3.9.0+dfsg
diff -Nru rssguard-3.9.0+dfsg/debian/patches/series rssguard-3.9.0+dfsg/debian/patches/series
--- rssguard-3.9.0+dfsg/debian/patches/series 1970-01-01 09:00:00.000000000 +0900
+++ rssguard-3.9.0+dfsg/debian/patches/series 2021-03-29 19:52:34.000000000 +0900
@@ -0,0 +1 @@
+upstream-utc-nextcloud-7709d657f
diff -Nru rssguard-3.9.0+dfsg/debian/patches/upstream-utc-nextcloud-7709d657f rssguard-3.9.0+dfsg/debian/patches/upstream-utc-nextcloud-7709d657f
--- rssguard-3.9.0+dfsg/debian/patches/upstream-utc-nextcloud-7709d657f 1970-01-01 09:00:00.000000000 +0900
+++ rssguard-3.9.0+dfsg/debian/patches/upstream-utc-nextcloud-7709d657f 2021-03-29 19:52:34.000000000 +0900
@@ -0,0 +1,48 @@
+---
+ src/librssguard/miscellaneous/textfactory.cpp | 2 +-
+ src/librssguard/miscellaneous/textfactory.h | 2 +-
+ src/librssguard/services/owncloud/network/owncloudnetworkfactory.cpp | 4 ++--
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+--- a/src/librssguard/miscellaneous/textfactory.cpp
++++ b/src/librssguard/miscellaneous/textfactory.cpp
+@@ -130,7 +130,7 @@ QDateTime TextFactory::parseDateTime(con
+ }
+
+ QDateTime TextFactory::parseDateTime(qint64 milis_from_epoch) {
+- return QDateTime::fromMSecsSinceEpoch(milis_from_epoch);
++ return QDateTime::fromMSecsSinceEpoch(milis_from_epoch, Qt::TimeSpec::UTC);
+ }
+
+ QString TextFactory::encrypt(const QString& text) {
+--- a/src/librssguard/miscellaneous/textfactory.h
++++ b/src/librssguard/miscellaneous/textfactory.h
+@@ -26,7 +26,7 @@ class TextFactory {
+ static QDateTime parseDateTime(const QString& date_time);
+
+ // Converts 1970-epoch miliseconds to date/time.
+- // NOTE: This apparently returns date/time in localtime.
++ // NOTE: This method tries to always return time in UTC.
+ static QDateTime parseDateTime(qint64 milis_from_epoch);
+ static QString encrypt(const QString& text);
+ static QString decrypt(const QString& text);
+--- a/src/librssguard/services/owncloud/network/owncloudnetworkfactory.cpp
++++ b/src/librssguard/services/owncloud/network/owncloudnetworkfactory.cpp
+@@ -580,7 +580,7 @@ QList<Message>OwnCloudGetMessagesRespons
+ msg.m_contents = message_map["body"].toString();
+ msg.m_created = TextFactory::parseDateTime(message_map["pubDate"].toDouble() * 1000);
+ msg.m_createdFromFeed = true;
+- msg.m_customId = message_map["id"].isString() ? message_map["id"].toString() : QString::number(message_map["id"].toInt());
++ msg.m_customId = message_map["id"].toVariant().toString();
+ msg.m_customHash = message_map["guidHash"].toString();
+
+ QString enclosure_link = message_map["enclosureLink"].toString();
+@@ -593,7 +593,7 @@ QList<Message>OwnCloudGetMessagesRespons
+ msg.m_enclosures.append(enclosure);
+ }
+
+- msg.m_feedId = message_map["feedId"].toString();
++ msg.m_feedId = message_map["feedId"].toVariant().toString();
+ msg.m_isImportant = message_map["starred"].toBool();
+ msg.m_isRead = !message_map["unread"].toBool();
+ msg.m_title = message_map["title"].toString();
--- End Message ---