MESSENGER-5781 fix trigger for federation decision sheet in room preview

This commit is contained in:
JanNiklas Grabowski
2024-03-14 16:39:32 +01:00
parent cd7b5eeb95
commit d4e3751d03

View File

@@ -8402,44 +8402,48 @@ static CGSize kThreadListBarButtonItemImageSize;
// Show sheet only when opening room
if (!self.wasFederationDecisionSheetShownBefore)
{
// Do not show sheet if room DM
if (!self.roomDataSource.room.isDirect)
// #5781 Do not show sheet in case of preview
if (!self.isRoomPreview)
{
// Do not show sheet if room is personal notes room
if (!self.roomDataSource.room.isPersonalNotesRoom)
// Do not show sheet if room DM
if (!self.roomDataSource.room.isDirect)
{
// Do not show sheet if isFederated room flag is false (default == true)
[self.roomDataSource.room getFederatedFlagWithCompletion:^(BOOL isFederated) {
if (isFederated)
{
// Do not show sheet if users power level is lower than admin
MXRoomPowerLevels *powerLevels = self.roomDataSource.roomState.powerLevels;
if ([powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId] >= RoomPowerLevelAdmin)
// Do not show sheet if room is personal notes room
if (!self.roomDataSource.room.isPersonalNotesRoom)
{
// Do not show sheet if isFederated room flag is false (default == true)
[self.roomDataSource.room getFederatedFlagWithCompletion:^(BOOL isFederated) {
if (isFederated)
{
// Show sheet if no serverACL have been configured
[self.roomDataSource.room getCurrentRoomServerACLSettingsWithCompletion:^(NSString *serverACL)
{
if (serverACL == nil) {
self.wasFederationDecisionSheetShownBefore = true;
RoomFederationDecisionSheet *federationDecisionView = [[RoomFederationDecisionSheet alloc] init];
UIImage *roomAvatarImage;
MXKImageView *roomAvatarImageView = ((RoomTitleView*)self.titleView).pictureView;
if (roomAvatarImageView && roomAvatarImageView.image)
{
roomAvatarImage = roomAvatarImageView.image;
// Do not show sheet if users power level is lower than admin
MXRoomPowerLevels *powerLevels = self.roomDataSource.roomState.powerLevels;
if ([powerLevels powerLevelOfUserWithUserID:self.mainSession.myUser.userId] >= RoomPowerLevelAdmin)
{
// Show sheet if no serverACL have been configured
[self.roomDataSource.room getCurrentRoomServerACLSettingsWithCompletion:^(NSString *serverACL)
{
if (serverACL == nil) {
self.wasFederationDecisionSheetShownBefore = true;
RoomFederationDecisionSheet *federationDecisionView = [[RoomFederationDecisionSheet alloc] init];
UIImage *roomAvatarImage;
MXKImageView *roomAvatarImageView = ((RoomTitleView*)self.titleView).pictureView;
if (roomAvatarImageView && roomAvatarImageView.image)
{
roomAvatarImage = roomAvatarImageView.image;
}
else
{
roomAvatarImage = [AvatarGenerator generateAvatarForMatrixItem:self.roomDataSource.roomId withDisplayName:self.roomDataSource.room.summary.displayName];
}
UIViewController *sheetViewController = [federationDecisionView makeViewControllerWithRoom:self.roomDataSource.room roomAvatarImage: roomAvatarImage];
sheetViewController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:sheetViewController animated:YES completion:nil];
}
else
{
roomAvatarImage = [AvatarGenerator generateAvatarForMatrixItem:self.roomDataSource.roomId withDisplayName:self.roomDataSource.room.summary.displayName];
}
UIViewController *sheetViewController = [federationDecisionView makeViewControllerWithRoom:self.roomDataSource.room roomAvatarImage: roomAvatarImage];
sheetViewController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:sheetViewController animated:YES completion:nil];
}
}];
}];
}
}
}
}];
}];
}
}
}
}