Device Verification: Incoming screen: UI: Use a rounded MXKImageView

This commit is contained in:
manuroe
2019-04-15 15:28:59 +02:00
parent 7cb5e71bcb
commit c2cdfa71ae
5 changed files with 22 additions and 7 deletions

View File

@@ -36,7 +36,7 @@
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="favourite" translatesAutoresizingMaskIntoConstraints="NO" id="4aN-Cq-vqG">
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="favourite" translatesAutoresizingMaskIntoConstraints="NO" id="4aN-Cq-vqG" customClass="MXKImageView">
<rect key="frame" x="155.5" y="86" width="64" height="64"/>
<constraints>
<constraint firstAttribute="width" constant="64" id="BSb-a6-GeY"/>

View File

@@ -34,7 +34,7 @@ final class DeviceVerificationIncomingViewController: UIViewController {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var avatarImageView: UIImageView!
@IBOutlet weak var avatarImageView: MXKImageView!
@IBOutlet weak var userDisplaynameLabel: UILabel!
@IBOutlet weak var deviceIdLabel: UILabel!
@@ -146,10 +146,15 @@ final class DeviceVerificationIncomingViewController: UIViewController {
self.description2Label.text = VectorL10n.deviceVerificationIncomingDescription2
self.continueButton.setTitle(VectorL10n.continue, for: .normal)
// TODO: Use MXKImageView
let url = URL(string: self.viewModel.avatarUrl)
let data = try? Data(contentsOf: url!)
self.avatarImageView.image = UIImage(data: data!)
if let avatarImageView = self.avatarImageView {
let defaultavatarImage = AvatarGenerator.generateAvatar(forMatrixItem: self.viewModel.userId, withDisplayName: self.viewModel.userDisplayName)
avatarImageView.enableInMemoryCache = true
avatarImageView.setImageURI(self.viewModel.avatarUrl, withType: nil, andImageOrientation: .up, previewImage: defaultavatarImage, mediaManager: self.viewModel.mediaManager)
avatarImageView.layer.cornerRadius = avatarImageView.frame.size.width / 2
avatarImageView.clipsToBounds = true
}
self.userDisplaynameLabel.text = self.viewModel.userDisplayName
self.deviceIdLabel.text = self.viewModel.deviceId

View File

@@ -29,10 +29,13 @@ final class DeviceVerificationIncomingViewModel: DeviceVerificationIncomingViewM
// MARK: Public
var userId: String
var userDisplayName: String
var avatarUrl: String
var deviceId: String
var mediaManager: MXMediaManager
weak var viewDelegate: DeviceVerificationIncomingViewModelViewDelegate?
weak var coordinatorDelegate: DeviceVerificationIncomingViewModelCoordinatorDelegate?
@@ -41,10 +44,13 @@ final class DeviceVerificationIncomingViewModel: DeviceVerificationIncomingViewM
init(session: MXSession, otherUser: MXUser, transaction: MXIncomingSASTransaction) {
self.session = session
self.transaction = transaction
self.userId = otherUser.userId
self.userDisplayName = otherUser.displayname
self.avatarUrl = self.session.mediaManager.url(ofContent: otherUser.avatarUrl)
self.avatarUrl = otherUser.avatarUrl
self.deviceId = transaction.otherDeviceId
self.mediaManager = session.mediaManager
self.registerTransactionDidStateChangeNotification(transaction: transaction)
}

View File

@@ -30,9 +30,12 @@ protocol DeviceVerificationIncomingViewModelCoordinatorDelegate: class {
/// Protocol describing the view model used by `DeviceVerificationIncomingViewController`
protocol DeviceVerificationIncomingViewModelType {
var userId: String { get }
var userDisplayName: String { get }
var avatarUrl: String { get }
var deviceId: String { get }
var mediaManager: MXMediaManager { get }
var viewDelegate: DeviceVerificationIncomingViewModelViewDelegate? { get set }
var coordinatorDelegate: DeviceVerificationIncomingViewModelCoordinatorDelegate? { get set }

View File

@@ -10,3 +10,4 @@
#import "ThemeService.h"
#import "TableViewCellWithCheckBoxAndLabel.h"
#import "RecentsDataSource.h"
#import "AvatarGenerator.h"