From d4e4abfa8441173b668330a8ca9a98b26b369b50 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 25 Feb 2022 12:43:42 +0100 Subject: [PATCH] fixup datetimes of messages from future --- resources/desktop/com.github.rssguard.appdata.xml | 2 +- src/librssguard/core/message.cpp | 9 +++++++++ src/librssguard/core/messageobject.cpp | 8 ++++++++ src/librssguard/core/messageobject.h | 4 ++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml index a8c4c69e6..f54b740c9 100644 --- a/resources/desktop/com.github.rssguard.appdata.xml +++ b/resources/desktop/com.github.rssguard.appdata.xml @@ -26,7 +26,7 @@ https://github.com/sponsors/martinrotter - + none diff --git a/src/librssguard/core/message.cpp b/src/librssguard/core/message.cpp index 54818e439..5fb1c910b 100644 --- a/src/librssguard/core/message.cpp +++ b/src/librssguard/core/message.cpp @@ -99,6 +99,15 @@ void Message::sanitize(const Feed* feed) { m_url = base.resolved(m_url).toString(); } } + + // Fix datetimes in future. + if (m_createdFromFeed && m_created.toUTC() > QDateTime::currentDateTimeUtc()) { + qWarningNN << LOGSEC_CORE << "Fixing future date of article" << QUOTE_W_SPACE(m_title) << "from invalid date/time" + << QUOTE_W_SPACE_DOT(m_created); + + m_createdFromFeed = false; + m_created = QDateTime::currentDateTimeUtc(); + } } Message Message::fromSqlRecord(const QSqlRecord& record, bool* result) { diff --git a/src/librssguard/core/messageobject.cpp b/src/librssguard/core/messageobject.cpp index 6e98ce3ff..6097aad10 100644 --- a/src/librssguard/core/messageobject.cpp +++ b/src/librssguard/core/messageobject.cpp @@ -190,6 +190,14 @@ void MessageObject::setCreated(const QDateTime& created) { m_message->m_created = created; } +bool MessageObject::createdIsMadeup() const { + return !m_message->m_createdFromFeed; +} + +void MessageObject::setCreatedIsMadeup(bool madeup) { + m_message->m_createdFromFeed = !madeup; +} + bool MessageObject::isRead() const { return m_message->m_isRead; } diff --git a/src/librssguard/core/messageobject.h b/src/librssguard/core/messageobject.h index 47b99f50d..9262c4cd3 100644 --- a/src/librssguard/core/messageobject.h +++ b/src/librssguard/core/messageobject.h @@ -22,6 +22,7 @@ class MessageObject : public QObject { Q_PROPERTY(QString contents READ contents WRITE setContents) Q_PROPERTY(QString rawContents READ rawContents WRITE setRawContents) Q_PROPERTY(QDateTime created READ created WRITE setCreated) + Q_PROPERTY(bool createdIsMadeup READ createdIsMadeup WRITE setCreatedIsMadeup) Q_PROPERTY(double score READ score WRITE setScore) Q_PROPERTY(bool isRead READ isRead WRITE setIsRead) Q_PROPERTY(bool isImportant READ isImportant WRITE setIsImportant) @@ -123,6 +124,9 @@ class MessageObject : public QObject { QDateTime created() const; void setCreated(const QDateTime& created); + bool createdIsMadeup() const; + void setCreatedIsMadeup(bool madeup); + bool isRead() const; void setIsRead(bool is_read);