Skip to content

Commit dceffdf

Browse files
committed
Fix an issue with draft not being deleted after sending a reply
1 parent 93bdcf6 commit dceffdf

File tree

4 files changed

+18
-15
lines changed

4 files changed

+18
-15
lines changed

WordPress/Classes/ViewRelated/Comments/Controllers/CommentDetailViewController.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -982,8 +982,7 @@ private extension CommentDetailViewController {
982982
}
983983

984984
@objc func buttonAddCommentTapped() {
985-
let viewModel = CommentCreateViewModel(replyingTo: comment)
986-
viewModel.save = { [weak self] in
985+
let viewModel = CommentCreateViewModel(replyingTo: comment) { [weak self] in
987986
try await self?.createReply(content: $0)
988987
}
989988
let composerVC = CommentCreateViewController(viewModel: viewModel)

WordPress/Classes/ViewRelated/Comments/Controllers/Create/CommentCreateViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ final class CommentCreateViewController: UIViewController {
7474
Task { @MainActor in
7575
do {
7676
let text = await editorVC.text
77-
try await viewModel.save(text)
77+
try await viewModel.save(content: text)
7878
UINotificationFeedbackGenerator().notificationOccurred(.success)
7979
presentingViewController?.dismiss(animated: true)
8080
} catch {

WordPress/Classes/ViewRelated/Comments/Controllers/Create/CommentCreateViewModel.swift

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,37 +13,37 @@ final class CommentCreateViewModel {
1313
/// Comment you are replying it.
1414
private(set) var replyToComment: Comment?
1515

16-
/// - note: It's a temporary solution until the respective save logic
17-
/// can be moved from the view controllers.
18-
var save: (String) async throws -> Void = { _ in
19-
wpAssertionFailure("must be specified")
20-
}
21-
2216
let suggestionsViewModel: SuggestionsListViewModel?
2317

2418
private let siteID: NSNumber
2519
private let context = ContextManager.shared.mainContext
2620

21+
/// - note: It's a temporary solution until the respective save logic
22+
/// can be moved from the view controllers.
23+
private let _save: (String) async throws -> Void
24+
2725
var isGutenbergEnabled: Bool {
2826
FeatureFlag.readerGutenbergCommentComposer.enabled
2927
}
3028

3129
/// Create a new top-level comment to the given post.
32-
init(post: ReaderPost) {
30+
init(post: ReaderPost, save: @escaping (String) async throws -> Void) {
3331
self.siteID = post.siteID ?? 0
3432
wpAssert(siteID != 0, "missing required parameter siteID")
33+
self._save = save
3534

3635
self.suggestionsViewModel = SuggestionsListViewModel.make(siteID: post.siteID)
3736
self.suggestionsViewModel?.enableProminentSuggestions(postAuthorID: post.authorID)
3837
}
3938

4039
/// Create a reply to the given comment.
41-
init(replyingTo comment: Comment) {
40+
init(replyingTo comment: Comment, save: @escaping (String) async throws -> Void) {
4241
let siteID = comment.associatedSiteID ?? 0
4342
wpAssert(siteID != 0, "missing required parameter siteID")
4443

4544
self.siteID = siteID
4645
self.replyToComment = comment
46+
self._save = save
4747

4848
self.suggestionsViewModel = SuggestionsListViewModel.make(siteID: siteID)
4949
self.suggestionsViewModel?.enableProminentSuggestions(
@@ -56,6 +56,12 @@ final class CommentCreateViewModel {
5656
Strings.leaveComment
5757
}
5858

59+
@MainActor
60+
func save(content: String) async throws {
61+
try await _save(content)
62+
deleteDraft()
63+
}
64+
5965
// MARK: Drafts
6066

6167
func restoreDraft() -> String? {

WordPress/Classes/ViewRelated/Reader/Comments/ReaderCommentsViewController.swift

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,14 @@ extension NSNotification.Name {
5252
}
5353

5454
func buttonAddCommentTapped() {
55-
let viewModel = CommentCreateViewModel(post: post)
56-
viewModel.save = { [weak self] in
55+
let viewModel = CommentCreateViewModel(post: post) { [weak self] in
5756
try await self?.sendComment($0)
5857
}
5958
showCommentComposer(viewModel: viewModel)
6059
}
6160

6261
func didTapReply(comment: Comment) {
63-
let viewModel = CommentCreateViewModel(replyingTo: comment)
64-
viewModel.save = { [weak self] in
62+
let viewModel = CommentCreateViewModel(replyingTo: comment) { [weak self] in
6563
try await self?.sendComment($0, comment: comment)
6664
}
6765
showCommentComposer(viewModel: viewModel)

0 commit comments

Comments
 (0)