Go to the documentation of this file.
13 #include <immer/flex_vector.hpp>
14 #include <immer/map.hpp>
34 immer::map<std::string, immer::map<std::string, Event>>
messages;
45 template<
class Archive>
51 bool operator==(
const ReadReceipt &a,
const ReadReceipt &b);
52 bool operator!=(
const ReadReceipt &a,
const ReadReceipt &b);
181 template<
class Archive>
188 immer::map<std::string, immer::flex_vector<std::string>> devices;
189 ar & txnId &
event & devices;
191 std::move(txnId), std::move(event), std::move(devices));
214 immer::map<std::string , immer::flex_vector<std::string >>>;
293 bool hasUser(std::string userId)
const;
298 immer::map<std::string, double>
tags()
const;
324 using Action = std::variant<
391 immer::map<std::string, RoomModel>
rooms;
393 inline auto at(std::string
id)
const {
return rooms.at(
id); }
395 inline bool has(std::string
id)
const {
return rooms.find(
id); }
397 using Action = std::variant<
410 template<
class Archive>
450 if constexpr (
typename Archive::is_loading()) {
468 if constexpr (
typename Archive::is_loading()) {
477 template<
class Archive>
485 BOOST_CLASS_VERSION(
Kazv::ReadReceipt, 0)
486 BOOST_CLASS_VERSION(
Kazv::RoomModel, 8)
487 BOOST_CLASS_VERSION(
Kazv::RoomListModel, 0)
immer::flex_vector< Event > events
Definition: room-model.hpp:97
immer::map< std::string, double > tags() const
Definition: room-model.cpp:579
Definition: room-model.hpp:123
EventList heroMemberEvents() const
Definition: room-model.cpp:500
bool shouldRotateSessionKey
a marker to indicate whether we need to rotate the session key earlier than it expires (e....
Definition: room-model.hpp:240
std::size_t localUnreadCount
The local unread count for this room.
Definition: room-model.hpp:258
std::optional< std::string > gapEventId
Definition: room-model.hpp:82
EventList invitedMemberEvents() const
Definition: room-model.cpp:480
immer::flex_vector< std::string > heroIds
Definition: room-model.hpp:243
Membership membership
Definition: room-model.hpp:224
immer::map< std::string, Event > messages
Definition: room-model.hpp:222
ReverseEventRelationshipMap reverseEventRelationships
Definition: room-model.hpp:249
static RoomListModel update(RoomListModel l, Action a)
Definition: room-model.cpp:392
Definition: room-model.hpp:90
std::size_t invitedMemberCount
Definition: room-model.hpp:252
std::string localDraft
Definition: room-model.hpp:233
immer::map< KeyOfState, Event > stateEvents
Definition: room-model.hpp:217
Timestamp timestamp
Definition: room-model.hpp:42
Definition: room-model.hpp:31
Definition: room-model.hpp:95
immer::flex_vector< std::string > timeline
Definition: room-model.hpp:221
EventList events
Definition: room-model.hpp:102
Definition: room-model.hpp:114
void regenerateRelationships()
Definition: room-model.cpp:639
Definition: room-model.hpp:138
bool encrypted
Definition: room-model.hpp:235
bool operator!=(BaseJob a, BaseJob b)
Definition: basejob.cpp:292
const double ROOM_TAG_DEFAULT_ORDER
Definition: room-model.hpp:179
RoomMembership
Definition: types.hpp:127
std::string roomId
Definition: room-model.hpp:216
immer::map< std::string, RoomModel > rooms
Definition: room-model.hpp:391
auto at(std::string id) const
Definition: room-model.hpp:393
bool hasUser(std::string userId) const
Definition: room-model.cpp:533
RoomAction roomAction
Definition: room-model.hpp:386
Definition: room-model.hpp:76
PendingRoomKeyEvent makePendingRoomKeyEventV0(std::string txnId, Event event, immer::map< std::string, immer::flex_vector< std::string >> devices)
Definition: room-model.cpp:25
bool operator==(BaseJob a, BaseJob b)
Definition: basejob.cpp:280
EventList knockedMemberEvents() const
Definition: room-model.cpp:485
std::string myUserId
Definition: room-model.hpp:166
std::optional< PendingRoomKeyEvent > getPendingRoomKeyEventByTxnId(std::string txnId) const
Definition: room-model.cpp:558
std::string userId
Definition: room-model.hpp:56
Definition: location.hpp:10
immer::flex_vector< std::string > joinedMemberIds() const
Definition: room-model.cpp:450
std::int_fast64_t Timestamp
Definition: event.hpp:18
Definition: crypto.hpp:26
std::size_t joinedMemberCount
Definition: room-model.hpp:145
EventList joinedMemberEvents() const
Definition: room-model.cpp:475
Definition: room-model.hpp:143
auto operator[](std::string id) const
Definition: room-model.hpp:394
immer::flex_vector< std::string > bannedMemberIds() const
Definition: room-model.cpp:470
Event makeAddTagEvent(std::string tagId, std::optional< double > order) const
Definition: room-model.cpp:608
Definition: room-model.hpp:133
std::optional< LocalEchoDesc > getLocalEchoByTxnId(std::string txnId) const
Definition: room-model.cpp:546
std::optional< std::string > prevBatch
Definition: room-model.hpp:80
static RoomModel update(RoomModel r, Action a)
Definition: room-model.cpp:66
Definition: room-model.hpp:105
Definition: room-model.hpp:209
immer::map< std::string, Event > ephemeral
Definition: room-model.hpp:231
Definition: room-model.hpp:54
Event makeRemoveTagEvent(std::string tagId) const
Definition: room-model.cpp:620
EventList leftMemberEvents() const
Definition: room-model.cpp:490
void serialize(Archive &ar, ClientModel &m, std::uint32_t const version)
Definition: client-model.hpp:582
PendingRoomKeyEvent pendingRoomKeyEvent
Definition: room-model.hpp:135
Definition: push-rules-desc.hpp:37
bool membersFullyLoaded
Definition: room-model.hpp:242
std::string paginateBackToken
Definition: room-model.hpp:225
immer::map< std::string, immer::map< std::string, Event > > messages
Definition: room-model.hpp:34
std::size_t joinedMemberCount
Definition: room-model.hpp:251
immer::map< std::string, ReadReceipt > readReceipts
Read receipts for all users.
Definition: room-model.hpp:263
std::string localReadMarker
The local read marker for this room.
Definition: room-model.hpp:256
bool canPaginateBack
whether this room has earlier events to be fetched
Definition: room-model.hpp:227
RoomListModel::Action RoomListAction
Definition: room-model.hpp:403
MegOlmSessionRotateDesc sessionRotateDesc() const
Definition: room-model.cpp:520
Definition: room-model.hpp:110
Definition: room-model.hpp:128
Timestamp timestamp
Definition: room-model.hpp:57
std::size_t localNotificationCount
The local unread notification count for this room.
Definition: room-model.hpp:261
Definition: room-model.hpp:39
LocalEchoDesc localEcho
Definition: room-model.hpp:125
immer::flex_vector< std::string > unreadNotificationEventIds
Definition: room-model.hpp:276
EventList bannedMemberEvents() const
Definition: room-model.cpp:495
immer::map< std::string, immer::flex_vector< std::string > > eventReadUsers
A map from event id to a list of users that has read receipt at that point.
Definition: room-model.hpp:268
immer::flex_vector< Event > events
Definition: room-model.hpp:87
std::string roomId
Definition: room-model.hpp:385
immer::flex_vector< Event > stateEvents
Definition: room-model.hpp:73
immer::flex_vector< LocalEchoDesc > localEchoes
Definition: room-model.hpp:245
Remove local notifications that are already read.
Definition: room-model.hpp:164
void generateRelationships(EventList newEvents)
Fill in reverseEventRelationships by gathering the relationships specified in newEvents
Definition: room-model.cpp:627
immer::map< KeyOfState, Event > inviteState
Definition: room-model.hpp:218
PushRulesDesc pushRulesDesc
Definition: room-model.hpp:159
Definition: room-model.hpp:100
Definition: room-model.hpp:63
Definition: room-model.hpp:85
immer::flex_vector< Event > stateEvents
Definition: room-model.hpp:65
Update local notifications to include the new events.
Definition: room-model.hpp:156
std::string localDraft
Definition: room-model.hpp:107
std::string txnId
Definition: room-model.hpp:33
RoomModel::Action RoomAction
Definition: room-model.hpp:349
immer::map< std::string, immer::flex_vector< std::string > > undecryptedEvents
A map from the session id to a list of event ids of events that cannot (yet) be decrypted.
Definition: room-model.hpp:274
void recalculateUndecryptedEvents()
Definition: room-model.cpp:670
immer::flex_vector< PendingRoomKeyEvent > pendingRoomKeyEvents
Definition: room-model.hpp:247
Go from the back of stateEvents to the beginning, adding the event to room state only if the room has...
Definition: room-model.hpp:71
auto sortKeyForTimelineEvent(Event e) -> std::tuple< Timestamp, std::string >
Get the sort key for a timeline event.
Definition: room-model.cpp:61
std::optional< bool > limited
Definition: room-model.hpp:81
immer::flex_vector< std::string > heroIds
Definition: room-model.hpp:120
immer::map< std::string, Event > accountData
Definition: room-model.hpp:223
Definition: room-model.hpp:389
std::string myUserId
Definition: room-model.hpp:160
immer::map< std::string, immer::map< std::string, immer::flex_vector< std::string > >> ReverseEventRelationshipMap
Definition: room-model.hpp:214
std::variant< UpdateRoomAction > Action
Definition: room-model.hpp:399
immer::flex_vector< std::string > invitedMemberIds() const
Definition: room-model.cpp:455
immer::flex_vector< Event > events
Events from oldest to latest.
Definition: room-model.hpp:79
immer::flex_vector< Event > EventList
Definition: types.hpp:107
std::string txnId
Definition: room-model.hpp:140
std::size_t invitedMemberCount
Definition: room-model.hpp:150
std::string eventId
Definition: room-model.hpp:41
void addToUndecryptedEvents(EventList newEvents)
Fill in undecryptedEvents by gathering the session ids specified in newEvents.
Definition: room-model.cpp:646
RoomMembership membership
Definition: room-model.hpp:92
immer::flex_vector< std::string > knockedMemberIds() const
Definition: room-model.cpp:460
std::variant< AddStateEventsAction, MaybeAddStateEventsAction, AddToTimelineAction, AddAccountDataAction, ChangeMembershipAction, ChangeInviteStateAction, AddEphemeralAction, SetLocalDraftAction, SetRoomEncryptionAction, MarkMembersFullyLoadedAction, SetHeroIdsAction, AddLocalEchoAction, RemoveLocalEchoAction, AddPendingRoomKeyAction, RemovePendingRoomKeyAction, UpdateJoinedMemberCountAction, UpdateInvitedMemberCountAction, AddLocalNotificationsAction, RemoveReadLocalNotificationsAction > Action
Definition: room-model.hpp:344
bool has(std::string id) const
Definition: room-model.hpp:395
EventList newEvents
Definition: room-model.hpp:158
Definition: room-model.hpp:118
immer::map< std::string, std::string > timelineGaps
Definition: room-model.hpp:229
std::string txnId
Definition: room-model.hpp:130
Describes a local echo.
Definition: local-echo.hpp:18
Definition: room-model.hpp:383
Definition: room-model.hpp:148
immer::flex_vector< std::string > leftMemberIds() const
Definition: room-model.cpp:465