From 39b6fb7267a2e9ed26271e446a740854b7e9eae6 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Mon, 11 Sep 2023 13:16:08 +0300 Subject: [PATCH 1/8] Build: Update fluxc version to pr hash (#2851) This 'FluxC' PR hash updates the library to that branch version where the 'TermModel' is updated to its new null proof version. FluxC PR: https://github.com/wordpress-mobile/ WordPress-FluxC-Android/pull/2851 This step is required in order to check that these 'FluxC' related changes work as expected for WPAndroid. --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index bc9935b913f2..90354706fcd9 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ ext { automatticTracksVersion = '3.2.0' gutenbergMobileVersion = 'v1.103.1' wordPressAztecVersion = 'v1.7.0' - wordPressFluxCVersion = 'trunk-f8fa03d500abff98dbf766816fc0fdfa72dc00ec' + wordPressFluxCVersion = '2851-11b5817417dbd37791e5dab07716e1f4485bf65f' wordPressLoginVersion = '1.5.0' wordPressPersistentEditTextVersion = '1.0.2' wordPressUtilsVersion = '3.8.0' From f712d1694b67163d39f7ed1949915f33e908adba Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Mon, 11 Sep 2023 13:18:24 +0300 Subject: [PATCH 2/8] Analysis: Require the term model related slug field to be non-null Warning: "Type mismatch. Required: String Found: String?" --- .../ui/prefs/categories/detail/CategoryDetailViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModel.kt index ef6b789f984e..81f0df80c03f 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModel.kt @@ -140,7 +140,7 @@ class CategoryDetailViewModel @Inject constructor( _onCategoryPush.postValue(Event(InProgress(R.string.updating_cat))) editCategoryUseCase.editCategory( categoryId, - existingCategory!!.slug, + existingCategory!!.slug!!, categoryText, parentCategory.categoryId, siteModel From 88056fac5b05fd9910dc21cc8c4a8b1be985679c Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Mon, 11 Sep 2023 13:32:12 +0300 Subject: [PATCH 3/8] Analysis: Resolve unnecessary safe call and condition compile warnings Compile Warnings: - "Unnecessary safe call on a non-null receiver of type TermModel" - "Condition 'event.term.name == null' is always 'false'" ------------------------------------------------------------------------ As per the removed comment, and although it specifies that sometimes the API will return a success response with a null name, which then will be treated as an error, because without a name, there is no category, after some testing, it has been verified that this is not needed anymore. A '409 duplicate' error is returned instead, that is, instead of a valid response but with a 'null' name, which the deleted code was guarding against. This previous 'term.name == null' change is related to this JP/WPAndroid #13256 PR below: https://github.com/wordpress-mobile/WordPress-Android/pull/13256 However, as per this newly merge FluxC #2826 PR below, the 'TermWPComRestResponse' response class and its 'name' field was marked as '@NonNull'. https://github.com/wordpress-mobile/WordPress-FluxC-Android/pull/2826 PS: If and whenever the backend starts sending a 'term.name' as 'nullable', then this need to be addressed on the backend side, that is, instead of making 'term.name' a nullable field on the FluxC side and start guarding against such occurrences everywhere. --- .../categories/PrepublishingCategoriesViewModel.kt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/prepublishing/categories/PrepublishingCategoriesViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/prepublishing/categories/PrepublishingCategoriesViewModel.kt index 5dd5369a6d8e..a33b12b8fd00 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/prepublishing/categories/PrepublishingCategoriesViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/prepublishing/categories/PrepublishingCategoriesViewModel.kt @@ -201,17 +201,14 @@ class PrepublishingCategoriesViewModel @Inject constructor( } fun onTermUploadedComplete(event: OnTermUploaded) { - // Sometimes the API will return a success response with a null name which we will - // treat as an error because without a name, there is no category - val isError = event.isError || event.term?.name == null - val message = if (isError) { + val message = if (event.isError) { R.string.adding_cat_failed } else { R.string.adding_cat_success } _snackbarEvents.postValue(Event(SnackbarMessageHolder(UiStringRes(message)))) - if (!isError) { + if (!event.isError) { val currentState = uiState.value as UiState val selectedIds = currentState.categoriesListItemUiState.toMutableList() .filter { x -> x.checked } From b4c86cdfe506e51cc406100cbd3e54881c6319fd Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Mon, 11 Sep 2023 14:04:35 +0300 Subject: [PATCH 4/8] Analysis: Resolve term model constructor deprecation warnings Compile Warnings: - Kotlin: "'constructor TermModel()' is deprecated. Deprecated in Java" - Java: "'TermModel()' is deprecated" --- .../android/ui/posts/AddCategoryFragment.java | 9 ++++---- .../android/ui/posts/AddCategoryUseCase.kt | 9 ++++---- .../android/ui/posts/EditCategoryUseCase.kt | 21 ++++++++++++------- .../prefs/SiteSettingsTagDetailFragment.java | 3 +-- .../detail/CategoryDetailViewModel.kt | 2 +- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryFragment.java index 784b468d4c7c..adf27e66e604 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryFragment.java @@ -110,10 +110,11 @@ private boolean addCategory() { return false; } - TermModel newCategory = new TermModel(); - newCategory.setTaxonomy(TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY); - newCategory.setName(categoryName); - newCategory.setParentRemoteId(parentId); + TermModel newCategory = new TermModel( + TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY, + categoryName, + parentId + ); ((SelectCategoriesActivity) getActivity()).categoryAdded(newCategory); return true; diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryUseCase.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryUseCase.kt index 8579525f5c8d..b5b7b81aafd2 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryUseCase.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryUseCase.kt @@ -14,10 +14,11 @@ class AddCategoryUseCase @Inject constructor( private val dispatcher: Dispatcher ) { fun addCategory(categoryName: String, parentCategoryId: Long, siteModel: SiteModel) { - val newCategory = TermModel() - newCategory.taxonomy = TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY - newCategory.name = categoryName - newCategory.parentRemoteId = parentCategoryId + val newCategory = TermModel( + TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY, + categoryName, + parentCategoryId + ) val payload = RemoteTermPayload(newCategory, siteModel) dispatcher.dispatch(TaxonomyActionBuilder.newPushTermAction(payload)) } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditCategoryUseCase.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditCategoryUseCase.kt index 2452d27993ed..b8349d2a3a6f 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditCategoryUseCase.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditCategoryUseCase.kt @@ -14,19 +14,24 @@ class EditCategoryUseCase @Inject constructor( private val dispatcher: Dispatcher ) { fun editCategory( + existingCategory: TermModel, categoryId: Long, - existingCategorySlug: String, categoryName: String, parentCategoryId: Long, siteModel: SiteModel ) { - val existingCategory = TermModel() - existingCategory.remoteTermId = categoryId - existingCategory.taxonomy = TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY - existingCategory.name = categoryName - existingCategory.slug = existingCategorySlug - existingCategory.parentRemoteId = parentCategoryId - val payload = RemoteTermPayload(existingCategory, siteModel) + val editedCategory = TermModel( + existingCategory.id, + existingCategory.localSiteId, + categoryId, + TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY, + categoryName, + existingCategory.slug, + existingCategory.description, + parentCategoryId, + existingCategory.postCount + ) + val payload = RemoteTermPayload(editedCategory, siteModel) dispatcher.dispatch(TaxonomyActionBuilder.newPushTermAction(payload)) } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsTagDetailFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsTagDetailFragment.java index 3135899e0249..dbbc3dd252ce 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsTagDetailFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/SiteSettingsTagDetailFragment.java @@ -54,8 +54,7 @@ public static SiteSettingsTagDetailFragment newInstance(@Nullable TermModel term Bundle args = new Bundle(); if (term == null) { args.putBoolean(ARGS_IS_NEW_TERM, true); - term = new TermModel(); - term.setTaxonomy(TaxonomyStore.DEFAULT_TAXONOMY_TAG); + term = new TermModel(TaxonomyStore.DEFAULT_TAXONOMY_TAG); } args.putSerializable(ARGS_TERM, term); fragment.setArguments(args); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModel.kt index 81f0df80c03f..5379f82473c5 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModel.kt @@ -139,8 +139,8 @@ class CategoryDetailViewModel @Inject constructor( launch { _onCategoryPush.postValue(Event(InProgress(R.string.updating_cat))) editCategoryUseCase.editCategory( + existingCategory!!, categoryId, - existingCategory!!.slug!!, categoryText, parentCategory.categoryId, siteModel From 3fa022634e554ac8e5920c0a565fc1beae265b13 Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Mon, 11 Sep 2023 14:05:10 +0300 Subject: [PATCH 5/8] Analysis: Resolve term model constructor deprecation warnings for tests Compile Warnings: "'constructor TermModel()' is deprecated. Deprecated in Java" --- .../PrepublishingCategoriesViewModelTest.kt | 16 +++-- .../categories/CategoriesListViewModelTest.kt | 13 ++-- .../detail/CategoryDetailViewModelTest.kt | 60 +++++++++++-------- 3 files changed, 52 insertions(+), 37 deletions(-) diff --git a/WordPress/src/test/java/org/wordpress/android/ui/posts/prepublishing/PrepublishingCategoriesViewModelTest.kt b/WordPress/src/test/java/org/wordpress/android/ui/posts/prepublishing/PrepublishingCategoriesViewModelTest.kt index 3f2c6b9dc9eb..ceacd9a7e49f 100644 --- a/WordPress/src/test/java/org/wordpress/android/ui/posts/prepublishing/PrepublishingCategoriesViewModelTest.kt +++ b/WordPress/src/test/java/org/wordpress/android/ui/posts/prepublishing/PrepublishingCategoriesViewModelTest.kt @@ -347,10 +347,16 @@ class PrepublishingCategoriesViewModelTest : BaseUnitTest() { ) private fun getTermModel(): TermModel { - val termModel = TermModel() - termModel.name = "Cars" - termModel.remoteTermId = 20 - termModel.slug = "Cars" - return termModel + return TermModel( + 0, + 6, + 20, + TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY, + "Cars", + "cars", + null, + 0, + 0 + ) } } diff --git a/WordPress/src/test/java/org/wordpress/android/ui/prefs/categories/CategoriesListViewModelTest.kt b/WordPress/src/test/java/org/wordpress/android/ui/prefs/categories/CategoriesListViewModelTest.kt index df5ce7352a89..0a8e45796cd4 100644 --- a/WordPress/src/test/java/org/wordpress/android/ui/prefs/categories/CategoriesListViewModelTest.kt +++ b/WordPress/src/test/java/org/wordpress/android/ui/prefs/categories/CategoriesListViewModelTest.kt @@ -12,11 +12,11 @@ import org.mockito.kotlin.verify import org.mockito.kotlin.whenever import org.wordpress.android.BaseUnitTest import org.wordpress.android.fluxc.Dispatcher -import org.wordpress.android.fluxc.action.TaxonomyAction.FETCH_CATEGORIES +import org.wordpress.android.fluxc.action.TaxonomyAction import org.wordpress.android.fluxc.model.SiteModel import org.wordpress.android.fluxc.store.TaxonomyStore.OnTaxonomyChanged import org.wordpress.android.fluxc.store.TaxonomyStore.TaxonomyError -import org.wordpress.android.fluxc.store.TaxonomyStore.TaxonomyErrorType.GENERIC_ERROR +import org.wordpress.android.fluxc.store.TaxonomyStore.TaxonomyErrorType import org.wordpress.android.ui.posts.GetCategoriesUseCase import org.wordpress.android.ui.prefs.categories.list.CategoriesListViewModel import org.wordpress.android.ui.prefs.categories.list.UiState @@ -165,15 +165,12 @@ class CategoriesListViewModelTest : BaseUnitTest() { } private fun getGenericTaxonomyError(): OnTaxonomyChanged { - val taxonomyChanged = OnTaxonomyChanged(0) - taxonomyChanged.causeOfChange = FETCH_CATEGORIES - taxonomyChanged.error = TaxonomyError(GENERIC_ERROR) + val taxonomyChanged = OnTaxonomyChanged(0, TaxonomyAction.FETCH_CATEGORIES) + taxonomyChanged.error = TaxonomyError(TaxonomyErrorType.GENERIC_ERROR) return taxonomyChanged } private fun getTaxonomyChangedCallback(): OnTaxonomyChanged { - val taxonomyChanged = OnTaxonomyChanged(0) - taxonomyChanged.causeOfChange = FETCH_CATEGORIES - return taxonomyChanged + return OnTaxonomyChanged(0, TaxonomyAction.FETCH_CATEGORIES) } } diff --git a/WordPress/src/test/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModelTest.kt b/WordPress/src/test/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModelTest.kt index 3211d0e9632e..04f179b8e63b 100644 --- a/WordPress/src/test/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModelTest.kt +++ b/WordPress/src/test/java/org/wordpress/android/ui/prefs/categories/detail/CategoryDetailViewModelTest.kt @@ -10,13 +10,14 @@ import org.mockito.kotlin.whenever import org.wordpress.android.BaseUnitTest import org.wordpress.android.R import org.wordpress.android.fluxc.Dispatcher -import org.wordpress.android.fluxc.action.TaxonomyAction.REMOVE_TERM +import org.wordpress.android.fluxc.action.TaxonomyAction import org.wordpress.android.fluxc.model.SiteModel import org.wordpress.android.fluxc.model.TermModel +import org.wordpress.android.fluxc.store.TaxonomyStore import org.wordpress.android.fluxc.store.TaxonomyStore.OnTaxonomyChanged import org.wordpress.android.fluxc.store.TaxonomyStore.OnTermUploaded import org.wordpress.android.fluxc.store.TaxonomyStore.TaxonomyError -import org.wordpress.android.fluxc.store.TaxonomyStore.TaxonomyErrorType.GENERIC_ERROR +import org.wordpress.android.fluxc.store.TaxonomyStore.TaxonomyErrorType import org.wordpress.android.models.CategoryNode import org.wordpress.android.ui.mysite.SelectedSiteRepository import org.wordpress.android.ui.posts.AddCategoryUseCase @@ -227,8 +228,11 @@ class CategoryDetailViewModelTest : BaseUnitTest() { assertThat(InProgress(R.string.updating_cat)).isEqualTo(onCategoryPushStates[0].peekContent()) verify(editCategoryUseCase).editCategory( - 14L, "dog", - updatedCategoryName, 1, siteModel + getChildTermModel(), + 14L, + updatedCategoryName, + 1, + siteModel ) } @@ -326,40 +330,48 @@ class CategoryDetailViewModelTest : BaseUnitTest() { } private fun getParentTermModel(): TermModel { - val termModel = TermModel() - termModel.name = "Animals" - termModel.remoteTermId = 1 - termModel.slug = "Animals" - return termModel + return TermModel( + 0, + 6, + 1, + TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY, + "Animals", + "animals", + null, + 0, + 0 + ) } private fun getChildTermModel(): TermModel { - val termModel = TermModel() - termModel.name = "Dog" - termModel.remoteTermId = 14 - termModel.parentRemoteId = 1 - termModel.slug = "dog" - return termModel + return TermModel( + 0, + 6, + 14, + TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY, + "Dog", + "dog", + null, + 1, + 0 + ) } - private fun getTermUploadSuccess() = OnTermUploaded(TermModel()) + private fun getTermUploadSuccess() = OnTermUploaded(TermModel(TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY)) private fun getTermUploadError(): OnTermUploaded { - val event = OnTermUploaded(TermModel()) - event.error = TaxonomyError(GENERIC_ERROR) + val event = OnTermUploaded(TermModel(TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY)) + event.error = TaxonomyError(TaxonomyErrorType.GENERIC_ERROR) return event } private fun getTaxonomyChangedCallback(): OnTaxonomyChanged { - val taxonomyChanged = OnTaxonomyChanged(0) - taxonomyChanged.causeOfChange = REMOVE_TERM - return taxonomyChanged + return OnTaxonomyChanged(0, TaxonomyAction.REMOVE_TERM) } private fun getTaxonomyChangedErrorCallback(): OnTaxonomyChanged { - val taxonomyChanged = OnTaxonomyChanged(0) - taxonomyChanged.causeOfChange = REMOVE_TERM - taxonomyChanged.error = TaxonomyError(GENERIC_ERROR) + val taxonomyChanged = OnTaxonomyChanged(0, TaxonomyAction.REMOVE_TERM) + taxonomyChanged.error = TaxonomyError(TaxonomyErrorType.GENERIC_ERROR) return taxonomyChanged } } From 621e5b04aa9811ad6ecd5a8bcd2da5c08a8c549f Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Tue, 19 Sep 2023 11:32:59 +0300 Subject: [PATCH 6/8] Build: Update fluxc version to pr hash (#2851) This 'FluxC' PR hash updates the library to that branch version where the 'TermModel' is updated to its new null proof version. FluxC PR: https://github.com/wordpress-mobile/ WordPress-FluxC-Android/pull/2851 This step is required in order to check that these 'FluxC' related changes work as expected for WPAndroid. ------------------------------------------------------------------------ FYI: This change is an addition to 39b6fb7267a2e9ed26271e446a740854b7e9eae6. This change is necessary in order to overcome and resolve new merge conflicts. --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 3b69f2c552cf..d34dcd2dbded 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ ext { automatticTracksVersion = '3.3.0' gutenbergMobileVersion = 'v1.104.0' wordPressAztecVersion = 'v1.8.0' - wordPressFluxCVersion = 'trunk-27d8055b67b3e7860981756aae998abe1bfcd79f' + wordPressFluxCVersion = '2851-22e6a84f56b6fa52c198e94de8c7f281abdb21b8' wordPressLoginVersion = '1.6.0' wordPressPersistentEditTextVersion = '1.0.2' wordPressUtilsVersion = '3.10.0' From 2f3947e97f77b7864a8ce8b7d7c6483ac96c226c Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Tue, 3 Oct 2023 12:22:33 +0300 Subject: [PATCH 7/8] Build: Update fluxc version to pr hash (#2851) This 'FluxC' PR hash updates the library to that branch version where the 'TermModel' is updated to its new null proof version. FluxC PR: https://github.com/wordpress-mobile/ WordPress-FluxC-Android/pull/2851 This step is required in order to check that these 'FluxC' related changes work as expected for WPAndroid. ------------------------------------------------------------------------ FYI: This change is an addition to 621e5b04aa9811ad6ecd5a8bcd2da5c08a8c549f. This change is necessary in order to overcome and resolve new merge conflicts. --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8b6fb1b2cace..dc6b1f2d0409 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ ext { automatticTracksVersion = '3.3.0' gutenbergMobileVersion = 'v1.105.0' wordPressAztecVersion = 'v1.8.0' - wordPressFluxCVersion = '2.48.0' + wordPressFluxCVersion = '2851-a32ed9f5515421159608199172dbde6cddcc4cd4' wordPressLoginVersion = '1.6.0' wordPressPersistentEditTextVersion = '1.0.2' wordPressUtilsVersion = '3.10.0' From 88618fa2f04681f7713bbc7b1d58ca1fc456b2ff Mon Sep 17 00:00:00 2001 From: Petros Paraskevopoulos Date: Wed, 4 Oct 2023 13:00:45 +0300 Subject: [PATCH 8/8] Build: Update fluxc version to trunk hash (#2851) This 'FluxC' hash updates the library to that 'trunk' version where the 'TermModel' is updated to its new null proof version. Related FluxC PR: https://github.com/wordpress-mobile/ WordPress-FluxC-Android/pull/2851 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index dc6b1f2d0409..a98e8623b87c 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ ext { automatticTracksVersion = '3.3.0' gutenbergMobileVersion = 'v1.105.0' wordPressAztecVersion = 'v1.8.0' - wordPressFluxCVersion = '2851-a32ed9f5515421159608199172dbde6cddcc4cd4' + wordPressFluxCVersion = 'trunk-55122d0f327b24441003653dcfe7d3cd03bc7972' wordPressLoginVersion = '1.6.0' wordPressPersistentEditTextVersion = '1.0.2' wordPressUtilsVersion = '3.10.0'