diff --git a/Riot/Modules/Room/RoomCoordinatorBridgePresenter.swift b/Riot/Modules/Room/RoomCoordinatorBridgePresenter.swift index 60d99f8d6..6a82e835f 100644 --- a/Riot/Modules/Room/RoomCoordinatorBridgePresenter.swift +++ b/Riot/Modules/Room/RoomCoordinatorBridgePresenter.swift @@ -87,23 +87,6 @@ final class RoomCoordinatorBridgePresenter: NSObject { // MARK: - Public func present(from viewController: UIViewController, animated: Bool) { - - if bridgeParameters.threadId != nil { - let coordinator = self.createRoomCoordinator() - coordinator.delegate = self - coordinator.start() - let presentable = coordinator.toPresentable() - - let presentationController = CustomSizedPresentationController(presentedViewController: presentable, - presenting: viewController) - presentationController.dismissOnBackgroundTap = false - presentationController.cornerRadius = 12 - presentable.transitioningDelegate = presentationController - viewController.present(presentable, animated: animated, completion: nil) - - self.coordinator = coordinator - return - } let coordinator = self.createRoomCoordinator() coordinator.delegate = self let presentable = coordinator.toPresentable() diff --git a/Riot/Modules/Room/RoomViewController.m b/Riot/Modules/Room/RoomViewController.m index 084a338e2..b76d7f4f5 100644 --- a/Riot/Modules/Room/RoomViewController.m +++ b/Riot/Modules/Room/RoomViewController.m @@ -4636,15 +4636,6 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; { [self declineRoomInvitation]; } - else if ([titleView isKindOfClass:ThreadRoomTitleView.class]) - { - ThreadRoomTitleView *threadTitleView = (ThreadRoomTitleView *)titleView; - if (tappedView == threadTitleView.closeButton) - { - // dismiss self - [self dismissViewControllerAnimated:YES completion:nil]; - } - } } - (void)declineRoomInvitation @@ -6338,7 +6329,7 @@ const NSTimeInterval kResizeComposerAnimationDuration = .05; previewData:nil]; self.threadBridgePresenter = [[RoomCoordinatorBridgePresenter alloc] initWithParameters:parameters]; self.threadBridgePresenter.delegate = self; - [self.threadBridgePresenter presentFrom:self animated:YES]; + [self.threadBridgePresenter pushFrom:self.navigationController animated:YES]; } #pragma mark - RoomContextualMenuViewControllerDelegate diff --git a/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.swift b/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.swift index 83be5905f..21aaea539 100644 --- a/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.swift +++ b/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.swift @@ -43,16 +43,12 @@ class ThreadRoomTitleView: RoomTitleView { // Individual views @IBOutlet private weak var partialTitleLabel: UILabel! - @IBOutlet private weak var fullCloseButton: UIButton! @IBOutlet private weak var fullTitleLabel: UILabel! @IBOutlet private weak var fullRoomAvatarView: RoomAvatarView! + @IBOutlet private weak var fullRoomEncryptionBadgeView: UIImageView! @IBOutlet private weak var fullRoomNameLabel: UILabel! @IBOutlet private weak var fullOptionsButton: UIButton! - var closeButton: UIButton { - return fullCloseButton - } - override var mxRoom: MXRoom! { didSet { updateMode() @@ -81,12 +77,24 @@ class ThreadRoomTitleView: RoomTitleView { fallbackImage: AvatarFallbackImage.matrixItem(room.matrixItemId, room.displayName)) fullRoomAvatarView.fill(with: avatarViewData) + + guard let summary = room.summary else { + fullRoomEncryptionBadgeView.isHidden = true + return + } + if summary.isEncrypted && room.mxSession.crypto != nil { + fullRoomEncryptionBadgeView.image = EncryptionTrustLevelBadgeImageHelper.roomBadgeImage(for: summary.roomEncryptionTrustLevel()) + fullRoomEncryptionBadgeView.isHidden = false + } else { + fullRoomEncryptionBadgeView.isHidden = true + } } override func awakeFromNib() { super.awakeFromNib() update(theme: ThemeService.shared().theme) + registerThemeServiceDidChangeThemeNotification() } override func didMoveToSuperview() { @@ -101,6 +109,13 @@ class ThreadRoomTitleView: RoomTitleView { } } + private func registerThemeServiceDidChangeThemeNotification() { + NotificationCenter.default.addObserver(self, + selector: #selector(themeDidChange), + name: .themeServiceDidChangeTheme, + object: nil) + } + private func updateMode() { // ensure both mxRoom and threadId are set guard let room = mxRoom, @@ -133,11 +148,8 @@ class ThreadRoomTitleView: RoomTitleView { // MARK: - Actions - @IBAction private func closeButtonTapped(_ sender: UIButton) { - let gesture = UITapGestureRecognizer(target: nil, action: nil) - closeButton.addGestureRecognizer(gesture) - tapGestureDelegate.roomTitleView(self, recognizeTapGesture: gesture) - closeButton.removeGestureRecognizer(gesture) + @objc private func themeDidChange() { + self.update(theme: ThemeService.shared().theme) } @IBAction private func optionsButtonTapped(_ sender: UIButton) { @@ -150,10 +162,10 @@ extension ThreadRoomTitleView: Themable { func update(theme: Theme) { partialTitleLabel.textColor = theme.colors.primaryContent - fullCloseButton.tintColor = theme.colors.secondaryContent + fullRoomAvatarView.backgroundColor = .clear fullTitleLabel.textColor = theme.colors.primaryContent fullRoomNameLabel.textColor = theme.colors.secondaryContent - fullOptionsButton.tintColor = theme.colors.secondaryContent + fullOptionsButton.tintColor = theme.colors.accent } } diff --git a/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.xib b/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.xib index c47ecc287..53262fb17 100644 --- a/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.xib +++ b/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.xib @@ -34,33 +34,30 @@ - - - + + + + + + + + + + @@ -103,10 +100,10 @@ - + @@ -116,7 +113,6 @@ - diff --git a/Riot/Modules/Thread/ThreadViewController.swift b/Riot/Modules/Thread/ThreadViewController.swift index a6df5cc6a..9e803baf5 100644 --- a/Riot/Modules/Thread/ThreadViewController.swift +++ b/Riot/Modules/Thread/ThreadViewController.swift @@ -20,11 +20,6 @@ class ThreadViewController: RoomViewController { // MARK: Private - private enum Constants { - static let sizeOniPad: CGSize = CGSize(width: 375, height: 667) - static let additionalTopInset: CGFloat = 20 - } - private(set) var threadId: String! class func instantiate(withThreadId threadId: String, @@ -49,37 +44,4 @@ class ThreadViewController: RoomViewController { threadTitleView.threadId = threadId } - private func topSafeAreaInset() -> CGFloat { - guard let window = UIApplication.shared.keyWindow else { - return Constants.additionalTopInset - } - - return window.safeAreaInsets.top + Constants.additionalTopInset - } - -} - -// MARK: - CustomSizedPresentable - -extension ThreadViewController: CustomSizedPresentable { - - func customSize(withParentContainerSize containerSize: CGSize) -> CGSize { - if UIDevice.current.isPhone { - return CGSize(width: containerSize.width, - height: containerSize.height - topSafeAreaInset()) - } - return Constants.sizeOniPad - } - - func position(withParentContainerSize containerSize: CGSize) -> CGPoint { - let mySize = customSize(withParentContainerSize: containerSize) - - if UIDevice.current.isPhone { - return CGPoint(x: 0, y: topSafeAreaInset()) - } - - return CGPoint(x: (containerSize.width - mySize.width)/2, - y: (containerSize.height - mySize.height)/2) - } - }