Implement IRCv3 Server-Time
[quassel.git] / src / core / ircparser.cpp
index 2add78d..d5f5295 100644 (file)
@@ -119,6 +119,17 @@ void IrcParser::processNetworkIncoming(NetworkDataEvent* e)
         qDebug() << "IRC net" << net->networkId() << "<<" << tags << prefix << cmd << params;
     }
 
+    IrcTagKey serverTimeTag{"", "time", false};
+    if (tags.contains(serverTimeTag)) {
+        QDateTime serverTime = QDateTime::fromString(tags[serverTimeTag], "yyyy-MM-ddThh:mm:ss.zzzZ");
+        serverTime.setTimeSpec(Qt::UTC);
+        if (serverTime.isValid()) {
+            e->setTimestamp(serverTime);
+        } else {
+            qDebug() << "Invalid timestamp from server-time tag:" << tags[serverTimeTag];
+        }
+    }
+
     QList<Event*> events;
     EventManager::EventType type = EventManager::Invalid;