10#include <QtCore/QDateTime>
14constexpr inline auto EventIdKey =
"event_id"_L1;
15constexpr inline auto RoomIdKey =
"room_id"_L1;
16constexpr inline auto StateKeyKey =
"state_key"_L1;
17constexpr inline auto RedactedCauseKey =
"redacted_because"_L1;
28 ~RoomEvent() override;
34 QString displayId()
const;
39 QDateTime originTimestamp()
const;
40 QString roomId()
const;
41 QString senderId()
const;
42 bool isRedacted()
const {
return bool(_redactedBecause); }
43 const event_ptr_tt<RedactionEvent>& redactedBecause()
const
45 return _redactedBecause;
47 QString redactionReason()
const;
50 QString transactionId()
const;
56 bool isStateEvent()
const;
58 QString stateKey()
const;
61 void setRoomId(
const QString& roomId);
63 void setSender(
const QString& senderId);
67 void setTransactionId(
const QString& txnId);
77 void addId(
const QString& newId);
79 void setOriginalEvent(event_ptr_tt<EncryptedEvent>&& originalEvent);
80 const EncryptedEvent* originalEvent()
const {
return _originalEvent.get(); }
81 const QJsonObject encryptedJson()
const;
94 bool isReply(
bool includeFallbacks =
false)
const;
103 QString replyEventId(
bool includeFallbacks =
false)
const;
109 std::optional<EventRelation> relatesTo()
const;
112 explicit RoomEvent(
const QJsonObject& json);
113 void dumpTo(QDebug dbg)
const override;
118 event_ptr_tt<RedactionEvent> _redactedBecause;
120 event_ptr_tt<EncryptedEvent> _originalEvent;
122using RoomEventPtr = event_ptr_tt<RoomEvent>;
123using RoomEvents = EventsArray<RoomEvent>;
124using RoomEventsRange = std::ranges::subrange<RoomEvents::iterator>;
130Q_DECLARE_METATYPE(Quotient::RoomEvent*)
131Q_DECLARE_METATYPE(
const Quotient::RoomEvent*)
#define QUO_BASE_EVENT(CppType_, BaseCppType_,...)
Supply event metatype information in base event types.