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);