Skip to content

Commit d5fb601

Browse files
jkmasselclaude
andcommitted
Remove WordPress uninstall card from Jetpack dashboard
The "Welcome to the Jetpack app. You can uninstall the WordPress app" card was showing incorrectly even when WordPress was not installed, confusing users. Remove the card entirely along with the associated "Please Delete WordPress" screen, analytics tracking, navigation action, drawables, and translated strings. Fixes: CMM-2004 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 8c0b6d4 commit d5fb601

52 files changed

Lines changed: 152 additions & 738 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

WordPress/src/main/java/org/wordpress/android/localcontentmigration/ContentMigrationAnalyticsTracker.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,6 @@ class ContentMigrationAnalyticsTracker @Inject constructor(
4949
fun trackNoSitesFlowThanksScreenFinishButtonTapped() =
5050
analyticsTracker.track(Stat.JPMIGRATION_THANKS_SCREEN_FINISH_BUTTON_TAPPED, mapOf(NO_SITES to true))
5151

52-
fun trackPleaseDeleteWordPressCardTapped() =
53-
analyticsTracker.track(Stat.JPMIGRATION_PLEASE_DELETE_WORDPRESS_CARD_TAPPED)
54-
55-
fun trackPleaseDeleteWordPressScreenShown() =
56-
analyticsTracker.track(Stat.JPMIGRATION_PLEASE_DELETE_WORDPRESS_SCREEN_SHOWN)
57-
58-
fun trackPleaseDeleteWordPressGotItTapped() =
59-
analyticsTracker.track(Stat.JPMIGRATION_PLEASE_DELETE_WORDPRESS_GOTIT_TAPPED)
60-
61-
fun trackPleaseDeleteWordPressHelpTapped() =
62-
analyticsTracker.track(Stat.JPMIGRATION_PLEASE_DELETE_WORDPRESS_HELP_BUTTON_TAPPED)
63-
6452
fun trackErrorScreenShown() =
6553
analyticsTracker.track(Stat.JPMIGRATION_ERROR_SCREEN_SHOWN)
6654

WordPress/src/main/java/org/wordpress/android/ui/main/jetpack/migration/JetpackMigrationActivity.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package org.wordpress.android.ui.main.jetpack.migration
22

3-
import android.content.Context
4-
import android.content.Intent
53
import android.os.Bundle
64
import dagger.hilt.android.AndroidEntryPoint
75
import org.wordpress.android.R
@@ -18,9 +16,8 @@ class JetpackMigrationActivity : BaseAppCompatActivity() {
1816
with(ActivityJetpackMigrationBinding.inflate(layoutInflater)) {
1917
setContentView(root)
2018
if (savedInstanceState == null) {
21-
val showDeleteWpState = intent.getBooleanExtra(KEY_SHOW_DELETE_WP_STATE, false)
2219
val deepLinkData = intent.getParcelableExtraCompat<PreMigrationDeepLinkData>(KEY_DEEP_LINK_DATA)
23-
val fragment = JetpackMigrationFragment.newInstance(showDeleteWpState, deepLinkData)
20+
val fragment = JetpackMigrationFragment.newInstance(deepLinkData)
2421
supportFragmentManager.beginTransaction()
2522
.replace(R.id.fragment_container, fragment)
2623
.commit()
@@ -30,10 +27,5 @@ class JetpackMigrationActivity : BaseAppCompatActivity() {
3027

3128
companion object {
3229
const val KEY_DEEP_LINK_DATA = "KEY_DEEP_LINK_DATA"
33-
private const val KEY_SHOW_DELETE_WP_STATE = "KEY_SHOW_DELETE_WP_STATE"
34-
fun createIntent(context: Context, showDeleteWpState: Boolean = false): Intent =
35-
Intent(context, JetpackMigrationActivity::class.java).apply {
36-
putExtra(KEY_SHOW_DELETE_WP_STATE, showDeleteWpState)
37-
}
3830
}
3931
}

WordPress/src/main/java/org/wordpress/android/ui/main/jetpack/migration/JetpackMigrationFragment.kt

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,12 @@ import org.wordpress.android.ui.compose.theme.AppThemeM3
2929
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent
3030
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent.CompleteFlow
3131
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent.FallbackToLogin
32-
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent.FinishActivity
3332
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent.Logout
3433
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent.RequestNotificationPermission
3534
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent.ShowHelp
3635
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.UiState.Content
3736
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.UiState.Error
3837
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.UiState.Loading
39-
import org.wordpress.android.ui.main.jetpack.migration.compose.state.DeleteStep
4038
import org.wordpress.android.ui.main.jetpack.migration.compose.state.DoneStep
4139
import org.wordpress.android.ui.main.jetpack.migration.compose.state.ErrorStep
4240
import org.wordpress.android.ui.main.jetpack.migration.compose.state.LoadingState
@@ -78,11 +76,9 @@ class JetpackMigrationFragment : Fragment() {
7876
super.onViewCreated(view, savedInstanceState)
7977
observeViewModelEvents()
8078
observeRefreshAppThemeEvents()
81-
val showDeleteWpState = arguments?.getBoolean(KEY_SHOW_DELETE_WP_STATE, false) ?: false
8279
val deepLinkData = arguments?.getParcelableCompat<PreMigrationDeepLinkData>(KEY_DEEP_LINK_DATA)
83-
initBackPressHandler(showDeleteWpState)
80+
initBackPressHandler()
8481
viewModel.start(
85-
showDeleteWpState,
8682
requireActivity().application as WordPress,
8783
deepLinkData
8884
)
@@ -115,7 +111,6 @@ class JetpackMigrationFragment : Fragment() {
115111
is Logout -> (requireActivity().application as? WordPress)?.let { viewModel.signOutWordPress(it) }
116112
is ShowHelp -> launchHelpScreen()
117113
is RequestNotificationPermission -> requestNotificationPermission()
118-
is FinishActivity -> requireActivity().finish()
119114
}
120115
}
121116

@@ -153,24 +148,20 @@ class JetpackMigrationFragment : Fragment() {
153148
}
154149
}
155150

156-
private fun initBackPressHandler(showDeleteWpState: Boolean) {
157-
if (showDeleteWpState) return
151+
private fun initBackPressHandler() {
158152
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
159153
viewModel.logoutAndFallbackToLogin()
160154
}
161155
}
162156

163157
companion object {
164158
private const val KEY_DEEP_LINK_DATA = "KEY_DEEP_LINK_DATA"
165-
private const val KEY_SHOW_DELETE_WP_STATE = "KEY_SHOW_DELETE_WP_STATE"
166159

167160
fun newInstance(
168-
showDeleteWpState: Boolean = false,
169161
deepLinkData: PreMigrationDeepLinkData?
170162
): JetpackMigrationFragment =
171163
JetpackMigrationFragment().apply {
172164
arguments = Bundle().apply {
173-
putBoolean(KEY_SHOW_DELETE_WP_STATE, showDeleteWpState)
174165
if (deepLinkData != null) {
175166
putParcelable(KEY_DEEP_LINK_DATA, deepLinkData)
176167
}
@@ -189,7 +180,6 @@ private fun JetpackMigrationScreen(viewModel: JetpackMigrationViewModel = viewMo
189180
is Content.Welcome -> WelcomeStep(state)
190181
is Content.Notifications -> NotificationsStep(state)
191182
is Content.Done -> DoneStep(state)
192-
is Content.Delete -> DeleteStep(state)
193183
is Error -> ErrorStep(state)
194184
is Loading -> LoadingState()
195185
}

WordPress/src/main/java/org/wordpress/android/ui/main/jetpack/migration/JetpackMigrationViewModel.kt

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ import org.wordpress.android.localcontentmigration.MigrationEmailHelper
4040
import org.wordpress.android.localcontentmigration.WelcomeScreenData
4141
import org.wordpress.android.modules.UI_THREAD
4242
import org.wordpress.android.sharedlogin.resolver.LocalMigrationOrchestrator
43-
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.ActionButton.DeletePrimaryButton
44-
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.ActionButton.DeleteSecondaryButton
4543
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.ActionButton.DonePrimaryButton
4644
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.ActionButton.ErrorPrimaryButton
4745
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.ActionButton.ErrorSecondaryButton
@@ -50,10 +48,8 @@ import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel
5048
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.ActionButton.WelcomeSecondaryButton
5149
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent.CompleteFlow
5250
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent.FallbackToLogin
53-
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent.FinishActivity
5451
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent.Logout
5552
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.JetpackMigrationActionEvent.ShowHelp
56-
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.UiState.Content.Delete
5753
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.UiState.Content.Done
5854
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.UiState.Content.Notifications
5955
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.UiState.Content.Welcome
@@ -98,7 +94,6 @@ class JetpackMigrationViewModel @Inject constructor(
9894
private val migrationStateFlow = MutableStateFlow<LocalMigrationState>(Initial)
9995
private val continueClickedFlow = MutableStateFlow(false)
10096
private val notificationContinueClickedFlow = MutableStateFlow(false)
101-
private var showDeleteState: Boolean = false
10297
private var deepLinkData: PreMigrationDeepLinkData? = null
10398

10499
val uiState = combineTransform(
@@ -107,7 +102,6 @@ class JetpackMigrationViewModel @Inject constructor(
107102
notificationContinueClickedFlow
108103
) { migrationState, continueClicked, notificationContinueClicked ->
109104
when {
110-
showDeleteState -> emit(initPleaseDeleteWordPressAppScreenUi())
111105
migrationState is Ineligible -> {
112106
appPrefsWrapper.setJetpackMigrationEligible(false)
113107
emit(Loading)
@@ -133,16 +127,12 @@ class JetpackMigrationViewModel @Inject constructor(
133127
}.stateIn(viewModelScope, SharingStarted.Lazily, Loading)
134128

135129
fun start(
136-
showDeleteState: Boolean,
137130
application: WordPress,
138131
deepLinkData: PreMigrationDeepLinkData?
139132
) {
140133
if (isStarted) return
141134
isStarted = true
142135

143-
this.showDeleteState = showDeleteState
144-
if (showDeleteState) return
145-
146136
this.deepLinkData = deepLinkData
147137

148138
tryMigration(application)
@@ -208,18 +198,6 @@ class JetpackMigrationViewModel @Inject constructor(
208198
)
209199
}
210200

211-
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
212-
fun initPleaseDeleteWordPressAppScreenUi(): Delete {
213-
migrationAnalyticsTracker.trackPleaseDeleteWordPressScreenShown()
214-
215-
return Delete(
216-
primaryActionButton = DeletePrimaryButton(::onGotItClicked),
217-
secondaryActionButton = DeleteSecondaryButton {
218-
onHelpClicked(source = HelpButtonSource.Delete)
219-
},
220-
)
221-
}
222-
223201
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
224202
fun initErrorScreenUi(): UiState.Error {
225203
migrationAnalyticsTracker.trackErrorScreenShown()
@@ -344,16 +322,10 @@ class JetpackMigrationViewModel @Inject constructor(
344322
HelpButtonSource.Welcome -> migrationAnalyticsTracker.trackWelcomeScreenHelpButtonTapped()
345323
HelpButtonSource.WelcomeAvatar -> migrationAnalyticsTracker.trackWelcomeScreenAvatarTapped()
346324
HelpButtonSource.Error -> migrationAnalyticsTracker.trackErrorHelpTapped()
347-
HelpButtonSource.Delete -> migrationAnalyticsTracker.trackPleaseDeleteWordPressHelpTapped()
348325
}
349326
postActionEvent(ShowHelp)
350327
}
351328

352-
private fun onGotItClicked() {
353-
migrationAnalyticsTracker.trackPleaseDeleteWordPressGotItTapped()
354-
postActionEvent(FinishActivity)
355-
}
356-
357329
private fun resizeAvatarUrl(avatarUrl: String) = avatarUtilsWrapper.rewriteAvatarUrlWithResource(
358330
avatarUrl,
359331
R.dimen.jp_migration_user_avatar_size
@@ -416,19 +388,6 @@ class JetpackMigrationViewModel @Inject constructor(
416388
val deleteWpIcon = R.drawable.ic_jetpack_migration_delete_wp
417389
val noSitesMessage = UiStringRes(R.string.jp_migration_done_no_sites_message)
418390
}
419-
420-
data class Delete(
421-
override val primaryActionButton: ActionButton,
422-
override val secondaryActionButton: ActionButton
423-
) : Content(
424-
primaryActionButton = primaryActionButton,
425-
screenIconRes = R.drawable.ic_jetpack_migration_delete,
426-
title = UiStringRes(R.string.jp_migration_delete_title),
427-
subtitle = UiStringRes(R.string.jp_migration_delete_subtitle),
428-
message = UiStringRes(R.string.jp_migration_delete_message),
429-
) {
430-
val deleteWpIcon = R.drawable.ic_jetpack_migration_delete_wp
431-
}
432391
}
433392

434393
data class Error(
@@ -519,26 +478,11 @@ class JetpackMigrationViewModel @Inject constructor(
519478
onClick = onClick,
520479
text = UiStringRes(R.string.jp_migration_help_button),
521480
)
522-
523-
data class DeletePrimaryButton(
524-
override val onClick: () -> Unit
525-
) : ActionButton(
526-
onClick = onClick,
527-
text = UiStringRes(R.string.jp_migration_got_it_button)
528-
)
529-
530-
data class DeleteSecondaryButton(
531-
override val onClick: () -> Unit
532-
) : ActionButton(
533-
onClick = onClick,
534-
text = UiStringRes(R.string.jp_migration_need_help_button)
535-
)
536481
}
537482

538483
sealed class HelpButtonSource {
539484
object Welcome : HelpButtonSource()
540485
object WelcomeAvatar : HelpButtonSource()
541-
object Delete : HelpButtonSource()
542486
object Error : HelpButtonSource()
543487
}
544488

@@ -555,7 +499,6 @@ class JetpackMigrationViewModel @Inject constructor(
555499
val deepLinkData: PreMigrationDeepLinkData? = null,
556500
) : JetpackMigrationActionEvent()
557501

558-
object FinishActivity : JetpackMigrationActionEvent()
559502
object Logout : JetpackMigrationActionEvent()
560503
}
561504
}

WordPress/src/main/java/org/wordpress/android/ui/main/jetpack/migration/compose/state/DeleteStep.kt

Lines changed: 0 additions & 99 deletions
This file was deleted.

WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteFragment.kt

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ import org.wordpress.android.ui.main.AddSiteHandler
4040
import org.wordpress.android.ui.main.ChooseSiteActivity
4141
import org.wordpress.android.ui.main.WPMainActivity
4242
import org.wordpress.android.ui.main.WPMainActivity.OnScrollToTopListener
43-
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationActivity
4443
import org.wordpress.android.ui.main.utils.MeGravatarLoader
4544
import org.wordpress.android.ui.mysite.MySiteViewModel.State
4645
import org.wordpress.android.ui.mysite.cards.dashboard.bloggingprompts.BloggingPromptsCardAnalyticsTracker
@@ -645,7 +644,6 @@ class MySiteFragment : Fragment(R.layout.my_site_fragment),
645644
is SiteNavigationAction.OpenDeepLink ->
646645
DeepLinkingIntentReceiverActivity.openDeepLinkUrl(requireActivity(), action.url)
647646
is SiteNavigationAction.OpenJetpackPoweredBottomSheet -> showJetpackPoweredBottomSheet()
648-
is SiteNavigationAction.OpenJetpackMigrationDeleteWP -> showJetpackMigrationDeleteWP()
649647
is SiteNavigationAction.OpenJetpackFeatureOverlay -> showJetpackFeatureOverlay(action.source)
650648
is SiteNavigationAction.OpenPromoteWithBlazeOverlay -> activityNavigator.openPromoteWithBlaze(
651649
requireActivity(),
@@ -777,14 +775,6 @@ class MySiteFragment : Fragment(R.layout.my_site_fragment),
777775
.show(requireActivity().supportFragmentManager, JetpackPoweredBottomSheetFragment.TAG)
778776
}
779777

780-
private fun showJetpackMigrationDeleteWP() {
781-
val intent = JetpackMigrationActivity.createIntent(
782-
context = requireActivity(),
783-
showDeleteWpState = true
784-
)
785-
startActivity(intent)
786-
}
787-
788778
private fun showJetpackFeatureOverlay(
789779
source: JetpackFeatureRemovalOverlayUtil.JetpackFeatureCollectionOverlaySource
790780
) {

0 commit comments

Comments
 (0)