Skip to content
This repository was archived by the owner on Oct 17, 2025. It is now read-only.

Commit 83c9bd8

Browse files
committed
refactor(inapp): standardize naming
1 parent 8f1bcd3 commit 83c9bd8

21 files changed

+206
-134
lines changed

Example/src/main/java/dev/hyo/martie/screens/AvailablePurchasesScreen.kt

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,12 @@ fun AvailablePurchasesScreen(
7777
val restored = iapStore.restorePurchases()
7878
iapStore.postStatusMessage(
7979
message = "Restored ${restored.size} purchases",
80-
status = PurchaseResultStatus.SUCCESS
80+
status = PurchaseResultStatus.Success
8181
)
8282
} catch (e: Exception) {
8383
iapStore.postStatusMessage(
8484
message = e.message ?: "Restore failed",
85-
status = PurchaseResultStatus.ERROR
85+
status = PurchaseResultStatus.Error
8686
)
8787
}
8888
}
@@ -195,7 +195,7 @@ fun AvailablePurchasesScreen(
195195
// Check for unfinished transactions (purchases that need acknowledgment/consumption)
196196
val unfinishedPurchases = purchases.filter { purchase ->
197197
// TODO: In real implementation, check if purchase needs acknowledgment/consumption
198-
// This would typically check: purchase.purchaseState == PURCHASED && !purchase.isAcknowledged
198+
// This would typically check: purchase.purchaseState == PurchaseState.Purchased && !purchase.isAcknowledged
199199
// For demo purposes, let's assume some consumable purchases might need finishing
200200
(purchase.productId.contains("consumable", ignoreCase = true) ||
201201
purchase.productId.contains("bulb", ignoreCase = true)) &&
@@ -218,21 +218,21 @@ fun AvailablePurchasesScreen(
218218
if (ok) {
219219
iapStore.postStatusMessage(
220220
message = "Transaction finished successfully",
221-
status = PurchaseResultStatus.SUCCESS,
221+
status = PurchaseResultStatus.Success,
222222
productId = purchase.productId
223223
)
224224
iapStore.getAvailablePurchases()
225225
} else {
226226
iapStore.postStatusMessage(
227227
message = "Failed to finish transaction",
228-
status = PurchaseResultStatus.ERROR,
228+
status = PurchaseResultStatus.Error,
229229
productId = purchase.productId
230230
)
231231
}
232232
} catch (e: Exception) {
233233
iapStore.postStatusMessage(
234234
message = e.message ?: "Failed to finish transaction",
235-
status = PurchaseResultStatus.ERROR,
235+
status = PurchaseResultStatus.Error,
236236
productId = purchase.productId
237237
)
238238
}
@@ -304,7 +304,7 @@ fun AvailablePurchasesScreen(
304304
items(nonConsumables) { purchase ->
305305
PurchaseItemCard(
306306
purchase = purchase,
307-
type = PurchaseType.NON_CONSUMABLE,
307+
type = PurchaseType.NonConsumable,
308308
onClick = { selectedPurchase = purchase }
309309
)
310310
}
@@ -319,7 +319,7 @@ fun AvailablePurchasesScreen(
319319
items(consumables) { purchase ->
320320
PurchaseItemCard(
321321
purchase = purchase,
322-
type = PurchaseType.CONSUMABLE,
322+
type = PurchaseType.Consumable,
323323
onClick = { selectedPurchase = purchase }
324324
)
325325
}
@@ -412,12 +412,12 @@ fun AvailablePurchasesScreen(
412412
val restored = iapStore.restorePurchases()
413413
iapStore.postStatusMessage(
414414
message = "Restored ${restored.size} purchases",
415-
status = PurchaseResultStatus.SUCCESS
415+
status = PurchaseResultStatus.Success
416416
)
417417
} catch (e: Exception) {
418418
iapStore.postStatusMessage(
419419
message = e.message ?: "Restore failed",
420-
status = PurchaseResultStatus.ERROR
420+
status = PurchaseResultStatus.Error
421421
)
422422
}
423423
}
@@ -444,9 +444,9 @@ fun AvailablePurchasesScreen(
444444
}
445445

446446
enum class PurchaseType {
447-
CONSUMABLE,
448-
NON_CONSUMABLE,
449-
SUBSCRIPTION
447+
Consumable,
448+
NonConsumable,
449+
Subscription,
450450
}
451451

452452
@Composable
@@ -456,17 +456,17 @@ fun PurchaseItemCard(
456456
onClick: () -> Unit
457457
) {
458458
val (backgroundColor, iconColor, icon) = when (type) {
459-
PurchaseType.SUBSCRIPTION -> Triple(
459+
PurchaseType.Subscription -> Triple(
460460
AppColors.secondary.copy(alpha = 0.1f),
461461
AppColors.secondary,
462462
Icons.Default.Autorenew
463463
)
464-
PurchaseType.NON_CONSUMABLE -> Triple(
464+
PurchaseType.NonConsumable -> Triple(
465465
AppColors.success.copy(alpha = 0.1f),
466466
AppColors.success,
467467
Icons.Default.CheckCircle
468468
)
469-
PurchaseType.CONSUMABLE -> Triple(
469+
PurchaseType.Consumable -> Triple(
470470
AppColors.warning.copy(alpha = 0.1f),
471471
AppColors.warning,
472472
Icons.Default.Schedule

Example/src/main/java/dev/hyo/martie/screens/OfferCodeScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.*
55
import androidx.compose.foundation.shape.RoundedCornerShape
66
import androidx.compose.material.icons.Icons
77
import androidx.compose.material.icons.automirrored.filled.ArrowBack
8+
import androidx.compose.material.icons.automirrored.filled.HelpOutline
89
import androidx.compose.material.icons.filled.*
910
import androidx.compose.material3.*
1011
import androidx.compose.runtime.*
@@ -221,7 +222,7 @@ fun OfferCodeScreen(
221222
horizontalArrangement = Arrangement.spacedBy(8.dp)
222223
) {
223224
Icon(
224-
Icons.Default.HelpOutline,
225+
Icons.AutoMirrored.Filled.HelpOutline,
225226
contentDescription = null,
226227
tint = AppColors.primary
227228
)

Example/src/main/java/dev/hyo/martie/screens/PurchaseFlowScreen.kt

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ fun PurchaseFlowScreen(
6565
iapStore.setActivity(activity)
6666
iapStore.fetchProducts(
6767
skus = IapConstants.INAPP_SKUS,
68-
type = ProductRequest.ProductRequestType.INAPP
68+
type = ProductRequest.ProductRequestType.InApp
6969
)
7070
iapStore.getAvailablePurchases()
7171
}
@@ -98,7 +98,7 @@ fun PurchaseFlowScreen(
9898
iapStore.setActivity(activity)
9999
iapStore.fetchProducts(
100100
skus = IapConstants.INAPP_SKUS,
101-
type = ProductRequest.ProductRequestType.INAPP
101+
type = ProductRequest.ProductRequestType.InApp
102102
)
103103
} catch (_: Exception) { }
104104
}
@@ -187,7 +187,7 @@ fun PurchaseFlowScreen(
187187
status = result.status,
188188
onDismiss = { iapStore.clearStatusMessage() }
189189
)
190-
if (result.status == PurchaseResultStatus.SUCCESS) {
190+
if (result.status == PurchaseResultStatus.Success) {
191191
Row(
192192
modifier = Modifier
193193
.fillMaxWidth()
@@ -226,8 +226,8 @@ fun PurchaseFlowScreen(
226226
isPurchasing = status.isPurchasing(product.id),
227227
onPurchase = {
228228
scope.launch {
229-
val reqType = if (product.type == OpenIapProduct.ProductType.SUBS)
230-
ProductRequest.ProductRequestType.SUBS else ProductRequest.ProductRequestType.INAPP
229+
val reqType = if (product.type == OpenIapProduct.ProductType.Subs)
230+
ProductRequest.ProductRequestType.Subs else ProductRequest.ProductRequestType.InApp
231231
iapStore.setActivity(activity)
232232
iapStore.requestPurchase(
233233
params = RequestPurchaseParams(skus = listOf(product.id)),
@@ -288,12 +288,12 @@ fun PurchaseFlowScreen(
288288
val restored = iapStore.restorePurchases()
289289
iapStore.postStatusMessage(
290290
message = "Restored ${restored.size} purchases",
291-
status = PurchaseResultStatus.SUCCESS
291+
status = PurchaseResultStatus.Success
292292
)
293293
} catch (e: Exception) {
294294
iapStore.postStatusMessage(
295295
message = e.message ?: "Restore failed",
296-
status = PurchaseResultStatus.ERROR
296+
status = PurchaseResultStatus.Error
297297
)
298298
}
299299
}
@@ -312,7 +312,7 @@ fun PurchaseFlowScreen(
312312
try {
313313
iapStore.fetchProducts(
314314
skus = IapConstants.INAPP_SKUS,
315-
type = ProductRequest.ProductRequestType.INAPP
315+
type = ProductRequest.ProductRequestType.InApp
316316
)
317317
} catch (_: Exception) { }
318318
}
@@ -346,15 +346,15 @@ fun PurchaseFlowScreen(
346346
if (!valid) {
347347
iapStore.postStatusMessage(
348348
message = "Receipt validation failed",
349-
status = PurchaseResultStatus.ERROR,
349+
status = PurchaseResultStatus.Error,
350350
productId = purchase.productId
351351
)
352352
return@LaunchedEffect
353353
}
354354
// 2) Determine consumable vs non-consumable
355355
val product = products.find { it.id == purchase.productId }
356356
val isConsumable = product?.let {
357-
it.type == OpenIapProduct.ProductType.INAPP &&
357+
it.type == OpenIapProduct.ProductType.InApp &&
358358
(it.id.contains("consumable", true) || it.id.contains("bulb", true))
359359
} == true
360360

@@ -372,22 +372,22 @@ fun PurchaseFlowScreen(
372372
if (!ok) {
373373
iapStore.postStatusMessage(
374374
message = "finishTransaction failed",
375-
status = PurchaseResultStatus.ERROR,
375+
status = PurchaseResultStatus.Error,
376376
productId = purchase.productId
377377
)
378378
} else {
379379
iapStore.loadPurchases()
380380
iapStore.postStatusMessage(
381381
message = "Purchase finished successfully",
382-
status = PurchaseResultStatus.SUCCESS,
382+
status = PurchaseResultStatus.Success,
383383
productId = purchase.productId
384384
)
385385
selectedProduct = null
386386
}
387387
} catch (e: Exception) {
388388
iapStore.postStatusMessage(
389389
message = e.message ?: "Failed to finish purchase",
390-
status = PurchaseResultStatus.ERROR,
390+
status = PurchaseResultStatus.Error,
391391
productId = purchase.productId
392392
)
393393
}
@@ -400,8 +400,8 @@ fun PurchaseFlowScreen(
400400
onDismiss = { selectedProduct = null },
401401
onPurchase = {
402402
uiScope.launch {
403-
val reqType = if (product.type == OpenIapProduct.ProductType.SUBS)
404-
ProductRequest.ProductRequestType.SUBS else ProductRequest.ProductRequestType.INAPP
403+
val reqType = if (product.type == OpenIapProduct.ProductType.Subs)
404+
ProductRequest.ProductRequestType.Subs else ProductRequest.ProductRequestType.InApp
405405
iapStore.setActivity(activity)
406406
iapStore.requestPurchase(
407407
params = RequestPurchaseParams(skus = listOf(product.id)),

Example/src/main/java/dev/hyo/martie/screens/SubscriptionFlowScreen.kt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ fun SubscriptionFlowScreen(
121121
println("SubscriptionFlow: Loading subscription products: ${IapConstants.SUBS_SKUS}")
122122
iapStore.fetchProducts(
123123
skus = IapConstants.SUBS_SKUS,
124-
type = ProductRequest.ProductRequestType.SUBS
124+
type = ProductRequest.ProductRequestType.Subs
125125
)
126126
iapStore.getAvailablePurchases()
127127
}
@@ -155,7 +155,7 @@ fun SubscriptionFlowScreen(
155155
iapStore.setActivity(activity)
156156
iapStore.fetchProducts(
157157
skus = IapConstants.SUBS_SKUS,
158-
type = ProductRequest.ProductRequestType.SUBS
158+
type = ProductRequest.ProductRequestType.Subs
159159
)
160160
} catch (_: Exception) { }
161161
}
@@ -285,21 +285,21 @@ fun SubscriptionFlowScreen(
285285
ProductCard(
286286
product = product,
287287
isPurchasing = status.isPurchasing(product.id),
288-
isSubscribed = purchases.any { it.productId == product.id && it.purchaseState == OpenIapPurchase.PurchaseState.PURCHASED },
288+
isSubscribed = purchases.any { it.productId == product.id && it.purchaseState == OpenIapPurchase.PurchaseState.Purchased },
289289
onPurchase = {
290290
// Prevent re-purchase if already subscribed
291-
val alreadySubscribed = purchases.any { it.productId == product.id && it.purchaseState == OpenIapPurchase.PurchaseState.PURCHASED }
291+
val alreadySubscribed = purchases.any { it.productId == product.id && it.purchaseState == OpenIapPurchase.PurchaseState.Purchased }
292292
if (alreadySubscribed) {
293293
iapStore.postStatusMessage(
294294
message = "Already subscribed to ${product.id}",
295-
status = PurchaseResultStatus.INFO,
295+
status = PurchaseResultStatus.Info,
296296
productId = product.id
297297
)
298298
return@ProductCard
299299
}
300300
scope.launch {
301-
val reqType = if (product.type == OpenIapProduct.ProductType.SUBS)
302-
ProductRequest.ProductRequestType.SUBS else ProductRequest.ProductRequestType.INAPP
301+
val reqType = if (product.type == OpenIapProduct.ProductType.Subs)
302+
ProductRequest.ProductRequestType.Subs else ProductRequest.ProductRequestType.InApp
303303
iapStore.setActivity(activity)
304304
iapStore.requestPurchase(
305305
params = RequestPurchaseParams(skus = listOf(product.id)),
@@ -385,15 +385,15 @@ fun SubscriptionFlowScreen(
385385
if (!valid) {
386386
iapStore.postStatusMessage(
387387
message = "Receipt validation failed",
388-
status = PurchaseResultStatus.ERROR,
388+
status = PurchaseResultStatus.Error,
389389
productId = purchase.productId
390390
)
391391
return@LaunchedEffect
392392
}
393393
// 2) Determine consumable vs non-consumable (subs -> false)
394394
val product = products.find { it.id == purchase.productId }
395395
val isConsumable = product?.let {
396-
it.type == OpenIapProduct.ProductType.INAPP &&
396+
it.type == OpenIapProduct.ProductType.InApp &&
397397
(it.id.contains("consumable", true) || it.id.contains("bulb", true))
398398
} == true
399399

@@ -411,7 +411,7 @@ fun SubscriptionFlowScreen(
411411
if (!ok) {
412412
iapStore.postStatusMessage(
413413
message = "finishTransaction failed",
414-
status = PurchaseResultStatus.ERROR,
414+
status = PurchaseResultStatus.Error,
415415
productId = purchase.productId
416416
)
417417
} else {
@@ -420,7 +420,7 @@ fun SubscriptionFlowScreen(
420420
} catch (e: Exception) {
421421
iapStore.postStatusMessage(
422422
message = e.message ?: "Failed to finish purchase",
423-
status = PurchaseResultStatus.ERROR,
423+
status = PurchaseResultStatus.Error,
424424
productId = purchase.productId
425425
)
426426
}
@@ -433,8 +433,8 @@ fun SubscriptionFlowScreen(
433433
onDismiss = { selectedProduct = null },
434434
onPurchase = {
435435
uiScope.launch {
436-
val reqType = if (product.type == OpenIapProduct.ProductType.SUBS)
437-
ProductRequest.ProductRequestType.SUBS else ProductRequest.ProductRequestType.INAPP
436+
val reqType = if (product.type == OpenIapProduct.ProductType.Subs)
437+
ProductRequest.ProductRequestType.Subs else ProductRequest.ProductRequestType.InApp
438438
iapStore.setActivity(activity)
439439
iapStore.requestPurchase(
440440
params = RequestPurchaseParams(skus = listOf(product.id)),

0 commit comments

Comments
 (0)