diff --git a/Riot/Modules/Call/CallViewController.m b/Riot/Modules/Call/CallViewController.m index 396865a09..920a875b6 100644 --- a/Riot/Modules/Call/CallViewController.m +++ b/Riot/Modules/Call/CallViewController.m @@ -535,7 +535,7 @@ - (void)openCallTransfer { - CallTransferMainViewController *controller = [CallTransferMainViewController instantiateWithSession:self.mainSession]; + CallTransferMainViewController *controller = [CallTransferMainViewController instantiateWithSession:self.mainSession ignoredUserIds:@[self.peer.userId]]; controller.delegate = self; UINavigationController *navController = [[RiotNavigationController alloc] initWithRootViewController:controller]; diff --git a/Riot/Modules/CallTransfer/CallTransferMainViewController.swift b/Riot/Modules/CallTransfer/CallTransferMainViewController.swift index b89ccc35a..7c59eb58a 100644 --- a/Riot/Modules/CallTransfer/CallTransferMainViewController.swift +++ b/Riot/Modules/CallTransfer/CallTransferMainViewController.swift @@ -61,10 +61,11 @@ final class CallTransferMainViewController: UIViewController { } } private var session: MXSession! + private var ignoredUserIds: [String] = [] private var theme: Theme! private lazy var contactsVC: CallTransferSelectContactViewController = { - let controller = CallTransferSelectContactViewController.instantiate(withSession: session) + let controller = CallTransferSelectContactViewController.instantiate(withSession: session, ignoredUserIds: ignoredUserIds) controller.delegate = self return controller }() @@ -84,9 +85,10 @@ final class CallTransferMainViewController: UIViewController { // MARK: - Setup - class func instantiate(withSession session: MXSession) -> CallTransferMainViewController { + class func instantiate(withSession session: MXSession, ignoredUserIds: [String] = []) -> CallTransferMainViewController { let viewController = StoryboardScene.CallTransferMainViewController.initialScene.instantiate() viewController.session = session + viewController.ignoredUserIds = ignoredUserIds viewController.theme = ThemeService.shared().theme return viewController } @@ -145,7 +147,7 @@ final class CallTransferMainViewController: UIViewController { theme.applyStyle(onNavigationBar: navigationBar) } - self.bottomBgView.backgroundColor = theme.headerBackgroundColor + self.bottomBgView.backgroundColor = theme.backgroundColor self.consultButton.tintColor = theme.tintColor self.consultButton.setTitleColor(theme.textPrimaryColor, for: .normal) self.connectButton.update(theme: theme) diff --git a/Riot/Modules/CallTransfer/SelectContact/CallTransferSelectContactViewController.swift b/Riot/Modules/CallTransfer/SelectContact/CallTransferSelectContactViewController.swift index 8d9edbc8c..1d1372745 100644 --- a/Riot/Modules/CallTransfer/SelectContact/CallTransferSelectContactViewController.swift +++ b/Riot/Modules/CallTransfer/SelectContact/CallTransferSelectContactViewController.swift @@ -34,13 +34,21 @@ final class CallTransferSelectContactViewController: UIViewController { // MARK: Private + private enum Constants { + static let maxNumberOfRecentContacts: UInt = 10 + } + private var session: MXSession! private var theme: Theme! private var contactsDataSource: ContactsDataSource! { didSet { + for userId in ignoredUserIds { + contactsDataSource.ignoredContactsByMatrixId[userId] = MXKContact() + } contactsDataSource.delegate = self } } + private var ignoredUserIds: [String] = [] private var selectedIndexPath: IndexPath? private lazy var mainSearchBar: UISearchBar = { @@ -73,11 +81,12 @@ final class CallTransferSelectContactViewController: UIViewController { // MARK: - Setup - class func instantiate(withSession session: MXSession) -> CallTransferSelectContactViewController { + class func instantiate(withSession session: MXSession, ignoredUserIds: [String] = []) -> CallTransferSelectContactViewController { let viewController = StoryboardScene.CallTransferSelectContactViewController.initialScene.instantiate() viewController.session = session - viewController.theme = ThemeService.shared().theme + viewController.ignoredUserIds = ignoredUserIds viewController.contactsDataSource = MatrixContactsDataSource(matrixSession: session) + viewController.theme = ThemeService.shared().theme return viewController } @@ -112,24 +121,40 @@ final class CallTransferSelectContactViewController: UIViewController { private func updateSections() { var tmpSections: [Section] = [] + let users = session.callManager.getRecentCalledUsers(Constants.maxNumberOfRecentContacts, + ignoredUserIds: ignoredUserIds) + var recentRows: [Row] = [] + for (index, user) in users.enumerated() { + let indexPath = IndexPath(row: index, section: 0) + let accessoryType: UITableViewCell.AccessoryType = indexPath == selectedIndexPath ? .checkmark : .none + let row = Row(contact: MXKContact(matrixContactWithDisplayName: user.displayname, + matrixID: user.userId, + andMatrixAvatarURL: user.avatarUrl), + accessoryType: accessoryType) + + recentRows.append(row) + } + let recentsSection = Section(header: VectorL10n.callTransferContactsRecent, rows: recentRows) + tmpSections.append(recentsSection) + for section in 0..