+
+ // If the peer doesn't support LongTime, upconvert the lastAwayMessageTime field
+ // from the 32-bit numerical seconds value used in older versions to QDateTime
+ if (!proxy()->sourcePeer()->hasFeature(Quassel::Feature::LongTime)) {
+ QDateTime lastAwayMessageTime = QDateTime();
+ lastAwayMessageTime.setTimeSpec(Qt::UTC);
+#if QT_VERSION >= 0x050800
+ lastAwayMessageTime.fromSecsSinceEpoch(map.take("lastAwayMessage").toInt());
+#else
+ // toSecsSinceEpoch() was added in Qt 5.8. Manually downconvert to seconds for now.
+ // See https://doc.qt.io/qt-5/qdatetime.html#toMSecsSinceEpoch
+ lastAwayMessageTime.fromMSecsSinceEpoch(map.take("lastAwayMessage").toInt() * 1000);
+#endif
+ map["lastAwayMessageTime"] = lastAwayMessageTime;
+ }
+