mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-17 23:18:27 +02:00
Update the app with new MXStore and new recentsWithTypeIn
This commit is contained in:
@@ -29,6 +29,9 @@ extern NSString *const kMatrixHandlerUnsupportedMessagePrefix;
|
||||
@property (strong, nonatomic) NSString *userId;
|
||||
@property (strong, nonatomic) NSString *accessToken;
|
||||
|
||||
// The type of events to display
|
||||
@property (strong, nonatomic) NSArray *eventsFilterForMessages;
|
||||
|
||||
// Matrix user's settings
|
||||
@property (strong, nonatomic) NSString *userDisplayName;
|
||||
@property (strong, nonatomic) NSString *userPictureURL;
|
||||
|
||||
@@ -102,27 +102,40 @@ static MatrixHandler *sharedHandler = nil;
|
||||
//Alert user
|
||||
[[AppDelegate theDelegate] showErrorAsAlert:error];
|
||||
}];
|
||||
|
||||
// Use MXMemoryStore as MXStore to not loose message
|
||||
MXMemoryStore *store = [[MXMemoryStore alloc] init];
|
||||
|
||||
self.mxSession = [[MXSession alloc] initWithMatrixRestClient:self.mxRestClient];
|
||||
self.mxSession = [[MXSession alloc] initWithMatrixRestClient:self.mxRestClient andStore:store];
|
||||
// Check here whether the app user wants to display all the events
|
||||
if ([[AppSettings sharedSettings] displayAllEvents]) {
|
||||
// Override events filter to retrieve all the events
|
||||
self.mxSession.eventsFilterForMessages = @[
|
||||
kMXEventTypeStringRoomName,
|
||||
kMXEventTypeStringRoomTopic,
|
||||
kMXEventTypeStringRoomMember,
|
||||
kMXEventTypeStringRoomCreate,
|
||||
kMXEventTypeStringRoomJoinRules,
|
||||
kMXEventTypeStringRoomPowerLevels,
|
||||
kMXEventTypeStringRoomAddStateLevel,
|
||||
kMXEventTypeStringRoomSendEventLevel,
|
||||
kMXEventTypeStringRoomOpsLevel,
|
||||
kMXEventTypeStringRoomAliases,
|
||||
kMXEventTypeStringRoomMessage,
|
||||
kMXEventTypeStringRoomMessageFeedback,
|
||||
kMXEventTypeStringPresence
|
||||
];
|
||||
// Use a filter to retrieve all the events
|
||||
self.eventsFilterForMessages = @[
|
||||
kMXEventTypeStringRoomName,
|
||||
kMXEventTypeStringRoomTopic,
|
||||
kMXEventTypeStringRoomMember,
|
||||
kMXEventTypeStringRoomCreate,
|
||||
kMXEventTypeStringRoomJoinRules,
|
||||
kMXEventTypeStringRoomPowerLevels,
|
||||
kMXEventTypeStringRoomAddStateLevel,
|
||||
kMXEventTypeStringRoomSendEventLevel,
|
||||
kMXEventTypeStringRoomOpsLevel,
|
||||
kMXEventTypeStringRoomAliases,
|
||||
kMXEventTypeStringRoomMessage,
|
||||
kMXEventTypeStringRoomMessageFeedback,
|
||||
kMXEventTypeStringPresence
|
||||
];
|
||||
}
|
||||
else {
|
||||
// Display only a subset of events
|
||||
self.eventsFilterForMessages = @[
|
||||
kMXEventTypeStringRoomName,
|
||||
kMXEventTypeStringRoomTopic,
|
||||
kMXEventTypeStringRoomMember,
|
||||
kMXEventTypeStringRoomMessage
|
||||
];
|
||||
}
|
||||
|
||||
// Launch mxSession
|
||||
[self.mxSession start:^{
|
||||
self.isInitialSyncDone = YES;
|
||||
@@ -233,7 +246,7 @@ static MatrixHandler *sharedHandler = nil;
|
||||
- (void)enableEventsNotifications:(BOOL)isEnabled {
|
||||
if (isEnabled) {
|
||||
// Register events listener
|
||||
eventsListener = [self.mxSession listenToEventsOfTypes:self.mxSession.eventsFilterForMessages onEvent:^(MXEvent *event, MXEventDirection direction, id customObject) {
|
||||
eventsListener = [self.mxSession listenToEventsOfTypes:self.eventsFilterForMessages onEvent:^(MXEvent *event, MXEventDirection direction, id customObject) {
|
||||
// Consider only live event (Ignore presence event)
|
||||
if (direction == MXEventDirectionForwards && (event.eventType != MXEventTypePresence)) {
|
||||
MXRoomState* roomState = (MXRoomState*)customObject;
|
||||
|
||||
@@ -167,13 +167,13 @@
|
||||
if ([mxHandler isInitialSyncDone] || [mxHandler isLogged] == NO) {
|
||||
// Update recents
|
||||
if (mxHandler.mxSession) {
|
||||
recents = [NSMutableArray arrayWithArray:mxHandler.mxSession.recents];
|
||||
recents = [NSMutableArray arrayWithArray:[mxHandler.mxSession recentsWithTypeIn:mxHandler.eventsFilterForMessages]];
|
||||
// Register recent listener
|
||||
recentsListener = [mxHandler.mxSession listenToEventsOfTypes:mxHandler.mxSession.eventsFilterForMessages onEvent:^(MXEvent *event, MXEventDirection direction, id customObject) {
|
||||
recentsListener = [mxHandler.mxSession listenToEventsOfTypes:mxHandler.eventsFilterForMessages onEvent:^(MXEvent *event, MXEventDirection direction, id customObject) {
|
||||
// consider only live event
|
||||
if (direction == MXEventDirectionForwards) {
|
||||
// Refresh the whole recents list
|
||||
recents = [NSMutableArray arrayWithArray:mxHandler.mxSession.recents];
|
||||
recents = [NSMutableArray arrayWithArray:[mxHandler.mxSession recentsWithTypeIn:mxHandler.eventsFilterForMessages]];
|
||||
// Reload table
|
||||
[self.tableView reloadData];
|
||||
[_activityIndicator stopAnimating];
|
||||
|
||||
@@ -280,7 +280,7 @@ NSString *const kCmdResetUserPowerLevel = @"/deop";
|
||||
messages = [NSMutableArray array];
|
||||
[[AppSettings sharedSettings] addObserver:self forKeyPath:@"hideUnsupportedMessages" options:0 context:nil];
|
||||
// Register a listener to handle messages
|
||||
messagesListener = [mxRoom listenToEventsOfTypes:mxHandler.mxSession.eventsFilterForMessages onEvent:^(MXEvent *event, MXEventDirection direction, MXRoomState *roomState) {
|
||||
messagesListener = [mxRoom listenToEventsOfTypes:mxHandler.eventsFilterForMessages onEvent:^(MXEvent *event, MXEventDirection direction, MXRoomState *roomState) {
|
||||
BOOL shouldScrollToBottom = NO;
|
||||
|
||||
// Handle first live events
|
||||
|
||||
Reference in New Issue
Block a user