diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorParentActivity.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorParentActivity.kt index c2118117baf2..9a9c52b4920b 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorParentActivity.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorParentActivity.kt @@ -28,15 +28,22 @@ import org.wordpress.android.ui.compose.components.MainTopAppBar import org.wordpress.android.ui.compose.components.NavigationIcons import org.wordpress.android.ui.compose.theme.AppTheme import org.wordpress.android.util.extensions.getSerializableExtraCompat +import javax.inject.Inject @AndroidEntryPoint class SiteMonitorParentActivity: AppCompatActivity() { + @Inject + lateinit var siteMonitorUtils: SiteMonitorUtils + private var savedStateSparseArray = SparseArray() private var currentSelectItemId = 0 @Suppress("DEPRECATION") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + + siteMonitorUtils.trackActivityLaunched() + if (savedInstanceState != null) { savedStateSparseArray = savedInstanceState.getSparseParcelableArray( SAVED_STATE_CONTAINER_KEY @@ -98,6 +105,8 @@ class SiteMonitorParentActivity: AppCompatActivity() { it.route == selectedTab } ?: initialItem(getInitialTab()) + siteMonitorUtils.trackTabLoaded(item.siteMonitorType) + SiteMonitorFragmentContainer( modifier = Modifier.fillMaxSize(), commit = getCommitFunction( diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorTabHeader.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorTabHeader.kt index 1bf493f7c49d..7a15059a31fc 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorTabHeader.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorTabHeader.kt @@ -1,9 +1,11 @@ package org.wordpress.android.ui.sitemonitor import androidx.compose.foundation.layout.Column -import androidx.compose.material3.MaterialTheme +import androidx.compose.material.MaterialTheme import androidx.compose.material3.Tab import androidx.compose.material3.TabRow +import androidx.compose.material3.TabRowDefaults +import androidx.compose.material3.TabRowDefaults.tabIndicatorOffset import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -11,9 +13,10 @@ import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.unit.sp +import androidx.compose.ui.unit.dp @Composable fun SiteMonitorTabHeader(navController: (String) -> Unit) { @@ -25,8 +28,16 @@ fun SiteMonitorTabHeader(navController: (String) -> Unit) { ) TabRow( selectedTabIndex = selectedTabIndex, - containerColor = MaterialTheme.colorScheme.surface, - contentColor = MaterialTheme.colorScheme.onSurface, + containerColor = MaterialTheme.colors.surface, + contentColor = MaterialTheme.colors.onSurface, + indicator = { tabPositions -> + // Customizing the indicator color and style + TabRowDefaults.Indicator( + Modifier.tabIndicatorOffset(tabPositions[selectedTabIndex]), + color = MaterialTheme.colors.onSurface, + height = 2.0.dp + ) + } ) { tabs.forEachIndexed { index, item -> Tab( @@ -34,7 +45,6 @@ fun SiteMonitorTabHeader(navController: (String) -> Unit) { Column (horizontalAlignment = Alignment.CenterHorizontally) { Text( text = stringResource(item.title), - fontSize = 12.sp, maxLines = 1, overflow = TextOverflow.Ellipsis ) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorTabViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorTabViewModel.kt index aaae3507f424..275c65087676 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorTabViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorTabViewModel.kt @@ -1,7 +1,6 @@ package org.wordpress.android.ui.sitemonitor import android.text.TextUtils -import android.util.Log import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.flow.MutableStateFlow @@ -32,7 +31,6 @@ class SiteMonitorTabViewModel @Inject constructor( val uiState: StateFlow = _uiState fun start(type: SiteMonitorType, urlTemplate: String, site: SiteModel) { - Log.i("Track", "TheViewModel start with $urlTemplate and $type") this.siteMonitorType = type this.urlTemplate = urlTemplate this.site = site @@ -106,7 +104,6 @@ class SiteMonitorTabViewModel @Inject constructor( } fun onUrlLoaded() { - siteMonitorUtils.trackTabLoaded(siteMonitorType) postUiState(SiteMonitorUiState.Loaded) } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorUiState.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorUiState.kt index 50bca3c0dec8..8b7dee5a31cc 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorUiState.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorUiState.kt @@ -51,8 +51,8 @@ data class SiteMonitorModel( val url: String, val addressToLoad: String ) -enum class SiteMonitorType { - METRICS, - PHP_LOGS, - WEB_SERVER_LOGS +enum class SiteMonitorType(val analyticsDescription: String) { + METRICS("metrics"), + PHP_LOGS("php_logs"), + WEB_SERVER_LOGS("server_logs") } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorUtils.kt b/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorUtils.kt index f4e7fe8c098d..a4b25ed2a1c7 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorUtils.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/sitemonitor/SiteMonitorUtils.kt @@ -1,6 +1,5 @@ package org.wordpress.android.ui.sitemonitor -import android.util.Log import org.wordpress.android.WordPress import org.wordpress.android.analytics.AnalyticsTracker import org.wordpress.android.ui.WPWebViewActivity @@ -26,22 +25,18 @@ class SiteMonitorUtils @Inject constructor( fun sanitizeSiteUrl(url: String?) = url?.replace(Regex(HTTP_PATTERN), "") ?: "" - fun urlToType(url: String): SiteMonitorType { - return when { - url.contains(PHP_LOGS_PATTERN) -> SiteMonitorType.PHP_LOGS - url.contains(WEB_SERVER_LOGS_PATTERN) -> SiteMonitorType.WEB_SERVER_LOGS - else -> SiteMonitorType.METRICS - } - } - fun trackTabLoaded(siteMonitorType: SiteMonitorType) { - // todo: need to set this up properly with track events - Log.i(javaClass.simpleName, "track TabLoaded with $siteMonitorType") + analyticsTrackerWrapper.track( + AnalyticsTracker.Stat.SITE_MONITORING_TAB_SHOWN, + mapOf( + TAB_TRACK_KEY to siteMonitorType.analyticsDescription + )) } companion object { const val HTTP_PATTERN = "(https?://)" const val PHP_LOGS_PATTERN = "/php" const val WEB_SERVER_LOGS_PATTERN = "/web" + const val TAB_TRACK_KEY = "tab" } } diff --git a/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java b/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java index ba65e2e228ea..4ecc68844c66 100644 --- a/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java +++ b/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java @@ -1103,6 +1103,7 @@ public enum Stat { DEEP_LINK_FAILED, SITE_MONITORING_SCREEN_SHOWN, OPENED_SITE_MONITORING, + SITE_MONITORING_TAB_SHOWN, } private static final List TRACKERS = new ArrayList<>(); diff --git a/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java b/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java index 6a83354fe74d..6bc51ec5bdbf 100644 --- a/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java +++ b/libs/analytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java @@ -2699,6 +2699,8 @@ public static String getEventNameForStat(AnalyticsTracker.Stat stat) { return "site_monitoring_screen_shown"; case OPENED_SITE_MONITORING: return "opened_site_monitoring"; + case SITE_MONITORING_TAB_SHOWN: + return "site_monitoring_tab_shown"; } return null; }