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 add07b5e4..946fdab77 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 @@ -38,7 +38,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") @@ -53,7 +53,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() } @@ -66,12 +66,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: