From 8f61ab1ba21ad23f661062ff106765736c871e5e Mon Sep 17 00:00:00 2001 From: Magda Wojtowicz Date: Thu, 5 Sep 2024 16:07:52 +0200 Subject: [PATCH 1/4] added emitting an event when the cart is cleared --- .../android/demo/shop/ui/cart/Cart.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/Cart.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/Cart.kt index 88f01e181..562dc7403 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/Cart.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/cart/Cart.kt @@ -12,6 +12,7 @@ import io.opentelemetry.android.demo.shop.ui.products.ProductCard import androidx.compose.ui.Alignment import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext +import io.opentelemetry.android.demo.OtelDemoApplication import io.opentelemetry.android.demo.shop.clients.ProductCatalogClient import io.opentelemetry.android.demo.shop.clients.RecommendationService import io.opentelemetry.android.demo.shop.ui.products.RecommendedSection @@ -41,7 +42,7 @@ fun CartScreen( contentAlignment = Alignment.TopEnd ) { OutlinedButton( - onClick = { cartViewModel.clearCart() }, + onClick = { clearCart(cartViewModel) }, modifier = Modifier ) { Text("Empty Cart", color = Color.Red) @@ -90,3 +91,14 @@ fun CartScreen( } } } + +private fun clearCart(cartViewModel: CartViewModel) { + generateEmptiedCartEvent(cartViewModel) + cartViewModel.clearCart() +} + +private fun generateEmptiedCartEvent(cartViewModel: CartViewModel) { + val eventBuilder = OtelDemoApplication.eventBuilder("otel.demo.app", "cart.emptied") + eventBuilder.put("cart.total.value", cartViewModel.getTotalPrice()) + .emit() +} From 5c0d892cc264de12351e6934f72d3e9ed67e94e9 Mon Sep 17 00:00:00 2001 From: Magda Wojtowicz Date: Thu, 5 Sep 2024 16:10:49 +0200 Subject: [PATCH 2/4] created a InstrumentedAstronomyShopNavController delegate class --- .../android/demo/shop/ui/Navigation.kt | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt index 92849053f..b813e1377 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt @@ -29,9 +29,9 @@ object MainDestinations { @Composable fun rememberAstronomyShopNavController(navController: NavHostController = rememberNavController()) -: AstronomyShopNavController = remember(navController) + : InstrumentedAstronomyShopNavController = remember(navController) { - AstronomyShopNavController(navController) + InstrumentedAstronomyShopNavController(AstronomyShopNavController(navController)) } @Stable @@ -52,7 +52,28 @@ class AstronomyShopNavController( fun navigateToCheckoutInfo(){ navController.navigate(MainDestinations.CHECKOUT_INFO_ROUTE) } +} + +class InstrumentedAstronomyShopNavController( + private val delegate : AstronomyShopNavController +){ + val navController : NavHostController + get() = delegate.navController + + val currentRoute: String? + get() = delegate.currentRoute + + fun upPress() { + delegate.upPress() + } + + fun navigateToProductDetail(productId: String) { + delegate.navigateToProductDetail(productId) + } + fun navigateToCheckoutInfo(){ + delegate.navigateToCheckoutInfo() + } } @Composable From 955b3106deca281e3cb0aaf357e16dab1d95b96d Mon Sep 17 00:00:00 2001 From: Magda Wojtowicz Date: Thu, 5 Sep 2024 16:48:07 +0200 Subject: [PATCH 3/4] manually instrumented InstrumentedAstronomyShopNavController to emit some navigation events --- .../android/demo/shop/ui/Navigation.kt | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt index b813e1377..4e75e4ae8 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt @@ -12,6 +12,8 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController import androidx.compose.material3.* +import io.opentelemetry.android.demo.OtelDemoApplication +import io.opentelemetry.android.demo.shop.ui.cart.CartViewModel sealed class BottomNavItem(val route: String, val icon: ImageVector, val label: String) { @@ -57,7 +59,7 @@ class AstronomyShopNavController( class InstrumentedAstronomyShopNavController( private val delegate : AstronomyShopNavController ){ - val navController : NavHostController + val navController: NavHostController get() = delegate.navController val currentRoute: String? @@ -69,10 +71,26 @@ class InstrumentedAstronomyShopNavController( fun navigateToProductDetail(productId: String) { delegate.navigateToProductDetail(productId) + generateNavigationEvent( + eventName = "navigate.to.product.details", + payload = mapOf("product.id" to productId) + ) } - fun navigateToCheckoutInfo(){ + fun navigateToCheckoutInfo() { delegate.navigateToCheckoutInfo() + generateNavigationEvent( + eventName = "navigate.to.checkout.info", + payload = emptyMap() + ) + } + + private fun generateNavigationEvent(eventName: String, payload: Map) { + val eventBuilder = OtelDemoApplication.eventBuilder("otel.demo.app.navigation", eventName) + payload.forEach { (key, value) -> + eventBuilder.put(key, value) + } + eventBuilder.emit() } } From ef2c18285f7ccd426c60d22a7f4ea5f4ecb6e9e4 Mon Sep 17 00:00:00 2001 From: Magda Wojtowicz Date: Thu, 5 Sep 2024 16:49:19 +0200 Subject: [PATCH 4/4] unused import --- .../java/io/opentelemetry/android/demo/shop/ui/Navigation.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt index 4e75e4ae8..8cd4d6944 100644 --- a/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt +++ b/demo-app/src/main/java/io/opentelemetry/android/demo/shop/ui/Navigation.kt @@ -13,7 +13,6 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController import androidx.compose.material3.* import io.opentelemetry.android.demo.OtelDemoApplication -import io.opentelemetry.android.demo.shop.ui.cart.CartViewModel sealed class BottomNavItem(val route: String, val icon: ImageVector, val label: String) {