From dab4844b8c516e99805b88f02df69e1b0bc11da2 Mon Sep 17 00:00:00 2001 From: Bart De Vries Date: Wed, 28 Jul 2021 23:33:43 +0200 Subject: [PATCH 05/10] Fix parsing of timestamp for EpisodeAction I don't know the entire history of the API, but the current timestamp that is returned by gpodder.net is in ISO 8601 format. The libmygpo-qt implementation was trying to convert this string directly into qulonglong which would fail, and therefore always return 0. Presumably, the timestamp was previously returned as seconds-since-epoch, but changed at some point in time. --- src/EpisodeAction.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/EpisodeAction.cpp b/src/EpisodeAction.cpp index 95536be..59aa96b 100644 --- a/src/EpisodeAction.cpp +++ b/src/EpisodeAction.cpp @@ -118,7 +118,10 @@ bool EpisodeActionPrivate::parse( const QVariant& data ) if( episodeActionMap.contains( QLatin1String( "timestamp" ) ) ) { s = episodeActionMap.value( QLatin1String( "timestamp" ) ); - m_timestamp = s.toULongLong(); + // timestamp is provided in ISO 8601 format, to be converted to qulonglong + // when the server generates the timestamp, it will contain extra + // sub-second resolution, which we need to cut off first before converting + m_timestamp = static_cast(QDateTime::fromString(s.toString().section(QLatin1String("."), 0, 0), QLatin1String("yyyy-MM-dd'T'hh:mm:ss")).toMSecsSinceEpoch() / 1000); } else { -- 2.47.0