From 02c864460b7d3082f2df5400f31b7f6dbf298688 Mon Sep 17 00:00:00 2001 From: Daniel Kift Date: Wed, 5 Aug 2026 16:43:00 +0100 Subject: [PATCH 1/2] set max line length in detekt to 140 From 4681624c34a0d4978d2c0e5cb139a86a4a162bfc Mon Sep 17 00:00:00 2001 From: Daniel Kift Date: Fri, 7 Aug 2026 14:40:05 +0100 Subject: [PATCH 2/2] Enable specific exception lint rule Assisted-By: devx/e2f77bde-d08f-41c4-a14f-b50a215d784a --- .../androiddemo/cart/data/CartOperationException.kt | 3 +++ .../checkoutkit/androiddemo/cart/data/CartRepository.kt | 8 ++++---- .../androiddemo/common/client/StorefrontApiClient.kt | 2 +- .../androiddemo/common/client/StorefrontApiException.kt | 3 +++ .../checkoutkit/androiddemo/common/navigation/Screen.kt | 2 +- .../collection/data/ProductCollectionRepository.kt | 3 ++- .../products/product/data/ProductRepository.kt | 3 ++- .../samples/CheckoutKitAndroidDemo/detekt.config.yml | 2 +- 8 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/cart/data/CartOperationException.kt create mode 100644 platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/client/StorefrontApiException.kt diff --git a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/cart/data/CartOperationException.kt b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/cart/data/CartOperationException.kt new file mode 100644 index 000000000..64e7f01e6 --- /dev/null +++ b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/cart/data/CartOperationException.kt @@ -0,0 +1,3 @@ +package com.shopify.checkoutkit.androiddemo.cart.data + +class CartOperationException(message: String) : RuntimeException(message) diff --git a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/cart/data/CartRepository.kt b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/cart/data/CartRepository.kt index d6472a7d9..a49c25522 100644 --- a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/cart/data/CartRepository.kt +++ b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/cart/data/CartRepository.kt @@ -28,7 +28,7 @@ class CartRepository( if (cart == null) { val errors = cartCreate?.userErrors?.joinToString { "${it.field} - ${it.message}" } - throw RuntimeException("Failed to create cart, $errors") + throw CartOperationException("Failed to create cart, $errors") } Timber.i("Cart created with checkout URL") @@ -43,7 +43,7 @@ class CartRepository( val data = storefrontApiClient.cartLinesAdd(cartId = cartId.id, lines = listOf(line)) val cart = data.cartLinesAdd?.cart - ?: throw RuntimeException("Failed to add cart line") + ?: throw CartOperationException("Failed to add cart line") return cart.cartFragment.toLocal() } @@ -56,12 +56,12 @@ class CartRepository( ) val data = storefrontApiClient.cartLinesUpdate(cartId = cartId.id, lines = listOf(line)) val cart = data.cartLinesUpdate?.cart - ?: throw RuntimeException("Failed to modify cart") + ?: throw CartOperationException("Failed to modify cart") return cart.cartFragment.toLocal() } else { val data = storefrontApiClient.cartLinesRemove(cartId = cartId.id, lineIds = listOf(lineItemId.id)) val cart = data.cartLinesRemove?.cart - ?: throw RuntimeException("Failed to modify cart") + ?: throw CartOperationException("Failed to modify cart") return cart.cartFragment.toLocal() } } diff --git a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/client/StorefrontApiClient.kt b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/client/StorefrontApiClient.kt index 7c8ac8cec..62bd1f072 100644 --- a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/client/StorefrontApiClient.kt +++ b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/client/StorefrontApiClient.kt @@ -90,7 +90,7 @@ class StorefrontApiClient( ?.takeIf { errorMessages -> errorMessages.isNotBlank() } if (storefrontErrors != null) { - throw RuntimeException("Storefront API error: $storefrontErrors") + throw StorefrontApiException("Storefront API error: $storefrontErrors") } } diff --git a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/client/StorefrontApiException.kt b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/client/StorefrontApiException.kt new file mode 100644 index 000000000..050bdb6d9 --- /dev/null +++ b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/client/StorefrontApiException.kt @@ -0,0 +1,3 @@ +package com.shopify.checkoutkit.androiddemo.common.client + +class StorefrontApiException(message: String) : RuntimeException(message) diff --git a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/navigation/Screen.kt b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/navigation/Screen.kt index c8c54db23..c1436f6e5 100644 --- a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/navigation/Screen.kt +++ b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/common/navigation/Screen.kt @@ -48,7 +48,7 @@ sealed class Screen(val route: String) { Logs.route -> Logs Login.route -> Login Account.route -> Account - else -> throw RuntimeException("Unknown route") + else -> throw IllegalArgumentException("Unknown route: $route") } } } diff --git a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/products/collection/data/ProductCollectionRepository.kt b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/products/collection/data/ProductCollectionRepository.kt index 02064d5b9..1e37c7548 100644 --- a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/products/collection/data/ProductCollectionRepository.kt +++ b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/products/collection/data/ProductCollectionRepository.kt @@ -1,6 +1,7 @@ package com.shopify.checkoutkit.androiddemo.products.collection.data import com.shopify.checkoutkit.androiddemo.common.client.StorefrontApiClient +import com.shopify.checkoutkit.androiddemo.common.client.StorefrontApiException import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.last import kotlinx.coroutines.flow.map @@ -35,7 +36,7 @@ class ProductCollectionRepository( return client.fetchCollection(handle = collectionHandle, numProducts = numberOfProducts) .map { data -> val collection = data.collection - ?: throw RuntimeException("Failed to fetch collection") + ?: throw StorefrontApiException("Failed to fetch collection") collection.toLocal() } } diff --git a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/products/product/data/ProductRepository.kt b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/products/product/data/ProductRepository.kt index 919ab3aa1..63c3c5f32 100644 --- a/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/products/product/data/ProductRepository.kt +++ b/platforms/android/samples/CheckoutKitAndroidDemo/app/src/main/java/com/shopify/checkoutkit/androiddemo/products/product/data/ProductRepository.kt @@ -1,6 +1,7 @@ package com.shopify.checkoutkit.androiddemo.products.product.data import com.shopify.checkoutkit.androiddemo.common.client.StorefrontApiClient +import com.shopify.checkoutkit.androiddemo.common.client.StorefrontApiException import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.last import kotlinx.coroutines.flow.map @@ -17,7 +18,7 @@ class ProductRepository( return client.fetchProduct(productId = productId, numVariants = 20) .map { data -> val product = data.product - ?: throw RuntimeException("Failed to fetch product") + ?: throw StorefrontApiException("Failed to fetch product") val variants = product.variants.nodes.map { it.productVariantFragment.toLocal() } product.productFragment.toLocal(variants) } diff --git a/platforms/android/samples/CheckoutKitAndroidDemo/detekt.config.yml b/platforms/android/samples/CheckoutKitAndroidDemo/detekt.config.yml index 29331f9cb..b5ee94002 100644 --- a/platforms/android/samples/CheckoutKitAndroidDemo/detekt.config.yml +++ b/platforms/android/samples/CheckoutKitAndroidDemo/detekt.config.yml @@ -14,7 +14,7 @@ exceptions: TooGenericExceptionCaught: active: false TooGenericExceptionThrown: - active: false + active: true naming: FunctionNaming: