aboutsummaryrefslogtreecommitdiff
path: root/events
diff options
context:
space:
mode:
Diffstat (limited to 'events')
-rw-r--r--events/event.cpp24
-rw-r--r--events/event.h48
-rw-r--r--events/roommessageevent.cpp1
-rw-r--r--events/unknownevent.cpp2
4 files changed, 14 insertions, 61 deletions
diff --git a/events/event.cpp b/events/event.cpp
index 43604b23..8ad56f1b 100644
--- a/events/event.cpp
+++ b/events/event.cpp
@@ -23,7 +23,7 @@
#include <QtCore/QDateTime>
#include <QtCore/QDebug>
-#include "../logging_util.h"
+#include "util.h"
#include "roommessageevent.h"
#include "roomnameevent.h"
#include "roomaliasesevent.h"
@@ -114,31 +114,31 @@ Event* Event::fromJson(const QJsonObject& obj)
bool Event::parseJson(const QJsonObject& obj)
{
d->originalJson = QString::fromUtf8(QJsonDocument(obj).toJson());
+ d->id = obj.value("event_id").toString();
+ d->roomId = obj.value("room_id").toString();
+ d->senderId = obj.value("sender").toString();
bool correct = (d->type != EventType::Unknown);
- if ( d->type != EventType::Unknown &&
- d->type != EventType::Typing &&
+ if ( d->type != EventType::Typing &&
d->type != EventType::Receipt )
{
- if( obj.contains("event_id") )
+ if (d->id.isEmpty())
{
- d->id = obj.value("event_id").toString();
- } else {
correct = false;
- qDebug() << "Event: can't find event_id";
+ qDebug() << "Event: can't find event_id; event dump follows";
qDebug() << formatJson << obj;
}
if( obj.contains("origin_server_ts") )
{
- d->timestamp = QDateTime::fromMSecsSinceEpoch(
+ d->timestamp = QDateTime::fromMSecsSinceEpoch(
static_cast<qint64>(obj.value("origin_server_ts").toDouble()), Qt::UTC );
- } else {
+ }
+ else if (d->type != EventType::Unknown)
+ {
correct = false;
- qDebug() << "Event: can't find ts";
+ qDebug() << "Event: can't find ts; event dump follows";
qDebug() << formatJson << obj;
}
}
- d->roomId = obj.value("room_id").toString();
- d->senderId = obj.value("sender").toString();
return correct;
}
diff --git a/events/event.h b/events/event.h
index 12b0ebd5..f60dfb64 100644
--- a/events/event.h
+++ b/events/event.h
@@ -60,52 +60,4 @@ namespace QMatrixClient
using Events = QVector<Event*>;
Events eventsFromJson(const QJsonArray& json);
-
- /**
- * @brief Lookup a value by a key in a varargs list
- *
- * The below overloaded function template takes the value of its first
- * argument (selector) as a key and searches for it in the key-value map
- * passed in a varargs list (every next pair of arguments forms a key-value
- * pair). If a match is found, the respective value is returned; otherwise,
- * the last value (fallback) is returned.
- *
- * All options should be of the same type or implicitly castable to the
- * type of the first option. Note that pointers to methods of different
- * classes are of different object types, in particular.
- *
- * Below is an example of usage to select a parser depending on contents of
- * a JSON object:
- * {@code
- * auto parser = lookup(obj.value["type"].toString(),
- * "type1", fn1,
- * "type2", fn2,
- * fallbackFn);
- * parser(obj);
- * }
- *
- * The implementation is based on tail recursion; every recursion step
- * removes 2 arguments (match and option). There's no selector value for the
- * fallback option (the last one); therefore, the total number of lookup()
- * arguments should be even: selector + n key-value pairs + fallback
- *
- * @note Beware of calling lookup() with a <code>const char*</code> selector
- * (the first parameter) - most likely it won't do what you expect because
- * of shallow comparison.
- */
- template <typename ValueT, typename SelectorT, typename KeyT, typename... Ts>
- ValueT lookup(SelectorT selector, KeyT key, ValueT value, Ts... remainingMapping)
- {
- if( selector == key )
- return value;
-
- // Drop the failed key-value pair and recurse with 2 arguments less.
- return lookup(selector, remainingMapping...);
- }
-
- template <typename SelectorT, typename ValueT>
- ValueT lookup(SelectorT/*unused*/, ValueT fallback)
- {
- return fallback;
- }
}
diff --git a/events/roommessageevent.cpp b/events/roommessageevent.cpp
index bb28d682..34315363 100644
--- a/events/roommessageevent.cpp
+++ b/events/roommessageevent.cpp
@@ -17,6 +17,7 @@
*/
#include "roommessageevent.h"
+#include "util.h"
#include <QtCore/QMimeDatabase>
#include <QtCore/QDebug>
diff --git a/events/unknownevent.cpp b/events/unknownevent.cpp
index 90551409..70dcfcbb 100644
--- a/events/unknownevent.cpp
+++ b/events/unknownevent.cpp
@@ -21,7 +21,7 @@
#include <QtCore/QJsonDocument>
#include <QtCore/QDebug>
-#include "../logging_util.h"
+#include "util.h"
using namespace QMatrixClient;