diff --git a/Riot/Modules/MatrixKit/Models/Account/MXKAccount.h b/Riot/Modules/MatrixKit/Models/Account/MXKAccount.h index fd28f9939..679e805f8 100644 --- a/Riot/Modules/MatrixKit/Models/Account/MXKAccount.h +++ b/Riot/Modules/MatrixKit/Models/Account/MXKAccount.h @@ -359,11 +359,6 @@ typedef BOOL (^MXKAccountOnCertificateChange)(MXKAccount *mxAccount, NSData *cer - (void)resetDeviceId; #pragma mark - Sync filter -/** - Check if the homeserver supports room members lazy loading. - @param completion the check result. - */ -- (void)supportLazyLoadOfRoomMembers:(void (^)(BOOL supportLazyLoadOfRoomMembers))completion; /** Call this method at an appropriate time to attempt dehydrating to a new backup device diff --git a/Riot/Modules/MatrixKit/Models/Account/MXKAccount.m b/Riot/Modules/MatrixKit/Models/Account/MXKAccount.m index ff00d901f..7f4111800 100644 --- a/Riot/Modules/MatrixKit/Models/Account/MXKAccount.m +++ b/Riot/Modules/MatrixKit/Models/Account/MXKAccount.m @@ -2088,7 +2088,8 @@ static NSArray *initialSyncSilentErrorsHTTPStatusCodes; #pragma mark - Sync filter -- (void)supportLazyLoadOfRoomMembers:(void (^)(BOOL supportLazyLoadOfRoomMembers))completion +- (void)supportLazyLoadOfRoomMembersWithMatrixVersion:(MXMatrixVersions *)matrixVersions + completion:(void (^)(BOOL supportLazyLoadOfRoomMembers))completion { void(^onUnsupportedLazyLoadOfRoomMembers)(NSError *) = ^(NSError *error) { completion(NO); @@ -2106,8 +2107,8 @@ static NSArray *initialSyncSilentErrorsHTTPStatusCodes; else { // Check the Matrix versions supported by the HS - [self.mxSession supportedMatrixVersions:^(MXMatrixVersions *matrixVersions) { - + if (matrixVersions) + { if (matrixVersions.supportLazyLoadMembers) { // The HS supports LL @@ -2117,8 +2118,11 @@ static NSArray *initialSyncSilentErrorsHTTPStatusCodes; { onUnsupportedLazyLoadOfRoomMembers(nil); } - - } failure:onUnsupportedLazyLoadOfRoomMembers]; + } + else + { + completion(NO); + } } } failure:onUnsupportedLazyLoadOfRoomMembers]; } @@ -2133,11 +2137,14 @@ static NSArray *initialSyncSilentErrorsHTTPStatusCodes; // Check settings BOOL syncWithLazyLoadOfRoomMembersSetting = [MXKAppSettings standardAppSettings].syncWithLazyLoadOfRoomMembers; - void(^buildSyncFilter)(BOOL) = ^(BOOL supportsNotificationsForThreads) { + void(^buildSyncFilter)(MXMatrixVersions *) = ^(MXMatrixVersions *matrixVersions) { + BOOL supportsNotificationsForThreads = matrixVersions ? matrixVersions.supportsNotificationsForThreads : NO; + if (syncWithLazyLoadOfRoomMembersSetting) { // Check if the server supports LL sync filter before enabling it - [self supportLazyLoadOfRoomMembers:^(BOOL supportLazyLoadOfRoomMembers) { + [self supportLazyLoadOfRoomMembersWithMatrixVersion:matrixVersions completion:^(BOOL supportLazyLoadOfRoomMembers) { + if (supportLazyLoadOfRoomMembers) { @@ -2161,9 +2168,10 @@ static NSArray *initialSyncSilentErrorsHTTPStatusCodes; }; [mxSession supportedMatrixVersions:^(MXMatrixVersions *matrixVersions) { - buildSyncFilter(matrixVersions.supportsNotificationsForThreads); + buildSyncFilter(matrixVersions); } failure:^(NSError *error) { - buildSyncFilter(NO); + MXLogWarning(@"[MXAccount] buildSyncFilter: failed to get supported versions: %@", error); + buildSyncFilter(nil); }]; }