1// SPDX-FileCopyrightText: 2017 Kitsune Ral <kitsune-ral@users.sf.net>
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#pragma once
5
6#include "stateevent.h"
7#include "single_key_value.h"
8
9namespace Quotient {
10
11#define DEFINE_SIMPLE_STATE_EVENT(Name_, TypeId_, ValueType_, GetterName_, \
12 JsonKey_) \
13 constexpr inline auto Name_##Key = JsonKey_##_ls; \
14 class QUOTIENT_API Name_ \
15 : public KeylessStateEventBase< \
16 Name_, EventContent::SingleKeyValue<ValueType_, Name_##Key>> { \
17 public: \
18 using value_type = ValueType_; \
19 QUO_EVENT(Name_, TypeId_) \
20 using KeylessStateEventBase::KeylessStateEventBase; \
21 auto GetterName_() const { return content().value; } \
22 }; \
23 // End of macro
24
25DEFINE_SIMPLE_STATE_EVENT(RoomNameEvent, "m.room.name", QString, name, "name")
26DEFINE_SIMPLE_STATE_EVENT(RoomTopicEvent, "m.room.topic", QString, topic,
27 "topic")
28DEFINE_SIMPLE_STATE_EVENT(RoomPinnedEventsEvent, "m.room.pinned_events",
29 QStringList, pinnedEvents, "pinned")
30using RoomPinnedEvent
31 [[deprecated("RoomPinnedEventsEvent is the new, correct name")]] =
32 RoomPinnedEventsEvent;
33
34constexpr inline auto RoomAliasesEventKey = "aliases"_ls;
35class QUOTIENT_API RoomAliasesEvent
36 : public KeyedStateEventBase<
37 RoomAliasesEvent,
38 EventContent::SingleKeyValue<QStringList, RoomAliasesEventKey>>
39{
40public:
41 QUO_EVENT(RoomAliasesEvent, "m.room.aliases")
42 using KeyedStateEventBase::KeyedStateEventBase;
43
44 Q_DECL_DEPRECATED_X(
45 "m.room.aliases events are deprecated by the Matrix spec; use"
46 " RoomCanonicalAliasEvent::altAliases() to get non-authoritative aliases")
47 QString server() const { return stateKey(); }
48 Q_DECL_DEPRECATED_X(
49 "m.room.aliases events are deprecated by the Matrix spec; use"
50 " RoomCanonicalAliasEvent::altAliases() to get non-authoritative aliases")
51 QStringList aliases() const { return content().value; }
52};
53} // namespace Quotient
54