element-ios/Riot/Modules/Room/TimelineCells/Encryption/RoomEncryptedDataBubbleCell.m

77 lines
2.4 KiB
Objective-C

/*
Copyright 2024 New Vector Ltd.
Copyright 2017 Vector Creations Ltd
Copyright 2016 OpenMarket Ltd
SPDX-License-Identifier: AGPL-3.0-only
Please see LICENSE in the repository root for full details.
*/
#import "RoomEncryptedDataBubbleCell.h"
#import "GeneratedInterface-Swift.h"
NSString *const kRoomEncryptedDataBubbleCellTapOnEncryptionIcon = @"kRoomEncryptedDataBubbleCellTapOnEncryptionIcon";
@implementation RoomEncryptedDataBubbleCell
+ (UIImage*)encryptionIconForBubbleComponent:(MXKRoomBubbleComponent *)bubbleComponent
{
switch (bubbleComponent.encryptionDecoration) {
case EventEncryptionDecorationNone:
return nil;
case EventEncryptionDecorationGrey:
return AssetImages.encryptionUntrusted.image;
case EventEncryptionDecorationRed:
return AssetImages.encryptionWarning.image;
default:
return nil;
}
}
+ (void)addEncryptionStatusFromBubbleData:(MXKRoomBubbleCellData *)bubbleData inContainerView:(UIView *)containerView
{
// Ensure that older subviews are removed
// They should be (they are removed when the cell is not anymore used).
// But, it seems that is not always true.
NSArray* views = [containerView subviews];
for (UIView* view in views)
{
[view removeFromSuperview];
}
NSArray *bubbleComponents = bubbleData.bubbleComponents;
MXKRoomBubbleComponent *component;
for (NSUInteger componentIndex = 0; componentIndex < bubbleComponents.count; componentIndex++)
{
component = bubbleComponents[componentIndex];
// Ignore components without display.
if (!component.attributedTextMessage)
{
continue;
}
UIImage *icon = [[self class] encryptionIconForBubbleComponent:component];
if (icon)
{
UIImageView *encryptStatusImageView = [[UIImageView alloc] initWithImage:icon];
CGRect frame = encryptStatusImageView.frame;
frame.origin.y = component.position.y + 3;
encryptStatusImageView.frame = frame;
CGPoint center = encryptStatusImageView.center;
center.x = containerView.frame.size.width / 2;
encryptStatusImageView.center = center;
encryptStatusImageView.tag = componentIndex;
[containerView addSubview:encryptStatusImageView];
}
}
}
@end