diff --git a/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewController.storyboard b/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewController.storyboard
index ef78ae43f..fc55b347f 100644
--- a/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewController.storyboard
+++ b/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewController.storyboard
@@ -36,7 +36,7 @@
-
+
diff --git a/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewController.swift b/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewController.swift
index b414e9c17..2972e81a2 100644
--- a/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewController.swift
+++ b/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewController.swift
@@ -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
diff --git a/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewModel.swift b/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewModel.swift
index a60acef4c..601dee378 100644
--- a/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewModel.swift
+++ b/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewModel.swift
@@ -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)
}
diff --git a/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewModelType.swift b/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewModelType.swift
index be7ad12d0..9cd19b912 100644
--- a/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewModelType.swift
+++ b/Riot/Modules/DeviceVerification/Incoming/DeviceVerificationIncomingViewModelType.swift
@@ -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 }
diff --git a/Riot/SupportingFiles/Riot-Bridging-Header.h b/Riot/SupportingFiles/Riot-Bridging-Header.h
index 3d91a54f2..bc166e61d 100644
--- a/Riot/SupportingFiles/Riot-Bridging-Header.h
+++ b/Riot/SupportingFiles/Riot-Bridging-Header.h
@@ -10,3 +10,4 @@
#import "ThemeService.h"
#import "TableViewCellWithCheckBoxAndLabel.h"
#import "RecentsDataSource.h"
+#import "AvatarGenerator.h"