Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Sources/WordPressData/Swift/AbstractPost.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import WordPressShared
public extension AbstractPost {
/// Returns the original post by navigating the entire list of revisions
/// until it reaches the head.
func original() -> AbstractPost {
original?.original() ?? self
func getOriginal() -> AbstractPost {
original?.getOriginal() ?? self
}

/// Returns `true` if the post was never uploaded to the remote and has
Expand Down Expand Up @@ -127,7 +127,7 @@ public extension AbstractPost {
[
"post_type": analyticsPostType ?? "",
"status": status?.rawValue ?? "",
"original_status": original().status?.rawValue ?? "unknown",
"original_status": getOriginal().status?.rawValue ?? "unknown",
"password_protected": PostVisibility(post: self) == .protected
]
}
Expand Down Expand Up @@ -226,7 +226,7 @@ public extension AbstractPost {
guard let previous = revision.original else {
return wpAssertionFailure("missing original")
}
let original = revision.original()
let original = revision.getOriginal()
previous.deleteRevision()
if previous == original, !previous.hasRemote() {
context.delete(original)
Expand Down
8 changes: 4 additions & 4 deletions WordPress/Classes/Services/MediaCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class MediaCoordinator: NSObject {
}

// Use the original post so we don't create new coordinators for post revisions
let original = post.original()
let original = post.getOriginal()

let coordinator = MediaProgressCoordinator()
coordinator.delegate = self
Expand All @@ -105,7 +105,7 @@ class MediaCoordinator: NSObject {
/// if one does not exist.
private func cachedCoordinator(for post: AbstractPost) -> MediaProgressCoordinator? {
// Use the original post so we don't create new coordinators for post revisions
let original = post.original()
let original = post.getOriginal()

return progressCoordinatorQueue.sync {
return postMediaProgressCoordinators[original]
Expand Down Expand Up @@ -557,7 +557,7 @@ class MediaCoordinator: NSObject {
func addObserver(_ onUpdate: @escaping ObserverBlock, forMediaFor post: AbstractPost) -> UUID {
let uuid = UUID()

let original = post.original()
let original = post.getOriginal()
let observer = MediaObserver(subject: .post(id: original.objectID), onUpdate: onUpdate)

queue.async {
Expand Down Expand Up @@ -692,7 +692,7 @@ class MediaCoordinator: NSObject {
guard let post = object as? AbstractPost else {
return nil
}
return post.original().objectID
return post.getOriginal().objectID
} ?? []
}

Expand Down
18 changes: 9 additions & 9 deletions WordPress/Classes/Services/PostCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ class PostCoordinator: NSObject {
/// Uploads the changes made to the post to the server.
@discardableResult @MainActor
func save(_ post: AbstractPost, changes: RemotePostUpdateParameters? = nil) async throws -> AbstractPost {
let post = post.original()
let post = post.getOriginal()

await pauseSyncing(for: post)
defer { resumeSyncing(for: post) }
Expand Down Expand Up @@ -150,7 +150,7 @@ class PostCoordinator: NSObject {
private func update(_ post: AbstractPost, changes: RemotePostUpdateParameters) async throws {
wpAssert(post.isOriginal())

let post = post.original()
let post = post.getOriginal()
do {
try await PostRepository(coreDataStack: coreDataStack).update(post, changes: changes)
} catch {
Expand Down Expand Up @@ -244,7 +244,7 @@ class PostCoordinator: NSObject {
/// Sets the post state to "updating" and performs the given changes.
private func performChanges(_ changes: RemotePostUpdateParameters, for post: AbstractPost) {
Task { @MainActor in
let post = post.original()
let post = post.getOriginal()
setUpdating(true, for: post)
defer { setUpdating(false, for: post) }

Expand All @@ -261,22 +261,22 @@ class PostCoordinator: NSObject {

/// Returns `true` if post has any revisions that need to be synced.
func isSyncNeeded(for post: AbstractPost) -> Bool {
post.original().getLatestRevisionNeedingSync() != nil
post.getOriginal().getLatestRevisionNeedingSync() != nil
}

/// Sets a flag to sync the given revision and schedules the next sync.
///
/// - warning: Should only be used for draft posts.
func setNeedsSync(for revision: AbstractPost) {
wpAssert(revision.isRevision(), "Must be used only on revisions")
wpAssert(isSyncAllowed(for: revision.original()), "Sync is not supported for this post")
wpAssert(isSyncAllowed(for: revision.getOriginal()), "Sync is not supported for this post")

if !revision.isSyncNeeded {
revision.remoteStatus = .syncNeeded
revision.confirmedChangesTimestamp = Date()
ContextManager.shared.saveContextAndWait(coreDataStack.mainContext)
}
startSync(for: revision.original())
startSync(for: revision.getOriginal())
}

func retrySync(for post: AbstractPost) {
Expand All @@ -300,7 +300,7 @@ class PostCoordinator: NSObject {
request.predicate = NSPredicate(format: "remoteStatusNumber == %i", AbstractPostRemoteStatus.syncNeeded.rawValue)
do {
let revisions = try coreDataStack.mainContext.fetch(request)
let originals = Set(revisions.map { $0.original() })
let originals = Set(revisions.map { $0.getOriginal() })
for post in originals {
startSync(for: post)
}
Expand Down Expand Up @@ -862,12 +862,12 @@ class PostCoordinator: NSObject {
// MARK: - State

func isUpdating(_ post: AbstractPost) -> Bool {
pendingPostIDs.contains(post.original().objectID)
pendingPostIDs.contains(post.getOriginal().objectID)
}

@MainActor
private func setUpdating(_ isUpdating: Bool, for post: AbstractPost) {
let post = post.original()
let post = post.getOriginal()
if isUpdating {
pendingPostIDs.insert(post.objectID)
} else {
Expand Down
4 changes: 2 additions & 2 deletions WordPress/Classes/Services/PostRepository.swift
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ final class PostRepository {
overwrite: Bool = false
) async throws {
wpAssert(post.isOriginal())
let post = post.original() // Defensive code
let post = post.getOriginal() // Defensive code
let context = coreDataStack.mainContext

let remotePost: RemotePost
Expand Down Expand Up @@ -231,7 +231,7 @@ final class PostRepository {
private func _patch(_ post: AbstractPost, postID: Int, changes: RemotePostUpdateParameters, overwrite: Bool) async throws -> RemotePost {
WPAnalytics.track(.postRepositoryPatchStarted)
let service = try getRemoteService(for: post.blog)
let original = post.original()
let original = post.getOriginal()
var changes = changes

// Make sure the app never overwrites the content without the user approval.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1143,7 +1143,7 @@ private extension AztecPostViewController {
alert.title = textCounterTitle
}

if post.original().isStatus(in: [.draft, .pending]) && editorHasChanges {
if post.getOriginal().isStatus(in: [.draft, .pending]) && editorHasChanges {
alert.addDefaultActionWithTitle(MoreSheetAlert.saveDraft) { _ in
self.buttonSaveDraftTapped()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ extension GutenbergViewController {

private func makeMoreMenuSecondaryActions() -> [UIAction] {
var actions: [UIAction] = []
if post.original().isStatus(in: [.draft, .pending]) {
if post.getOriginal().isStatus(in: [.draft, .pending]) {
actions.append(UIAction(title: Strings.saveDraft, image: UIImage(systemName: "doc"), attributes: (editorHasChanges && editorHasContent) ? [] : [.disabled]) { [weak self] _ in
self?.buttonSaveDraftTapped()
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -853,7 +853,7 @@ extension GutenbergViewController: GutenbergBridgeDelegate {
focusTitleIfNeeded()
mediaInserterHelper.refreshMediaStatus()

let original = post.original()
let original = post.getOriginal()
if let content = original.voiceContent {
original.voiceContent = nil
gutenberg.onContentUpdate(content: content)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -994,7 +994,7 @@ extension NewGutenbergViewController {

private func makeMoreMenuSecondaryActions() -> [UIAction] {
var actions: [UIAction] = []
if post.original().isStatus(in: [.draft, .pending]) {
if post.getOriginal().isStatus(in: [.draft, .pending]) {
actions.append(UIAction(title: Strings.saveDraft, image: UIImage(systemName: "doc"), attributes: (editorHasChanges && editorHasContent) ? [] : [.disabled]) { [weak self] _ in
self?.buttonSaveDraftTapped()
})
Expand Down
4 changes: 2 additions & 2 deletions WordPress/Classes/ViewRelated/Pages/PageEditorPresenter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ struct PageEditorPresenter {
}

// No editing posts until the conflict has been resolved.
if let error = PostCoordinator.shared.syncError(for: page.original()),
if let error = PostCoordinator.shared.syncError(for: page.getOriginal()),
let saveError = error as? PostRepository.PostSaveError,
case .conflict(let latest) = saveError {
let page = page.original()
let page = page.getOriginal()
PostCoordinator.shared.showResolveConflictView(post: page, remoteRevision: latest, source: .pageList)
return false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ class AbstractPostListViewController: UIViewController,
guard let post = cell?.post else {
return false
}
return updatedObjects.contains(post) || updatedObjects.contains(post.original())
return updatedObjects.contains(post) || updatedObjects.contains(post.getOriginal())
}
if !updatedIndexPaths.isEmpty {
tableView.beginUpdates()
Expand Down Expand Up @@ -689,7 +689,7 @@ class AbstractPostListViewController: UIViewController,
func trash(_ post: AbstractPost, completion: @escaping () -> Void) {
WPAnalytics.track(.postListTrashAction, withProperties: propertiesForAnalytics())

let post = post.original()
let post = post.getOriginal()

func performAction() {
Task {
Expand All @@ -715,7 +715,7 @@ class AbstractPostListViewController: UIViewController,
func delete(_ post: AbstractPost, completion: @escaping () -> Void) {
WPAnalytics.track(.postListDeleteAction, properties: propertiesForAnalytics())

let post = post.original()
let post = post.getOriginal()

let alert = UIAlertController(title: Strings.Delete.actionTitle, message: Strings.Delete.message(for: post.latest()), preferredStyle: .alert)
alert.addCancelActionWithTitle(Strings.cancelText) { _ in
Expand All @@ -732,7 +732,7 @@ class AbstractPostListViewController: UIViewController,

func retry(_ post: AbstractPost) {
WPAnalytics.track(.postListRetryAction, properties: propertiesForAnalytics())
PostCoordinator.shared.retrySync(for: post.original())
PostCoordinator.shared.retrySync(for: post.getOriginal())
}

func stats(for post: AbstractPost) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ class EditPostViewController: UIViewController {
return
}
self.afterDismiss?()
guard let post = self.post?.original(),
guard let post = self.post?.getOriginal(),
post.isPublished(),
!self.editingExistingPost,
let controller = presentingController else {
Expand Down Expand Up @@ -294,7 +294,7 @@ extension EditPostViewController {
if let restorationDate, Date().timeIntervalSince(restorationDate) < 0.5 {
return // Appears to be crashing repeatedly
}
let postURL = post.original().objectID.uriRepresentation().absoluteString
let postURL = post.getOriginal().objectID.uriRepresentation().absoluteString
UserDefaults.standard.set(postURL, forKey: restorationBlogURLKey)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ extension PostEditor {
}

private func savePostBeforePreview(completion: @escaping ((String?, Error?) -> Void)) {
guard !post.changes.isEmpty || post.original().isNewDraft else {
guard !post.changes.isEmpty || post.getOriginal().isNewDraft else {
completion(nil, nil)
return
}
Expand All @@ -43,7 +43,7 @@ extension PostEditor {
SVProgressHUD.setDefaultMaskType(.clear)
SVProgressHUD.show(withStatus: Strings.savingDraft)

let original = post.original()
let original = post.getOriginal()
try await coordinator.save(original)
self.post = original
self.createRevisionOfPost()
Expand Down
4 changes: 2 additions & 2 deletions WordPress/Classes/ViewRelated/Post/PostEditor+Publish.swift
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ extension PublishingEditor {
return discardAndDismiss()
}

if post.original().isStatus(in: [.draft, .pending]) {
if post.getOriginal().isStatus(in: [.draft, .pending]) {
// The "Discard Changes" behavior is problematic due to the way
// the editor and `PostCoordinator` often update the content
// in the background without the user interaction.
Expand Down Expand Up @@ -246,7 +246,7 @@ extension PublishingEditor {
let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
alert.view.accessibilityIdentifier = "post-has-changes-alert"
alert.addCancelActionWithTitle(Strings.closeConfirmationAlertCancel)
let discardTitle = post.original().isNewDraft ? Strings.closeConfirmationAlertDelete : Strings.closeConfirmationAlertDiscardChanges
let discardTitle = post.getOriginal().isNewDraft ? Strings.closeConfirmationAlertDelete : Strings.closeConfirmationAlertDiscardChanges
alert.addDestructiveActionWithTitle(discardTitle) { _ in
self.discardAndDismiss()
}
Expand Down
8 changes: 4 additions & 4 deletions WordPress/Classes/ViewRelated/Post/PostEditor.swift
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ extension PostEditor {

extension PostEditor where Self: UIViewController {
func onViewDidLoad() {
if post.original().status == .trash {
if post.getOriginal().status == .trash {
showPostTrashedOverlay()
} else {
showAutosaveAvailableAlertIfNeeded()
Expand All @@ -117,7 +117,7 @@ extension PostEditor where Self: UIViewController {
self?.postConflictResolved(notification)
}.store(in: &cancellables)

let originalPostID = post.original().objectID
let originalPostID = post.getOriginal().objectID
NotificationCenter.default
.publisher(for: NSManagedObjectContext.didChangeObjectsNotification, object: post.managedObjectContext)
.sink { [weak self] in self?.didChangeObjects($0, originalPostID: originalPostID) }
Expand Down Expand Up @@ -159,8 +159,8 @@ extension PostEditor where Self: UIViewController {
// Defensive code to make sure that in rare scenarios where the user changes
// status from post settings but doesn't save, and the app gets terminated,
// the app doesn't end up saving posts with uncommited status changes.
if post.status != post.original().status {
post.status = post.original().status
if post.status != post.getOriginal().status {
post.status = post.getOriginal().status
}
if !editorHasChanges {
AbstractPost.deleteLatestRevision(post, in: context)
Expand Down
2 changes: 1 addition & 1 deletion WordPress/Classes/ViewRelated/Post/PostEditorState.swift
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public class PostEditorStateContext {
action: PostEditorAction? = nil) {
var originalPostStatus: BasePost.Status? = nil

let originalPost = post.original()
let originalPost = post.getOriginal()
if let postStatus = originalPost.status, originalPost.hasRemote() {
originalPostStatus = postStatus
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ struct PostListEditorPresenter {
}

// No editing posts until the conflict has been resolved.
if let error = PostCoordinator.shared.syncError(for: post.original()),
if let error = PostCoordinator.shared.syncError(for: post.getOriginal()),
let saveError = error as? PostRepository.PostSaveError,
case .conflict(let latest) = saveError {
let post = post.original()
let post = post.getOriginal()
PostCoordinator.shared.showResolveConflictView(post: post, remoteRevision: latest, source: .postList)
return
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ final class PostSettingsViewModel: NSObject, ObservableObject {
}

var isDraftOrPending: Bool {
post.original().isStatus(in: [.draft, .pending])
post.getOriginal().isStatus(in: [.draft, .pending])
}

var isPost: Bool {
Expand Down Expand Up @@ -352,7 +352,7 @@ final class PostSettingsViewModel: NSObject, ObservableObject {
do {
let coordinator = PostCoordinator.shared
let changes = settings.makeUpdateParameters(from: post)
try await coordinator.publish(post.original(), parameters: changes)
try await coordinator.publish(post.getOriginal(), parameters: changes)
onPostPublished?()
} catch {
isSaving = false
Expand All @@ -370,7 +370,7 @@ final class PostSettingsViewModel: NSObject, ObservableObject {

switch selection.type {
case .public, .protected:
if post.original().status == .scheduled {
if post.getOriginal().status == .scheduled {
// Keep it scheduled
} else {
settings.status = .publish
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ private extension RevisionsTableViewController {
refreshControl.addTarget(self, action: #selector(refreshRevisions), for: .valueChanged)
self.refreshControl = refreshControl

if post?.original().isStatus(in: [.draft, .pending]) == false {
if post?.getOriginal().isStatus(in: [.draft, .pending]) == false {
tableView.tableFooterView = tableViewFooter
}

Expand Down
Loading