From 1bb8ebd36ffbd68f47d7e83ca18220ffedff3b1c Mon Sep 17 00:00:00 2001 From: Doug Date: Wed, 26 Jan 2022 16:19:54 +0000 Subject: [PATCH 1/2] Add WIP to towncrier. --- changelog.d/pr-5446.misc | 1 + towncrier.toml | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 changelog.d/pr-5446.misc diff --git a/changelog.d/pr-5446.misc b/changelog.d/pr-5446.misc new file mode 100644 index 000000000..cdd5b09d5 --- /dev/null +++ b/changelog.d/pr-5446.misc @@ -0,0 +1 @@ +Add WIP to towncrier. \ No newline at end of file diff --git a/towncrier.toml b/towncrier.toml index 2587d18b2..689728cc2 100644 --- a/towncrier.toml +++ b/towncrier.toml @@ -39,6 +39,11 @@ template = "changelog.d/_template.md.jinja" name = "📄 Documentation" showcontent = true +[[tool.towncrier.type]] + directory = "wip" + name = "🚧 In development 🚧" + showcontent = true + [[tool.towncrier.type]] directory = "misc" name = "Others" From 58b57617c5b3ac2a0dedc3149406398c1c2819d7 Mon Sep 17 00:00:00 2001 From: ismailgulek Date: Thu, 27 Jan 2022 01:45:01 +0300 Subject: [PATCH 2/2] Fix further review remarks --- Riot/Generated/Images.swift | 1 + .../Room/Views/Threads/ThreadSummaryView.swift | 16 ++++++++-------- .../Title/Thread/ThreadRoomTitleView.swift | 18 +++++++++--------- .../ThreadList/ThreadListViewController.swift | 14 +++++++------- .../ThreadList/ThreadListViewModel.swift | 16 ++++++++-------- .../ThreadListViewModelProtocol.swift | 4 ++-- .../ThreadList/Views/Cell/ThreadModel.swift | 2 +- .../Views/Cell/ThreadTableViewCell.swift | 14 +++++++------- .../Views/Empty/ThreadListEmptyView.swift | 14 +++++++------- 9 files changed, 50 insertions(+), 49 deletions(-) diff --git a/Riot/Generated/Images.swift b/Riot/Generated/Images.swift index 30f385366..cf52a37fe 100644 --- a/Riot/Generated/Images.swift +++ b/Riot/Generated/Images.swift @@ -136,6 +136,7 @@ internal enum Asset { internal static let roomContextMenuReply = ImageAsset(name: "room_context_menu_reply") internal static let roomContextMenuReplyInThread = ImageAsset(name: "room_context_menu_reply_in_thread") internal static let roomContextMenuRetry = ImageAsset(name: "room_context_menu_retry") + internal static let roomContextMenuThread = ImageAsset(name: "room_context_menu_thread") internal static let inputCloseIcon = ImageAsset(name: "input_close_icon") internal static let inputEditIcon = ImageAsset(name: "input_edit_icon") internal static let inputReplyIcon = ImageAsset(name: "input_reply_icon") diff --git a/Riot/Modules/Room/Views/Threads/ThreadSummaryView.swift b/Riot/Modules/Room/Views/Threads/ThreadSummaryView.swift index c24a861c3..369188e58 100644 --- a/Riot/Modules/Room/Views/Threads/ThreadSummaryView.swift +++ b/Riot/Modules/Room/Views/Threads/ThreadSummaryView.swift @@ -66,14 +66,14 @@ class ThreadSummaryView: UIView { loadNibContent() } - @nonobjc func configure(withViewModel viewModel: ThreadSummaryModel) { - numberOfRepliesLabel.text = String(viewModel.numberOfReplies) - if let avatar = viewModel.lastMessageSenderAvatar { + @nonobjc func configure(withModel model: ThreadSummaryModel) { + numberOfRepliesLabel.text = String(model.numberOfReplies) + if let avatar = model.lastMessageSenderAvatar { lastMessageAvatarView.fill(with: avatar) } else { lastMessageAvatarView.avatarImageView.image = nil } - lastMessageContentLabel.text = viewModel.lastMessageText + lastMessageContentLabel.text = model.lastMessageText } private func configure() { @@ -105,10 +105,10 @@ class ThreadSummaryView: UIView { let formatterError = UnsafeMutablePointer.allocate(capacity: 1) let lastMessageText = eventFormatter.string(from: lastMessage, with: roomState, error: formatterError) - let viewModel = ThreadSummaryModel(numberOfReplies: thread.numberOfReplies, - lastMessageSenderAvatar: avatarViewData, - lastMessageText: lastMessageText) - self.configure(withViewModel: viewModel) + let model = ThreadSummaryModel(numberOfReplies: thread.numberOfReplies, + lastMessageSenderAvatar: avatarViewData, + lastMessageText: lastMessageText) + self.configure(withModel: model) } } diff --git a/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.swift b/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.swift index 05ac863b8..85340578e 100644 --- a/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.swift +++ b/Riot/Modules/Room/Views/Title/Thread/ThreadRoomTitleView.swift @@ -44,15 +44,15 @@ class ThreadRoomTitleView: RoomTitleView { // MARK: - Methods - func configure(withViewModel viewModel: ThreadRoomTitleModel) { - if let avatarViewData = viewModel.roomAvatar { + func configure(withModel model: ThreadRoomTitleModel) { + if let avatarViewData = model.roomAvatar { roomAvatarView.fill(with: avatarViewData) } else { roomAvatarView.avatarImageView.image = nil } - roomEncryptionBadgeView.image = viewModel.roomEncryptionBadge - roomEncryptionBadgeView.isHidden = viewModel.roomEncryptionBadge == nil - roomNameLabel.text = viewModel.roomDisplayName + roomEncryptionBadgeView.image = model.roomEncryptionBadge + roomEncryptionBadgeView.isHidden = model.roomEncryptionBadge == nil + roomNameLabel.text = model.roomDisplayName } // MARK: - Overrides @@ -87,10 +87,10 @@ class ThreadRoomTitleView: RoomTitleView { encrpytionBadge = nil } - let viewModel = ThreadRoomTitleModel(roomAvatar: avatarViewData, - roomEncryptionBadge: encrpytionBadge, - roomDisplayName: room.displayName) - configure(withViewModel: viewModel) + let model = ThreadRoomTitleModel(roomAvatar: avatarViewData, + roomEncryptionBadge: encrpytionBadge, + roomDisplayName: room.displayName) + configure(withModel: model) } override func awakeFromNib() { diff --git a/Riot/Modules/Threads/ThreadList/ThreadListViewController.swift b/Riot/Modules/Threads/ThreadList/ThreadListViewController.swift index 319c0f774..9c2a75a9f 100644 --- a/Riot/Modules/Threads/ThreadList/ThreadListViewController.swift +++ b/Riot/Modules/Threads/ThreadList/ThreadListViewController.swift @@ -119,7 +119,7 @@ final class ThreadListViewController: UIViewController { private func setupViews() { let titleView = ThreadRoomTitleView.loadFromNib() titleView.mode = .allThreads - titleView.configure(withViewModel: viewModel.titleViewModel) + titleView.configure(withModel: viewModel.titleModel) titleView.updateLayout(for: UIApplication.shared.statusBarOrientation) self.titleView = titleView navigationItem.leftItemsSupplementBackButton = true @@ -144,8 +144,8 @@ final class ThreadListViewController: UIViewController { self.renderLoading() case .loaded: self.renderLoaded() - case .empty(let viewModel): - self.renderEmptyView(withViewModel: viewModel) + case .empty(let model): + self.renderEmptyView(withModel: model) case .showingFilterTypes: self.renderShowingFilterTypes() case .error(let error): @@ -166,9 +166,9 @@ final class ThreadListViewController: UIViewController { navigationItem.rightBarButtonItem?.isEnabled = true } - private func renderEmptyView(withViewModel emptyViewModel: ThreadListEmptyModel) { + private func renderEmptyView(withModel model: ThreadListEmptyModel) { self.activityPresenter.removeCurrentActivityIndicator(animated: true) - emptyView.configure(withViewModel: emptyViewModel) + emptyView.configure(withModel: model) threadsTableView.isHidden = true emptyView.isHidden = false navigationItem.rightBarButtonItem?.isEnabled = viewModel.selectedFilterType == .myThreads @@ -243,8 +243,8 @@ extension ThreadListViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell: ThreadTableViewCell = tableView.dequeueReusableCell(for: indexPath) - if let threadVM = viewModel.threadViewModel(at: indexPath.row) { - cell.configure(withViewModel: threadVM) + if let threadModel = viewModel.threadModel(at: indexPath.row) { + cell.configure(withModel: threadModel) } cell.update(theme: theme) diff --git a/Riot/Modules/Threads/ThreadList/ThreadListViewModel.swift b/Riot/Modules/Threads/ThreadList/ThreadListViewModel.swift index 0a04ff8cf..77bb98487 100644 --- a/Riot/Modules/Threads/ThreadList/ThreadListViewModel.swift +++ b/Riot/Modules/Threads/ThreadList/ThreadListViewModel.swift @@ -83,14 +83,14 @@ final class ThreadListViewModel: ThreadListViewModelProtocol { return threads.count } - func threadViewModel(at index: Int) -> ThreadModel? { + func threadModel(at index: Int) -> ThreadModel? { guard index < threads.count else { return nil } - return viewModel(forThread: threads[index]) + return model(forThread: threads[index]) } - var titleViewModel: ThreadRoomTitleModel { + var titleModel: ThreadRoomTitleModel { guard let room = session.room(withRoomId: roomId) else { return .empty } @@ -135,7 +135,7 @@ final class ThreadListViewModel: ThreadListViewModelProtocol { // MARK: - Private - private func viewModel(forThread thread: MXThread) -> ThreadModel { + private func model(forThread thread: MXThread) -> ThreadModel { let rootAvatarViewData: AvatarViewData? let rootMessageSender: MXUser? let lastAvatarViewData: AvatarViewData? @@ -175,15 +175,15 @@ final class ThreadListViewModel: ThreadListViewModelProtocol { lastMessageSender = nil } - let summaryViewModel = ThreadSummaryModel(numberOfReplies: thread.numberOfReplies, - lastMessageSenderAvatar: lastAvatarViewData, - lastMessageText: lastMessageText) + let summaryModel = ThreadSummaryModel(numberOfReplies: thread.numberOfReplies, + lastMessageSenderAvatar: lastAvatarViewData, + lastMessageText: lastMessageText) return ThreadModel(rootMessageSenderAvatar: rootAvatarViewData, rootMessageSenderDisplayName: rootMessageSender?.displayname, rootMessageText: rootMessageText, lastMessageTime: lastMessageTime, - summaryViewModel: summaryViewModel) + summaryModel: summaryModel) } private func rootMessageText(forThread thread: MXThread) -> String? { diff --git a/Riot/Modules/Threads/ThreadList/ThreadListViewModelProtocol.swift b/Riot/Modules/Threads/ThreadList/ThreadListViewModelProtocol.swift index d54dc3bca..d375e9f3a 100644 --- a/Riot/Modules/Threads/ThreadList/ThreadListViewModelProtocol.swift +++ b/Riot/Modules/Threads/ThreadList/ThreadListViewModelProtocol.swift @@ -38,10 +38,10 @@ protocol ThreadListViewModelProtocol { var viewState: ThreadListViewState { get } - var titleViewModel: ThreadRoomTitleModel { get } + var titleModel: ThreadRoomTitleModel { get } var selectedFilterType: ThreadListFilterType { get } var numberOfThreads: Int { get } - func threadViewModel(at index: Int) -> ThreadModel? + func threadModel(at index: Int) -> ThreadModel? } enum ThreadListFilterType { diff --git a/Riot/Modules/Threads/ThreadList/Views/Cell/ThreadModel.swift b/Riot/Modules/Threads/ThreadList/Views/Cell/ThreadModel.swift index e27bda614..28b68303d 100644 --- a/Riot/Modules/Threads/ThreadList/Views/Cell/ThreadModel.swift +++ b/Riot/Modules/Threads/ThreadList/Views/Cell/ThreadModel.swift @@ -21,5 +21,5 @@ struct ThreadModel { let rootMessageSenderDisplayName: String? let rootMessageText: String? let lastMessageTime: String? - let summaryViewModel: ThreadSummaryModel? + let summaryModel: ThreadSummaryModel? } diff --git a/Riot/Modules/Threads/ThreadList/Views/Cell/ThreadTableViewCell.swift b/Riot/Modules/Threads/ThreadList/Views/Cell/ThreadTableViewCell.swift index da0ad2403..4dfd8d1f6 100644 --- a/Riot/Modules/Threads/ThreadList/Views/Cell/ThreadTableViewCell.swift +++ b/Riot/Modules/Threads/ThreadList/Views/Cell/ThreadTableViewCell.swift @@ -35,17 +35,17 @@ class ThreadTableViewCell: UITableViewCell { separatorInset = Constants.separatorInset } - func configure(withViewModel viewModel: ThreadModel) { - if let rootAvatar = viewModel.rootMessageSenderAvatar { + func configure(withModel model: ThreadModel) { + if let rootAvatar = model.rootMessageSenderAvatar { rootMessageAvatarView.fill(with: rootAvatar) } else { rootMessageAvatarView.avatarImageView.image = nil } - rootMessageSenderLabel.text = viewModel.rootMessageSenderDisplayName - rootMessageContentLabel.text = viewModel.rootMessageText - lastMessageTimeLabel.text = viewModel.lastMessageTime - if let summaryViewModel = viewModel.summaryViewModel { - summaryView.configure(withViewModel: summaryViewModel) + rootMessageSenderLabel.text = model.rootMessageSenderDisplayName + rootMessageContentLabel.text = model.rootMessageText + lastMessageTimeLabel.text = model.lastMessageTime + if let summaryModel = model.summaryModel { + summaryView.configure(withModel: summaryModel) } } diff --git a/Riot/Modules/Threads/ThreadList/Views/Empty/ThreadListEmptyView.swift b/Riot/Modules/Threads/ThreadList/Views/Empty/ThreadListEmptyView.swift index ffe973d1a..523282378 100644 --- a/Riot/Modules/Threads/ThreadList/Views/Empty/ThreadListEmptyView.swift +++ b/Riot/Modules/Threads/ThreadList/Views/Empty/ThreadListEmptyView.swift @@ -39,14 +39,14 @@ class ThreadListEmptyView: UIView { loadNibContent() } - func configure(withViewModel viewModel: ThreadListEmptyModel) { - iconView.image = viewModel.icon - titleLabel.text = viewModel.title - infoLabel.text = viewModel.info - tipLabel.text = viewModel.tip - showAllThreadsButton.setTitle(viewModel.showAllThreadsButtonTitle, + func configure(withModel model: ThreadListEmptyModel) { + iconView.image = model.icon + titleLabel.text = model.title + infoLabel.text = model.info + tipLabel.text = model.tip + showAllThreadsButton.setTitle(model.showAllThreadsButtonTitle, for: .normal) - showAllThreadsButton.isHidden = viewModel.showAllThreadsButtonHidden + showAllThreadsButton.isHidden = model.showAllThreadsButtonHidden titleLabel.isHidden = titleLabel.text?.isEmpty ?? true infoLabel.isHidden = infoLabel.text?.isEmpty ?? true