diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 3be419b757ef..37fcff853c8a 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -2,7 +2,8 @@ 25.7 ----- - +* [**] Send feedback from within the experimental editor "more" options menu. [#21586] +* [**] Support accessing the code editor within the experimental editor. [#21582] 25.6 ----- diff --git a/WordPress/src/jetpack/res/values-night/colors_base.xml b/WordPress/src/jetpack/res/values-night/colors_base.xml index eac8746a0bc5..71a85faaf05d 100644 --- a/WordPress/src/jetpack/res/values-night/colors_base.xml +++ b/WordPress/src/jetpack/res/values-night/colors_base.xml @@ -5,7 +5,7 @@ @color/primary_40 @color/primary_50 - @color/blue_30 + @color/colorPrimary @color/white @color/white diff --git a/WordPress/src/jetpack/res/values/colors_base.xml b/WordPress/src/jetpack/res/values/colors_base.xml index db08cc887e06..acd855a4b986 100644 --- a/WordPress/src/jetpack/res/values/colors_base.xml +++ b/WordPress/src/jetpack/res/values/colors_base.xml @@ -5,7 +5,7 @@ @color/primary @color/primary_40 - @color/blue_50 + @color/colorPrimary @color/jetpack_green_50 @color/jetpack_green_0 diff --git a/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java b/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java index de1f163ba73b..14522ad1e1b2 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java @@ -1318,8 +1318,13 @@ public static void viewHelp(@NonNull Context context, @NonNull Origin origin, @N } public static void viewFeedbackForm(@NonNull Context context) { + viewFeedbackForm(context, null); + } + + public static void viewFeedbackForm(@NonNull Context context, @Nullable String feedbackPrefix) { AnalyticsTracker.track(Stat.APP_REVIEWS_FEEDBACK_SCREEN_OPENED); Intent intent = new Intent(context, FeedbackFormActivity.class); + intent.putExtra(FeedbackFormActivity.EXTRA_FEEDBACK_PREFIX, feedbackPrefix); context.startActivity(intent); } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/feedbackform/FeedbackFormActivity.kt b/WordPress/src/main/java/org/wordpress/android/ui/main/feedbackform/FeedbackFormActivity.kt index 167d6710859f..8ada7c428809 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/main/feedbackform/FeedbackFormActivity.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/main/feedbackform/FeedbackFormActivity.kt @@ -10,6 +10,7 @@ import androidx.compose.ui.platform.ViewCompositionStrategy import dagger.hilt.android.AndroidEntryPoint import androidx.appcompat.app.AppCompatActivity import org.wordpress.android.ui.RequestCodes +import org.wordpress.android.ui.accounts.HelpActivity @AndroidEntryPoint class FeedbackFormActivity : AppCompatActivity() { @@ -18,6 +19,9 @@ class FeedbackFormActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + val feedbackPrefix = intent.getStringExtra(EXTRA_FEEDBACK_PREFIX) + viewModel.feedbackPrefix = feedbackPrefix + setContentView( ComposeView(this).apply { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -45,8 +49,7 @@ class FeedbackFormActivity : AppCompatActivity() { viewModel.onRemoveMediaClick(it) }, onSupportClick = { - // This will return to the Help screen, where the user can see the contact support link - finish() + navigateToHelpScreen() }, ) } @@ -54,6 +57,13 @@ class FeedbackFormActivity : AppCompatActivity() { ) } + private fun navigateToHelpScreen() { + val intent = Intent(this, HelpActivity::class.java) + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK) + startActivity(intent) + finish() + } + @Deprecated("Deprecated in Java") public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) @@ -64,4 +74,8 @@ class FeedbackFormActivity : AppCompatActivity() { } } } + + companion object { + const val EXTRA_FEEDBACK_PREFIX = "extra_feedback_prefix" + } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/feedbackform/FeedbackFormViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/main/feedbackform/FeedbackFormViewModel.kt index 30c0c5c6b01c..2beda1af90f1 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/main/feedbackform/FeedbackFormViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/main/feedbackform/FeedbackFormViewModel.kt @@ -61,6 +61,8 @@ class FeedbackFormViewModel @Inject constructor( private val _progressDialogState = MutableStateFlow(null) val progressDialogState = _progressDialogState.asStateFlow() + var feedbackPrefix: String? = null + fun updateMessageText(message: String) { if (message != _messageText.value) { _messageText.value = message @@ -138,12 +140,13 @@ class FeedbackFormViewModel @Inject constructor( attachmentTokens: List = emptyList() ) { showProgressDialog(R.string.sending) + val descriptionPrefix = feedbackPrefix?.let { "[$it] " } ?: "" zendeskHelper.createRequest( context = context, origin = HelpActivity.Origin.FEEDBACK_FORM, selectedSite = selectedSiteRepository.getSelectedSite(), extraTags = listOf("in_app_feedback"), - requestDescription = _messageText.value, + requestDescription = descriptionPrefix + _messageText.value, attachmentTokens = attachmentTokens, callback = object : ZendeskHelper.CreateRequestCallback() { override fun onSuccess() { @@ -303,4 +306,3 @@ class FeedbackFormViewModel @Inject constructor( private const val MAX_ATTACHMENTS = 5 } } - diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.kt index eec54313e76b..02b723c5e2db 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.kt @@ -1412,6 +1412,8 @@ class EditPostActivity : AppCompatActivity(), EditorFragmentActivity, EditorImag val historyMenuItem = menu.findItem(R.id.menu_history) val settingsMenuItem = menu.findItem(R.id.menu_post_settings) val helpMenuItem = menu.findItem(R.id.menu_editor_help) + val sendFeedbackItem = menu.findItem(R.id.menu_editor_send_feedback) + if (undoItem != null) { undoItem.setEnabled(menuHasUndo) undoItem.setVisible(!htmlModeMenuStateOn) @@ -1426,10 +1428,7 @@ class EditPostActivity : AppCompatActivity(), EditorFragmentActivity, EditorImag } previewMenuItem?.setVisible(showMenuItems) if (viewHtmlModeMenuItem != null) { - viewHtmlModeMenuItem.setVisible( - (((editorFragment is AztecEditorFragment) - || (editorFragment is GutenbergEditorFragment))) && showMenuItems - ) + viewHtmlModeMenuItem.isVisible = showMenuItems viewHtmlModeMenuItem.setTitle( if (htmlModeMenuStateOn) R.string.menu_visual_mode else R.string.menu_html_mode) } @@ -1496,6 +1495,11 @@ class EditPostActivity : AppCompatActivity(), EditorFragmentActivity, EditorImag helpMenuItem.setVisible(false) } } + + if (sendFeedbackItem != null) { + sendFeedbackItem.isVisible = editorFragment is GutenbergKitEditorFragment + } + return super.onPrepareOptionsMenu(menu) } @@ -1645,6 +1649,8 @@ class EditPostActivity : AppCompatActivity(), EditorFragmentActivity, EditorImag analyticsTrackerWrapper.track(Stat.EDITOR_HELP_SHOWN, siteModel) (editorFragment as GutenbergEditorFragment).showEditorHelp() } + } else if (itemId == R.id.menu_editor_send_feedback) { + ActivityLauncher.viewFeedbackForm(this@EditPostActivity, "Editor") } else if (itemId == R.id.menu_undo_action) { if (editorFragment is GutenbergEditorFragment) { (editorFragment as GutenbergEditorFragment).onUndoPressed() diff --git a/WordPress/src/main/res/layout/add_category.xml b/WordPress/src/main/res/layout/add_category.xml index 9fbfbda2e777..e6c0dfbe8115 100644 --- a/WordPress/src/main/res/layout/add_category.xml +++ b/WordPress/src/main/res/layout/add_category.xml @@ -44,6 +44,8 @@ android:id="@+id/parent_category" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginStart="-4dp" + android:layout_marginEnd="-4dp" app:popupTheme="@style/ThemeOverlay.AppCompat.DayNight" tools:listitem="@layout/wp_simple_list_item_1" /> @@ -54,8 +56,6 @@ style="@style/WordPress.PrepubPrimaryButton" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginStart="@dimen/margin_medium" - android:layout_marginEnd="@dimen/margin_medium" android:layout_marginTop="@dimen/margin_medium" android:layout_marginBottom="@dimen/margin_medium" android:enabled="false" diff --git a/WordPress/src/main/res/layout/prepublishing_tags_fragment.xml b/WordPress/src/main/res/layout/prepublishing_tags_fragment.xml index ea7032e62393..2eeaffee5ba5 100644 --- a/WordPress/src/main/res/layout/prepublishing_tags_fragment.xml +++ b/WordPress/src/main/res/layout/prepublishing_tags_fragment.xml @@ -4,20 +4,18 @@ android:layout_height="match_parent" android:orientation="vertical"> + + - - diff --git a/WordPress/src/main/res/layout/publicize_list_fragment.xml b/WordPress/src/main/res/layout/publicize_list_fragment.xml index e53071f2c830..f69c493c4d9b 100644 --- a/WordPress/src/main/res/layout/publicize_list_fragment.xml +++ b/WordPress/src/main/res/layout/publicize_list_fragment.xml @@ -114,7 +114,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" + android:layout_marginEnd="@dimen/margin_extra_large" android:layout_marginStart="@dimen/margin_extra_large" + android:gravity="center_vertical" + android:minHeight="@dimen/min_touch_target_sz" android:text="@string/manage" android:textAppearance="?attr/textAppearanceSubtitle1" /> diff --git a/WordPress/src/main/res/menu/edit_post.xml b/WordPress/src/main/res/menu/edit_post.xml index dbfdb50fc5e2..160d404f3fb8 100644 --- a/WordPress/src/main/res/menu/edit_post.xml +++ b/WordPress/src/main/res/menu/edit_post.xml @@ -71,5 +71,10 @@ android:title="@string/help_and_support" > + + + diff --git a/WordPress/src/main/res/values-night/colors_base.xml b/WordPress/src/main/res/values-night/colors_base.xml index f4b8292fb845..794050b55417 100644 --- a/WordPress/src/main/res/values-night/colors_base.xml +++ b/WordPress/src/main/res/values-night/colors_base.xml @@ -5,7 +5,7 @@ @color/primary_30 @color/primary_50 - @color/primary_30 + @color/colorPrimary @color/colorPrimary @color/colorPrimary diff --git a/WordPress/src/main/res/values/colors_base.xml b/WordPress/src/main/res/values/colors_base.xml index a33ec45a9bdc..0cd9869f2452 100644 --- a/WordPress/src/main/res/values/colors_base.xml +++ b/WordPress/src/main/res/values/colors_base.xml @@ -5,7 +5,7 @@ @color/primary @color/primary_70 - @color/blue_50 + @color/colorPrimary @color/blue_50 @color/blue_0 diff --git a/WordPress/src/main/res/values/strings.xml b/WordPress/src/main/res/values/strings.xml index 923b38760055..c157210ab25f 100644 --- a/WordPress/src/main/res/values/strings.xml +++ b/WordPress/src/main/res/values/strings.xml @@ -3730,7 +3730,7 @@ Back Add Tags Publish Date - Tags help tell readers what a post is about. + Tags help tell readers what a post is about Not set Give your story a title Not set diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cf3dc904ef61..d602d78347a1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,7 @@ androidx-appcompat = '1.7.0' androidx-arch-core = '2.2.0' androidx-camera = '1.4.1' androidx-cardview = '1.0.0' -androidx-compose-bom = '2024.12.01' +androidx-compose-bom = '2025.01.00' androidx-compose-material3 = '1.3.1' androidx-constraintlayout-compose = '1.1.0' androidx-constraintlayout-main = '2.2.0' @@ -71,7 +71,7 @@ google-play-services-auth = '20.4.1' google-services = '4.4.2' gravatar = '2.2.0' greenrobot-eventbus = '3.3.1' -gutenberg-kit = '55-a490cd3d2d70ad4bba501655f83fdc42b404d502' +gutenberg-kit = 'trunk-cc52214a50893b41898607ac0bff7f2787b085bb' gutenberg-mobile = 'v1.121.0' indexos-media-for-mobile = '43a9026f0973a2f0a74fa813132f6a16f7499c3a' jackson-databind = '2.12.7.1' diff --git a/libs/editor/src/main/java/org/wordpress/android/editor/gutenberg/GutenbergKitEditorFragment.java b/libs/editor/src/main/java/org/wordpress/android/editor/gutenberg/GutenbergKitEditorFragment.java index 14a8e9943eff..0e86c1c89391 100644 --- a/libs/editor/src/main/java/org/wordpress/android/editor/gutenberg/GutenbergKitEditorFragment.java +++ b/libs/editor/src/main/java/org/wordpress/android/editor/gutenberg/GutenbergKitEditorFragment.java @@ -306,6 +306,7 @@ private void toggleHtmlMode() { mHtmlModeEnabled = !mHtmlModeEnabled; mEditorFragmentListener.onTrackableEvent(TrackableEvent.HTML_BUTTON_TAPPED); mEditorFragmentListener.onHtmlModeToggledInToolbar(); + mGutenbergView.setTextEditorEnabled(mHtmlModeEnabled); } @Override