Skip to content

Commit 2572158

Browse files
authored
Merge pull request #17329 from thomashorta/issue/11002-page-settings-parent
Add Parent Page setting to Page Settings in editor
2 parents 5de6c8c + ecd27f1 commit 2572158

File tree

12 files changed

+502
-59
lines changed

12 files changed

+502
-59
lines changed

RELEASE-NOTES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
21.1
44
-----
5+
* [**] Added functionality to set the parent of a page from page settings in the editor. [https://github.com/wordpress-mobile/WordPress-Android/pull/17329]
56
* [***] [Jetpack-only] Redesigned the landing screen. [https://github.com/wordpress-mobile/WordPress-Android/pull/17351]
67

78
21.0

WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.wordpress.android.fluxc.model.PostModel;
3030
import org.wordpress.android.fluxc.model.SiteModel;
3131
import org.wordpress.android.fluxc.model.bloggingprompts.BloggingPromptModel;
32-
import org.wordpress.android.fluxc.model.page.PageModel;
3332
import org.wordpress.android.fluxc.network.utils.StatsGranularity;
3433
import org.wordpress.android.imageeditor.EditImageActivity;
3534
import org.wordpress.android.imageeditor.preview.PreviewImageFragment.Companion.EditImageData;
@@ -663,13 +662,14 @@ public static void viewCurrentBlogPages(@NonNull Context context, @NonNull SiteM
663662
AnalyticsUtils.trackWithSiteDetails(AnalyticsTracker.Stat.OPENED_PAGES, site);
664663
}
665664

666-
public static void viewPageParentForResult(@NonNull Fragment fragment, @NonNull PageModel page) {
665+
public static void viewPageParentForResult(@NonNull Fragment fragment, @NonNull SiteModel site,
666+
@NonNull Long pageRemoteId) {
667667
Intent intent = new Intent(fragment.getContext(), PageParentActivity.class);
668-
intent.putExtra(WordPress.SITE, page.getSite());
669-
intent.putExtra(EXTRA_PAGE_REMOTE_ID_KEY, page.getRemoteId());
668+
intent.putExtra(WordPress.SITE, site);
669+
intent.putExtra(EXTRA_PAGE_REMOTE_ID_KEY, pageRemoteId);
670670
fragment.startActivityForResult(intent, RequestCodes.PAGE_PARENT);
671671

672-
AnalyticsUtils.trackWithSiteDetails(AnalyticsTracker.Stat.OPENED_PAGE_PARENT, page.getSite());
672+
AnalyticsUtils.trackWithSiteDetails(AnalyticsTracker.Stat.OPENED_PAGE_PARENT, site);
673673
}
674674

675675
public static void viewUnifiedComments(Context context, SiteModel site) {

WordPress/src/main/java/org/wordpress/android/ui/pages/PagesFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ class PagesFragment : Fragment(R.layout.pages_fragment), ScrollableViewInitializ
393393
})
394394

395395
viewModel.setPageParent.observe(viewLifecycleOwner, { page ->
396-
page?.let { ActivityLauncher.viewPageParentForResult(this@PagesFragment, page) }
396+
page?.let { ActivityLauncher.viewPageParentForResult(this@PagesFragment, it.site, it.remoteId) }
397397
})
398398

399399
viewModel.isNewPageButtonVisible.observe(viewLifecycleOwner, { isVisible ->

WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -609,8 +609,7 @@ protected void onCreate(Bundle savedInstanceState) {
609609
}
610610
} else {
611611
mEditPostRepository.loadPostByLocalPostId(extras.getInt(EXTRA_POST_LOCAL_ID));
612-
// Load post from extra)s
613-
612+
// Load post from extra's
614613
if (mEditPostRepository.hasPost()) {
615614
if (extras.getBoolean(EXTRA_LOAD_AUTO_SAVE_REVISION)) {
616615
mEditPostRepository.update(postModel -> {

WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostRepository.kt

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import kotlinx.coroutines.CoroutineDispatcher
77
import kotlinx.coroutines.CoroutineScope
88
import kotlinx.coroutines.Job
99
import kotlinx.coroutines.launch
10+
import kotlinx.coroutines.runBlocking
1011
import kotlinx.coroutines.withContext
1112
import org.wordpress.android.fluxc.model.MediaModel
1213
import org.wordpress.android.fluxc.model.PostImmutableModel
@@ -32,6 +33,8 @@ import javax.inject.Inject
3233
import javax.inject.Named
3334
import kotlin.coroutines.CoroutineContext
3435

36+
private const val EMPTY_STRING = ""
37+
3538
class EditPostRepository
3639
@Inject constructor(
3740
private val localeManagerWrapper: LocaleManagerWrapper,
@@ -95,6 +98,7 @@ class EditPostRepository
9598
get() = post!!.tagNameList
9699
val dateLocallyChanged: String
97100
get() = post!!.dateLocallyChanged
101+
private var parent: PostModel? = null
98102

99103
private var locked = false
100104

@@ -144,9 +148,11 @@ class EditPostRepository
144148
@Synchronized
145149
private fun reportTransactionState(lock: Boolean) {
146150
if (lock && locked) {
147-
val message = "EditPostRepository: Transaction is writing on a locked thread ${Arrays.toString(
148-
Thread.currentThread().stackTrace
149-
)}"
151+
val message = "EditPostRepository: Transaction is writing on a locked thread ${
152+
Arrays.toString(
153+
Thread.currentThread().stackTrace
154+
)
155+
}"
150156
AppLog.e(T.EDITOR, message)
151157
}
152158
locked = lock
@@ -210,7 +216,8 @@ class EditPostRepository
210216
reportTransactionState(false)
211217
}
212218

213-
fun postWasChangedInCurrentSession() = postUtils.postHasEdits(postSnapshotWhenEditorOpened,
219+
fun postWasChangedInCurrentSession() = postUtils.postHasEdits(
220+
postSnapshotWhenEditorOpened,
214221
requireNotNull(post)
215222
)
216223

@@ -228,6 +235,19 @@ class EditPostRepository
228235
reportTransactionState(false)
229236
}
230237

238+
fun getParentTitle(site: SiteModel): String {
239+
// update parent local field if parent ID of current post has changed
240+
if (parent?.remotePostId != post?.parentId) {
241+
runBlocking {
242+
parent = post?.parentId
243+
?.takeUnless { it == 0L }
244+
?.let { postStore.getPostByRemotePostId(it, site) }
245+
}
246+
}
247+
248+
return parent?.title ?: EMPTY_STRING
249+
}
250+
231251
sealed class UpdatePostResult {
232252
object Updated : UpdatePostResult()
233253
object NoChanges : UpdatePostResult()

0 commit comments

Comments
 (0)