aboutsummaryrefslogtreecommitdiff
path: root/lib/events/reactionevent.h
diff options
context:
space:
mode:
authorAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-01-21 02:04:10 +0100
committerAlexey Rusakov <Kitsune-Ral@users.sf.net>2022-01-21 02:04:34 +0100
commitfdff209744ac4c422f63fe2549aa0132df7e6292 (patch)
tree55ebfcd92da71aa7809f311cc1d2550ff9e51db0 /lib/events/reactionevent.h
parent142fc5a21f541e2a7592119df075a543527195b9 (diff)
downloadlibquotient-fdff209744ac4c422f63fe2549aa0132df7e6292.tar.gz
libquotient-fdff209744ac4c422f63fe2549aa0132df7e6292.zip
Redo EventRelation; deprecate RelatesTo
RelatesTo and EventRelation have been two means to the same end in two different contexts. (Modernised) EventRelation is the one used now both for ReactionEvent and EventContent::TextContent. The modernisation mostly boils down to using inline variables instead of functions to return relation types and switching to QLatin1String from const char* (because we know exactly that those constants are Latin-1 and QLatin1String is more efficient than const char* to compare/convert to QString).
Diffstat (limited to 'lib/events/reactionevent.h')
-rw-r--r--lib/events/reactionevent.h32
1 files changed, 2 insertions, 30 deletions
diff --git a/lib/events/reactionevent.h b/lib/events/reactionevent.h
index ce11eaed..b3cb3ca7 100644
--- a/lib/events/reactionevent.h
+++ b/lib/events/reactionevent.h
@@ -4,38 +4,10 @@
#pragma once
#include "roomevent.h"
+#include "eventrelation.h"
namespace Quotient {
-struct QUOTIENT_API EventRelation {
- using reltypeid_t = const char*;
- static constexpr reltypeid_t Reply() { return "m.in_reply_to"; }
- static constexpr reltypeid_t Annotation() { return "m.annotation"; }
- static constexpr reltypeid_t Replacement() { return "m.replace"; }
-
- QString type;
- QString eventId;
- QString key = {}; // Only used for m.annotation for now
-
- static EventRelation replyTo(QString eventId)
- {
- return { Reply(), std::move(eventId) };
- }
- static EventRelation annotate(QString eventId, QString key)
- {
- return { Annotation(), std::move(eventId), std::move(key) };
- }
- static EventRelation replace(QString eventId)
- {
- return { Replacement(), std::move(eventId) };
- }
-};
-template <>
-struct QUOTIENT_API JsonObjectConverter<EventRelation> {
- static void dumpTo(QJsonObject& jo, const EventRelation& pod);
- static void fillFrom(const QJsonObject& jo, EventRelation& pod);
-};
-
class QUOTIENT_API ReactionEvent : public RoomEvent {
public:
DEFINE_EVENT_TYPEID("m.reaction", ReactionEvent)
@@ -47,7 +19,7 @@ public:
explicit ReactionEvent(const QJsonObject& obj) : RoomEvent(typeId(), obj) {}
EventRelation relation() const
{
- return contentPart<EventRelation>("m.relates_to"_ls);
+ return contentPart<EventRelation>(RelatesToKey);
}
};
REGISTER_EVENT_TYPE(ReactionEvent)