Skip to content

Commit

Permalink
Merge branch 'release/0.19.2/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
manuroe committed Jun 24, 2021
2 parents 7747208 + 71f24aa commit 81c1074
Show file tree
Hide file tree
Showing 9 changed files with 146 additions and 4 deletions.
27 changes: 27 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,30 @@
Changes in 0.19.2 (2021-06-24)
=================================================

✨ Features
*

🙌 Improvements
* MXSDKOptions: Introduce an option to auto-accept room invites.

🐛 Bugfix
* MXSession.homeserverWellknown was no more computed since 0.19.0.

⚠️ API Changes
*

🗣 Translations
*

🧱 Build
*

Others
*

Improvements:


Changes in 0.19.1 (2021-06-21)
=================================================

Expand Down
2 changes: 1 addition & 1 deletion MatrixSDK.podspec
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Pod::Spec.new do |s|

s.name = "MatrixSDK"
s.version = "0.19.1"
s.version = "0.19.2"
s.summary = "The iOS SDK to build apps compatible with Matrix (https://www.matrix.org)"

s.description = <<-DESC
Expand Down
15 changes: 15 additions & 0 deletions MatrixSDK/Background/MXBackgroundSyncService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,21 @@ public enum MXBackgroundSyncServiceError: Error {
handleToDeviceEvent(event)
}

if MXSDKOptions.sharedInstance().autoAcceptRoomInvites,
let invitedRooms = syncResponse.rooms?.invite {
invitedRooms.forEach { roomId, roomSync in
MXLog.debug("[MXBackgroundSyncService] handleSyncResponse: Auto-accepting room invite for \(roomId)")
restClient.joinRoom(roomId) { response in
switch response {
case .success:
MXLog.debug("[MXBackgroundSyncService] handleSyncResponse: Joined room: \(roomId)")
case .failure(let error):
MXLog.error("[MXBackgroundSyncService] handleSyncResponse: Failed to join room: \(roomId), error: \(error)")
}
}
}
}

MXLog.debug("[MXBackgroundSyncService] handleSyncResponse: Next sync token: \(syncResponse.nextBatch)")
}

Expand Down
5 changes: 5 additions & 0 deletions MatrixSDK/Data/MXRoom.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@ FOUNDATION_EXPORT NSString *const kMXRoomInitialSyncNotification;
*/
FOUNDATION_EXPORT NSString *const kMXRoomDidFlushDataNotification;

/**
Error code when tried to join an already joined room.
*/
FOUNDATION_EXPORT NSInteger const kMXRoomAlreadyJoinedErrorCode;

/**
`MXRoom` is the class
*/
Expand Down
1 change: 1 addition & 0 deletions MatrixSDK/Data/MXRoom.m
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@

NSString *const kMXRoomDidFlushDataNotification = @"kMXRoomDidFlushDataNotification";
NSString *const kMXRoomInitialSyncNotification = @"kMXRoomInitialSyncNotification";
NSInteger const kMXRoomAlreadyJoinedErrorCode = 9001;

@interface MXRoom ()
{
Expand Down
7 changes: 7 additions & 0 deletions MatrixSDK/MXSDKOptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,13 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (nonatomic, nullable) NSDictionary<NSString *, NSString*> *HTTPAdditionalHeaders;

/**
Flag to automatically accept room invites.
@remark NO by default.
*/
@property (nonatomic, assign) BOOL autoAcceptRoomInvites;

@end

NS_ASSUME_NONNULL_END
1 change: 1 addition & 0 deletions MatrixSDK/MXSDKOptions.m
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ - (instancetype)init
_mediaCacheAppVersion = 0;
_applicationGroupIdentifier = nil;
_HTTPAdditionalHeaders = @{};
_autoAcceptRoomInvites = NO;
}

return self;
Expand Down
90 changes: 88 additions & 2 deletions MatrixSDK/MXSession.m
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,7 @@ - (void)handleSyncResponse:(MXSyncResponse *)syncResponse
[room liveTimeline:^(MXEventTimeline *liveTimeline) {
[room handleInvitedRoomSync:invitedRoomSync onComplete:^{
[room.summary handleInvitedRoomSync:invitedRoomSync];

dispatch_group_leave(dispatchGroup);
}];
}];
Expand Down Expand Up @@ -881,7 +882,7 @@ - (void)_startWithSyncFilterId:(NSString *)syncFilterId onServerSyncDone:(void (
// Get wellknown data only at the login time
if (!self.homeserverWellknown)
{
// [self refreshHomeserverWellknown:nil failure:nil];
[self refreshHomeserverWellknown:nil failure:nil];
}
}

Expand Down Expand Up @@ -1438,6 +1439,12 @@ - (void)serverSyncWithServerTimeout:(NSUInteger)serverTimeout
// Pursue live events listening
[self serverSyncWithServerTimeout:nextServerTimeout success:nil failure:nil clientTimeout:CLIENT_TIMEOUT_MS setPresence:nil];

// attempt to join invited rooms if sync succeeds
if (MXSDKOptions.sharedInstance.autoAcceptRoomInvites)
{
[self joinPendingRoomInvites];
}

if (success)
{
success();
Expand Down Expand Up @@ -2217,6 +2224,21 @@ - (MXHTTPOperation*)joinRoom:(NSString*)roomIdOrAlias
success:(void (^)(MXRoom *room))success
failure:(void (^)(NSError *error))failure {

if ([self isJoinedOnRoom:roomIdOrAlias])
{
if (failure)
{
dispatch_async(dispatch_get_main_queue(), ^{
failure([NSError errorWithDomain:kMXNSErrorDomain
code:kMXRoomAlreadyJoinedErrorCode
userInfo:@{
NSLocalizedDescriptionKey: @"Room already joined"
}]);
});
}
return [MXHTTPOperation new];
}

[self updateRoomSummaryWithRoomId:roomIdOrAlias withMembershipState:MXMembershipTransitionStateJoining];

return [matrixRestClient joinRoom:roomIdOrAlias viaServers:viaServers withThirdPartySigned:nil success:^(NSString *theRoomId) {
Expand Down Expand Up @@ -2358,6 +2380,44 @@ - (MXHTTPOperation*)canEnableE2EByDefaultInNewRoomWithUsers:(NSArray<NSString*>*
} failure:failure];
}

- (void)joinPendingRoomInvites
{
NSArray<NSString *> *roomIds = [[self.invitedRooms valueForKey:@"roomId"] copy];
[roomIds enumerateObjectsUsingBlock:^(NSString * _Nonnull roomId, NSUInteger idx, BOOL * _Nonnull stop) {
MXLogDebug(@"[MXSession] joinPendingRoomInvites: Auto-accepting room invite for %@", roomId)
[self joinRoom:roomId viaServers:nil success:^(MXRoom *room) {
MXLogDebug(@"[MXSession] joinPendingRoomInvites: Joined room: %@", roomId)
} failure:^(NSError *error) {
MXLogError(@"[MXSession] joinPendingRoomInvites: Failed to join room: %@, error: %@", roomId, error)

if (error.code == kMXRoomAlreadyJoinedErrorCode)
{
[self removeInvitedRoomById:roomId];
}
}];
}];
}

- (BOOL)isJoinedOnRoom:(NSString *)roomIdOrAlias
{
MXRoom *room = nil;
if ([MXTools isMatrixRoomIdentifier:roomIdOrAlias])
{
room = [self roomWithRoomId:roomIdOrAlias];
}
else if ([MXTools isMatrixRoomAlias:roomIdOrAlias])
{
room = [self roomWithAlias:roomIdOrAlias];
}

if (!room)
{
return NO;
}
return room.summary.membershipTransitionState == MXMembershipTransitionStateJoined
|| room.summary.membershipTransitionState == MXMembershipTransitionStateJoining;
}

#pragma mark - The user's rooms
- (BOOL)hasRoomWithRoomId:(NSString*)roomId
{
Expand Down Expand Up @@ -3640,6 +3700,31 @@ - (BOOL)removeInvitedRoom:(MXRoom*)roomToRemove
return hasBeenFound;
}

- (BOOL)removeInvitedRoomById:(NSString*)roomId
{
MXRoom *roomToRemove = nil;

// sanity check
if (invitedRooms.count > 0)
{
for(MXRoom* room in invitedRooms)
{
if ([room.roomId isEqualToString:roomId])
{
roomToRemove = room;
break;
}
}

if (roomToRemove)
{
[invitedRooms removeObject:roomToRemove];
}
}

return roomToRemove != nil;
}

- (NSArray<MXRoom *> *)invitedRooms
{
if (nil == invitedRooms && self.state > MXSessionStateInitialised)
Expand Down Expand Up @@ -3682,7 +3767,8 @@ - (BOOL)removeInvitedRoom:(MXRoom*)roomToRemove
MXRoomState *roomPrevState = (MXRoomState *)customObject;
MXRoom *room = [self roomWithRoomId:event.roomId];

if (room.summary.membership == MXMembershipInvite)
if (room.summary.membershipTransitionState == MXMembershipTransitionStateInvited
|| room.summary.membershipTransitionState == MXMembershipTransitionStateFailedJoining)
{
// check if the room is not yet in the list
// must be done in forward and sync direction
Expand Down
2 changes: 1 addition & 1 deletion MatrixSDK/MatrixSDKVersion.m
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@

#import <Foundation/Foundation.h>

NSString *const MatrixSDKVersion = @"0.19.1";
NSString *const MatrixSDKVersion = @"0.19.2";

0 comments on commit 81c1074

Please sign in to comment.