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
4 changes: 2 additions & 2 deletions WordPress.xcworkspace/xcshareddata/swiftpm/Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions WordPress/Classes/Models/AbstractPost.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ typedef NS_ENUM(NSUInteger, AbstractPostRemoteStatus) {
@property (weak, readonly) AbstractPost *revision;
@property (nonatomic, strong) NSSet *comments;
@property (nonatomic, strong, nullable) Media *featuredImage;
@property (nonatomic, assign) NSInteger order;

/// This array will contain a list of revision IDs.
@property (nonatomic, strong, nullable) NSArray *revisions;
Expand Down
1 change: 1 addition & 0 deletions WordPress/Classes/Models/AbstractPost.m
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ @implementation AbstractPost
@dynamic autosaveModifiedDate;
@dynamic autosaveIdentifier;
@dynamic foreignID;
@dynamic order;
@synthesize voiceContent;

#pragma mark - Life Cycle Methods
Expand Down
1 change: 1 addition & 0 deletions WordPress/Classes/Services/PostHelper.m
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ + (void)updatePost:(AbstractPost *)post withRemotePost:(RemotePost *)remotePost
post.content = remotePost.content;
post.status = remotePost.status;
post.password = remotePost.password;
post.order = remotePost.order;

if (remotePost.postThumbnailID != nil) {
post.featuredImage = [Media existingOrStubMediaWithMediaID: remotePost.postThumbnailID inBlog:post.blog];
Expand Down
17 changes: 7 additions & 10 deletions WordPress/Classes/Utility/PageTree.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@ final class PageTree {

// A node in a tree, which of course is also a tree itself.
private class TreeNode {
struct PageData {
var postID: NSNumber?
var parentID: NSNumber?
}
let page: Page
var children = [TreeNode]()
var parentNode: TreeNode?
Expand All @@ -16,7 +12,7 @@ final class PageTree {

func dfsList() -> [Page] {
var pages = [Page]()
_ = depthFirstSearch { level, node in
_ = depthFirstSearch(sortByPageOrder: true) { level, node in
let page = node.page
page.hierarchyIndex = level
page.hasVisibleParent = node.parentNode != nil
Expand All @@ -32,18 +28,19 @@ final class PageTree {
/// a boolean value indicate whether the search should be stopped.
/// - Returns: `true` if search has been stopped by the closure.
@discardableResult
func depthFirstSearch(using closure: (Int, TreeNode) -> Bool) -> Bool {
depthFirstSearch(level: 0, using: closure)
func depthFirstSearch(sortByPageOrder: Bool, using closure: (Int, TreeNode) -> Bool) -> Bool {
depthFirstSearch(level: 0, sortByPageOrder: sortByPageOrder, using: closure)
}

private func depthFirstSearch(level: Int, using closure: (Int, TreeNode) -> Bool) -> Bool {
private func depthFirstSearch(level: Int, sortByPageOrder: Bool, using closure: (Int, TreeNode) -> Bool) -> Bool {
let shouldStop = closure(level, self)
if shouldStop {
return true
}

for child in children {
let shouldStop = child.depthFirstSearch(level: level + 1, using: closure)
let pages = sortByPageOrder ? children.sorted(using: KeyPathComparator(\TreeNode.page.order)) : children
for child in pages {
let shouldStop = child.depthFirstSearch(level: level + 1, sortByPageOrder: sortByPageOrder, using: closure)
if shouldStop {
return true
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="23788" systemVersion="24D81" minimumToolsVersion="Xcode 9.0" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="23788" systemVersion="24E248" minimumToolsVersion="Xcode 9.0" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
<entity name="AbstractPost" representedClassName="AbstractPost" isAbstract="YES" parentEntity="BasePost">
<attribute name="autosaveContent" optional="YES" attributeType="String" syncable="YES"/>
<attribute name="autosaveExcerpt" optional="YES" attributeType="String" syncable="YES"/>
Expand All @@ -13,6 +13,7 @@
<attribute name="foreignID" optional="YES" attributeType="UUID" usesScalarValueType="NO" syncable="YES"/>
<attribute name="metaIsLocal" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="NO" syncable="YES"/>
<attribute name="metaPublishImmediately" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="NO" syncable="YES"/>
<attribute name="order" optional="YES" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES" syncable="YES"/>
<attribute name="revisions" optional="YES" attributeType="Transformable" valueTransformerName="NSSecureUnarchiveFromData" syncable="YES"/>
<attribute name="statusAfterSync" optional="YES" attributeType="String" syncable="YES"/>
<relationship name="blog" minCount="1" maxCount="1" deletionRule="Nullify" destinationEntity="Blog" inverseName="posts" inverseEntity="Blog" syncable="YES"/>
Expand Down