diff --git a/WordPress/Classes/Models/AbstractPost.m b/WordPress/Classes/Models/AbstractPost.m index 16477d2f41c9..b3d094ed8a3a 100644 --- a/WordPress/Classes/Models/AbstractPost.m +++ b/WordPress/Classes/Models/AbstractPost.m @@ -420,7 +420,7 @@ - (void)publishImmediately - (BOOL)shouldPublishImmediately { - return [self originalIsDraft] && ![self hasFuturePublishDate]; + return [self originalIsDraft] && [self dateCreatedIsNilOrEqualToDateModified]; } - (NSString *)authorNameForDisplay diff --git a/WordPress/Classes/ViewRelated/Post/PostEditor+Publish.swift b/WordPress/Classes/ViewRelated/Post/PostEditor+Publish.swift index 9f7c42eb4358..f1be6791dbfe 100644 --- a/WordPress/Classes/ViewRelated/Post/PostEditor+Publish.swift +++ b/WordPress/Classes/ViewRelated/Post/PostEditor+Publish.swift @@ -111,7 +111,7 @@ extension PostEditor where Self: UIViewController { !UserDefaults.standard.asyncPromoWasDisplayed { promoBlock() } else if action.isAsync, - let postStatus = self.post.status, + let postStatus = self.post.original?.status ?? self.post.status, ![.publish, .publishPrivate].contains(postStatus) { // Only display confirmation alert for unpublished posts displayPublishConfirmationAlert(for: action, onPublish: publishBlock) diff --git a/WordPress/Classes/ViewRelated/Post/Scheduling/PublishSettingsViewController.swift b/WordPress/Classes/ViewRelated/Post/Scheduling/PublishSettingsViewController.swift index d639b67a482f..05614445f506 100644 --- a/WordPress/Classes/ViewRelated/Post/Scheduling/PublishSettingsViewController.swift +++ b/WordPress/Classes/ViewRelated/Post/Scheduling/PublishSettingsViewController.swift @@ -70,6 +70,11 @@ struct PublishSettingsViewModel { mutating func setDate(_ date: Date?) { if let date = date { post.dateCreated = date + if post.hasFuturePublishDate() { + post.status = .scheduled + } else { + post.status = .publish + } } else { post.publishImmediately() } diff --git a/WordPress/WordPressTest/ViewRelated/Post/Controllers/PublishSettingsControllerTests.swift b/WordPress/WordPressTest/ViewRelated/Post/Controllers/PublishSettingsControllerTests.swift index 5f2671a2c475..46a4f5a913d0 100644 --- a/WordPress/WordPressTest/ViewRelated/Post/Controllers/PublishSettingsControllerTests.swift +++ b/WordPress/WordPressTest/ViewRelated/Post/Controllers/PublishSettingsControllerTests.swift @@ -43,7 +43,7 @@ class PublishSettingsViewControllerTests: XCTestCase { func testViewModelDateImmediately() { let testDate = Date() - let post = PostBuilder(context).with(dateCreated: testDate).drafted().withRemote().build() + let post = PostBuilder(context).drafted().withRemote().build() var viewModel = PublishSettingsViewModel(post: post) XCTAssertNil(viewModel.date, "Date should not exist in view model") @@ -51,15 +51,15 @@ class PublishSettingsViewControllerTests: XCTestCase { if case PublishSettingsViewModel.State.immediately = viewModel.state { // Success } else { - XCTFail("View model should be immediately") + XCTFail("View model should be immediately instead of \(viewModel.state)") } viewModel.setDate(testDate) - if case PublishSettingsViewModel.State.immediately = viewModel.state { + if case PublishSettingsViewModel.State.published(_) = viewModel.state { // Success } else { - XCTFail("View model should be immediately instead of \(viewModel.state)") + XCTFail("View model should be published instead of \(viewModel.state)") } }