Skip to content

Commit 648bce3

Browse files
committed
Merge branch 'trunk' into issue-15480/email_encoding_rfc_3986
2 parents 7937610 + 45c8665 commit 648bce3

31 files changed

Lines changed: 78 additions & 578 deletions

RELEASE-NOTES.txt

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

33
20.5
44
-----
5+
* [*] Use larger thumbnail previews for recommended themes during site creation [https://github.com/wordpress-mobile/WordPress-Android/pull/16848]
56

67

78
20.4

WordPress/build.gradle

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,6 @@ android {
109109
buildConfigField "boolean", "SITE_NAME", "false"
110110
buildConfigField "boolean", "LAND_ON_THE_EDITOR", "false"
111111
buildConfigField "boolean", "BLOGGING_PROMPTS", "false"
112-
buildConfigField "boolean", "MY_SITE_DEFAULT_TAB_EXPERIMENT", "false"
113-
buildConfigField "boolean", "MY_SITE_DEFAULT_TAB_EXPERIMENT_VARIANT_DASHBOARD", "false"
114112
buildConfigField "boolean", "STATS_REVAMP_V2", "false"
115113
buildConfigField "boolean", "QUICK_START_EXISTING_USERS_V2", "false"
116114
buildConfigField "boolean", "QRCODE_AUTH_FLOW", "false"
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.wordpress.android
2+
3+
import androidx.lifecycle.ProcessLifecycleOwner
4+
import dagger.hilt.android.testing.HiltAndroidTest
5+
import org.junit.Assert.assertFalse
6+
import org.junit.Test
7+
import org.wordpress.android.AppInitializer.ApplicationLifecycleMonitor
8+
import org.wordpress.android.support.BaseTest
9+
10+
/**
11+
* This tests if [ProcessLifecycleOwner] observer works at the app startup.
12+
*
13+
* [WordPress.appIsInTheBackground] is set to false when [ApplicationLifecycleMonitor.onAppComesFromBackground] is
14+
* called.
15+
*/
16+
@HiltAndroidTest
17+
class AppInitializerTest : BaseTest() {
18+
@Test
19+
fun verifyOnAppComesFromBackgroundCalled() {
20+
assertFalse(WordPress.appIsInTheBackground)
21+
}
22+
}

WordPress/src/androidTest/java/org/wordpress/android/e2e/pages/MySitesPage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ public void goToBackup() {
175175
public StatsPage goToStats() {
176176
goToMenuTab();
177177
clickQuickActionOrSiteMenuItem(R.id.quick_action_stats_button, R.string.stats);
178+
idleFor(4000);
178179
dismissJetpackAdIfPresent();
179180
waitForElementToBeDisplayedWithoutFailure(R.id.tabLayout);
180181

WordPress/src/jetpack/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,7 @@
2626

2727
<!-- About button in Me -->
2828
<string name="me_btn_about">About Jetpack</string>
29+
30+
<!-- My Site Initial Tab Default value -->
31+
<string name="initial_screen_entry_value_default_key" translatable="false">@string/initial_screen_entry_value_home</string>
2932
</resources>

WordPress/src/main/java/org/wordpress/android/AppInitializer.kt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ import org.wordpress.android.support.ZendeskHelper
8181
import org.wordpress.android.ui.ActivityId
8282
import org.wordpress.android.ui.debug.cookies.DebugCookieManager
8383
import org.wordpress.android.ui.mysite.SelectedSiteRepository
84-
import org.wordpress.android.ui.mysite.tabs.MySiteDefaultTabExperiment
8584
import org.wordpress.android.ui.notifications.SystemNotificationsTracker
8685
import org.wordpress.android.ui.notifications.services.NotificationsUpdateServiceStarter
8786
import org.wordpress.android.ui.notifications.utils.NotificationsUtils
@@ -154,7 +153,6 @@ class AppInitializer @Inject constructor(
154153
@Inject lateinit var debugCookieManager: DebugCookieManager
155154
@Inject @Named(APPLICATION_SCOPE) lateinit var appScope: CoroutineScope
156155
@Inject lateinit var selectedSiteRepository: SelectedSiteRepository
157-
@Inject lateinit var mySiteDefaultTabExperiment: MySiteDefaultTabExperiment
158156

159157
// For development and production `AnalyticsTrackerNosara`, for testing a mocked `Tracker` will be injected.
160158
@Inject lateinit var tracker: Tracker
@@ -308,8 +306,6 @@ class AppInitializer @Inject constructor(
308306

309307
debugCookieManager.sync()
310308

311-
initAnalyticsExperimentPropertiesIfNeeded()
312-
313309
initialized = true
314310
}
315311

@@ -683,11 +679,6 @@ class AppInitializer @Inject constructor(
683679
EmojiCompat.init(config)
684680
}
685681

686-
/* If default tab experiment is running, pass along to tracker */
687-
private fun initAnalyticsExperimentPropertiesIfNeeded() {
688-
mySiteDefaultTabExperiment.checkAndSetTrackingPropertiesIfNeeded()
689-
}
690-
691682
@Suppress("unused")
692683
@OnLifecycleEvent(Lifecycle.Event.ON_START)
693684
fun onAppComesFromBackground() {

WordPress/src/main/java/org/wordpress/android/ui/accounts/LoginEpilogueViewModel.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import androidx.lifecycle.LiveData
44
import androidx.lifecycle.MediatorLiveData
55
import androidx.lifecycle.ViewModel
66
import org.wordpress.android.fluxc.store.SiteStore
7-
import org.wordpress.android.ui.mysite.tabs.MySiteDefaultTabExperiment
87
import org.wordpress.android.ui.prefs.AppPrefsWrapper
98
import org.wordpress.android.util.BuildConfigWrapper
109
import org.wordpress.android.viewmodel.Event
@@ -14,8 +13,7 @@ import javax.inject.Inject
1413
class LoginEpilogueViewModel @Inject constructor(
1514
private val appPrefsWrapper: AppPrefsWrapper,
1615
private val buildConfigWrapper: BuildConfigWrapper,
17-
private val siteStore: SiteStore,
18-
private val mySiteDefaultTabExperiment: MySiteDefaultTabExperiment
16+
private val siteStore: SiteStore
1917
) : ViewModel() {
2018
private val _navigationEvents = MediatorLiveData<Event<LoginNavigationEvents>>()
2119
val navigationEvents: LiveData<Event<LoginNavigationEvents>> = _navigationEvents
@@ -32,10 +30,6 @@ class LoginEpilogueViewModel @Inject constructor(
3230
if (!siteStore.hasSite()) handleNoSitesFound() else handleSitesFound()
3331
}
3432

35-
fun checkAndSetVariantForMySiteDefaultTabExperiment() {
36-
mySiteDefaultTabExperiment.checkAndSetVariantIfNeeded()
37-
}
38-
3933
private fun handleNoSitesFound() {
4034
if (buildConfigWrapper.isJetpackApp && !buildConfigWrapper.isSiteCreationEnabled) {
4135
_navigationEvents.postValue(Event(LoginNavigationEvents.ShowNoJetpackSites))

WordPress/src/main/java/org/wordpress/android/ui/accounts/login/LoginEpilogueFragment.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
173173
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
174174
super.onActivityCreated(savedInstanceState);
175175
if (savedInstanceState == null) {
176-
mParentViewModel.checkAndSetVariantForMySiteDefaultTabExperiment();
177176
AnalyticsTracker.track(AnalyticsTracker.Stat.LOGIN_EPILOGUE_VIEWED);
178177
mUnifiedLoginTracker.track(Step.SUCCESS);
179178
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1380,7 +1380,6 @@ public void onAuthenticationChanged(OnAuthenticationChanged event) {
13801380
// We'll handle it in onAccountChanged so we know we have
13811381
// updated account info.
13821382
AppPrefs.setShouldTrackMagicLinkSignup(true);
1383-
mViewModel.checkAndSetVariantForMySiteDefaultTabExperiment();
13841383
mDispatcher.dispatch(AccountActionBuilder.newFetchAccountAction());
13851384
if (mJetpackConnectSource != null) {
13861385
ActivityLauncher.continueJetpackConnect(this, mJetpackConnectSource, getSelectedSite());

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

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ class MySiteViewModel @Inject constructor(
164164
private val quickStartTracker: QuickStartTracker,
165165
private val dispatcher: Dispatcher
166166
) : ScopedViewModel(mainDispatcher) {
167-
private var isDefaultABExperimentTabSet: Boolean = false
167+
private var isDefaultTabSet: Boolean = false
168168
private val _onSnackbarMessage = MutableLiveData<Event<SnackbarMessageHolder>>()
169169
private val _onTechInputDialogShown = MutableLiveData<Event<TextInputDialogModel>>()
170170
private val _onBasicDialogShown = MutableLiveData<Event<SiteDialogModel>>()
@@ -209,9 +209,10 @@ class MySiteViewModel @Inject constructor(
209209
listOf(MySiteTabType.ALL)
210210
}
211211

212-
private val defaultABExperimentTab: MySiteTabType
212+
private val defaultTab: MySiteTabType
213213
get() = if (isMySiteTabsEnabled) {
214-
if (appPrefsWrapper.getMySiteInitialScreen() == MySiteTabType.SITE_MENU.label) {
214+
if (appPrefsWrapper.getMySiteInitialScreen(buildConfigWrapper.isJetpackApp) ==
215+
MySiteTabType.SITE_MENU.label) {
215216
MySiteTabType.SITE_MENU
216217
} else {
217218
MySiteTabType.DASHBOARD
@@ -530,20 +531,20 @@ class MySiteViewModel @Inject constructor(
530531
_onNavigation.value = Event(SiteNavigationAction.OpenJetpackPoweredBottomSheet)
531532
}
532533

533-
private fun shouldEnableQuickLinkRibbonFocusPoints() = defaultABExperimentTab == MySiteTabType.DASHBOARD
534+
private fun shouldEnableQuickLinkRibbonFocusPoints() = defaultTab == MySiteTabType.DASHBOARD
534535

535-
private fun shouldEnableSiteItemsFocusPoints() = defaultABExperimentTab != MySiteTabType.DASHBOARD
536+
private fun shouldEnableSiteItemsFocusPoints() = defaultTab != MySiteTabType.DASHBOARD
536537

537538
private fun getCardTypeExclusionFiltersForTab(tabType: MySiteTabType) = when (tabType) {
538539
MySiteTabType.SITE_MENU -> mutableListOf<Type>().apply {
539540
add(Type.DASHBOARD_CARDS)
540-
if (defaultABExperimentTab == MySiteTabType.DASHBOARD) {
541+
if (defaultTab == MySiteTabType.DASHBOARD) {
541542
add(Type.QUICK_START_CARD)
542543
}
543544
add(Type.QUICK_LINK_RIBBON)
544545
}
545546
MySiteTabType.DASHBOARD -> mutableListOf<Type>().apply {
546-
if (defaultABExperimentTab == MySiteTabType.SITE_MENU) {
547+
if (defaultTab == MySiteTabType.SITE_MENU) {
547548
add(Type.QUICK_START_CARD)
548549
}
549550
add(Type.DOMAIN_REGISTRATION_CARD)
@@ -553,8 +554,8 @@ class MySiteViewModel @Inject constructor(
553554
}
554555

555556
private fun shouldIncludeDynamicCards(tabType: MySiteTabType) = when (tabType) {
556-
MySiteTabType.SITE_MENU -> defaultABExperimentTab != MySiteTabType.DASHBOARD
557-
MySiteTabType.DASHBOARD -> defaultABExperimentTab != MySiteTabType.SITE_MENU
557+
MySiteTabType.SITE_MENU -> defaultTab != MySiteTabType.DASHBOARD
558+
MySiteTabType.DASHBOARD -> defaultTab != MySiteTabType.SITE_MENU
558559
MySiteTabType.ALL -> true
559560
}
560561

@@ -720,7 +721,7 @@ class MySiteViewModel @Inject constructor(
720721

721722
private fun onQuickStartTaskTypeItemClick(type: QuickStartTaskType) {
722723
clearActiveQuickStartTask()
723-
if (defaultABExperimentTab == MySiteTabType.DASHBOARD) {
724+
if (defaultTab == MySiteTabType.DASHBOARD) {
724725
cardsTracker.trackQuickStartCardItemClicked(type)
725726
} else {
726727
quickStartTracker.track(Stat.QUICK_START_TAPPED, mapOf(TYPE to type.toString()))
@@ -1074,7 +1075,7 @@ class MySiteViewModel @Inject constructor(
10741075
}
10751076

10761077
fun onCreateSiteResult() {
1077-
isDefaultABExperimentTabSet = false
1078+
isDefaultTabSet = false
10781079
selectDefaultTabIfNeeded()
10791080
}
10801081

@@ -1269,9 +1270,9 @@ class MySiteViewModel @Inject constructor(
12691270
@Suppress("NestedBlockDepth")
12701271
private fun selectDefaultTabIfNeeded() {
12711272
if (!isMySiteTabsEnabled) return
1272-
val index = orderedTabTypes.indexOf(defaultABExperimentTab)
1273+
val index = orderedTabTypes.indexOf(defaultTab)
12731274
if (index != -1) {
1274-
if (isDefaultABExperimentTabSet) {
1275+
if (isDefaultTabSet) {
12751276
// This logic checks if the current default tab is the same as the tab
12761277
// set as initial screen, if yes then return
12771278
_selectTab.value?.let { tab ->
@@ -1281,7 +1282,7 @@ class MySiteViewModel @Inject constructor(
12811282
}
12821283
quickStartRepository.quickStartTaskOriginTab = orderedTabTypes[index]
12831284
_selectTab.postValue(Event(TabNavigation(index, smoothAnimation = false)))
1284-
isDefaultABExperimentTabSet = true
1285+
isDefaultTabSet = true
12851286
}
12861287
}
12871288

@@ -1290,7 +1291,7 @@ class MySiteViewModel @Inject constructor(
12901291
.forEach { domainRegistrationCardShownTracker.trackShown(it.type) }
12911292
siteSelected.cardAndItems.filterIsInstance<DashboardCards>().forEach { cardsTracker.trackShown(it) }
12921293
siteSelected.cardAndItems.filterIsInstance<QuickStartCard>()
1293-
.firstOrNull()?.let { quickStartTracker.trackShown(it.type, defaultABExperimentTab) }
1294+
.firstOrNull()?.let { quickStartTracker.trackShown(it.type, defaultTab) }
12941295
siteSelected.dashboardCardsAndItems.filterIsInstance<QuickStartCard>()
12951296
.firstOrNull()?.let { cardsTracker.trackQuickStartCardShown(quickStartRepository.quickStartType) }
12961297
}

0 commit comments

Comments
 (0)