diff options
author | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2021-12-22 17:57:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-22 17:57:06 +0100 |
commit | ab5da392cda29f7f6ecf7f982e834fc9f008f33d (patch) | |
tree | 8f44541cd883d94267a1c31ce4145e69f750798a /lib/events/stateevent.cpp | |
parent | 487e7f5ef75a5a5a4d732027d0b7705fdffb71ca (diff) | |
parent | 060af9334049c58767b6457da2d7c07fdb0d171e (diff) | |
download | libquotient-ab5da392cda29f7f6ecf7f982e834fc9f008f33d.tar.gz libquotient-ab5da392cda29f7f6ecf7f982e834fc9f008f33d.zip |
Merge pull request #526 from quotient-im/kitsune/simpler-event-factories
Simplify event factories
Diffstat (limited to 'lib/events/stateevent.cpp')
-rw-r--r-- | lib/events/stateevent.cpp | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/lib/events/stateevent.cpp b/lib/events/stateevent.cpp index efe011a0..e53d47d4 100644 --- a/lib/events/stateevent.cpp +++ b/lib/events/stateevent.cpp @@ -5,20 +5,13 @@ using namespace Quotient; -// Aside from the normal factory to instantiate StateEventBase inheritors -// StateEventBase itself can be instantiated if there's a state_key JSON key -// but the event type is unknown. -[[maybe_unused]] static auto stateEventTypeInitialised = - RoomEvent::factory_t::addMethod( - [](const QJsonObject& json, const QString& matrixType) -> StateEventPtr { - if (!json.contains(StateKeyKeyL)) - return nullptr; - - if (auto e = StateEventBase::factory_t::make(json, matrixType)) - return e; - - return makeEvent<StateEventBase>(unknownEventTypeId(), json); - }); +StateEventBase::StateEventBase(Type type, const QJsonObject& json) + : RoomEvent(json.contains(StateKeyKeyL) ? type : unknownEventTypeId(), json) +{ + if (Event::type() == unknownEventTypeId() && !json.contains(StateKeyKeyL)) + qWarning(EVENTS) << "Attempt to create a state event with no stateKey -" + "forcing the event type to unknown to avoid damage"; +} StateEventBase::StateEventBase(Event::Type type, event_mtype_t matrixType, const QString& stateKey, |