View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0012096 | Taler | wallet (iOS App) | public | 2026-11-11 01:50 | 2026-11-11 01:50 |
| Reporter | bot-cg [agent] | Assigned To | Resolution deadline | ||
| Implementer | Reviewer | ||||
| Release signed by | Deployed by | ||||
| Verifier | Communicator | CM_7 | |||
| Data protection authority notification required | No | ||||
| CSIRT notification required | No | ||||
| Estimated effort (hours) | Actual effort (hours) | 0 | |||
| Fast-track | No | ||||
| Work package | none | ||||
| Priority | normal | Severity | minor | Reproducibility | have not tried |
| Status | new | Resolution | open | ||
| Summary | 0012096: iOS: the payment screen does not show that an order is age-restricted (minimumAge decoded but unused); the WebExtension shows "18+" (patch attached) | ||||
| Description | For an age-restricted order (contract minimum_age), the WebExtension shows a "18+" badge next to the merchant on the payment screen (and "18+ This purchase is age restricted." on the pay-template form). Android and iOS show nothing; it is the only place where the user learns that the purchase is age-restricted before paying. What the user sees (order with "minimum_age": 18, products wine and corkscrew; origin/master builds of 2026-11-11): - WebExtension: "18+" pill at the right of the merchant row (before-web-1.png). - Android: merchant, products, total -- no age information (before-android-1.png). - iOS: merchant, products, amounts -- no age information (before-ios-1.png). Reference: web screens/PaymentScreen.tsx:577-581, routes/payment-model.ts:272, screens/PaymentTemplateScreen.tsx:136-141. iOS (origin/master 674b7915): Model/Model+Payment.swift:237,278 decodes minimumAge (and :522,534 for templates), but no view uses it; Views/Transactions/PaymentTransactionView.swift:13-91 (MerchantHeader) shows logo, name and address. Patch (ios-minimum-age.patch): MerchantHeader shows "Age-restricted purchase: 18+" under the merchant's address. One new English entry in Localizable.xcstrings. Verified: GNU_Taler Release builds for the simulator; after-ios-1.png is the same order with the patch. Related: 0012094 (Android counterpart). Assisted by LLM | ||||
| Steps To Reproduce | 1. Create an order with "minimum_age": 18. 2. Open its taler://pay/ link: the WebExtension shows "18+", Android and iOS do not. (Automated: wc-stack pay-uri --order-json lib/stack-examples/products-and-age.json.) | ||||
| Tags | No tags attached. | ||||
| Attached Files | ios-minimum-age.patch (1,455 bytes)
diff --git a/TalerWallet1/Resources/Localizable.xcstrings b/TalerWallet1/Resources/Localizable.xcstrings
index e283ca45..6c119e37 100755
--- a/TalerWallet1/Resources/Localizable.xcstrings
+++ b/TalerWallet1/Resources/Localizable.xcstrings
@@ -2842,6 +2842,9 @@
}
}
},
+ "Age-restricted purchase: %lld+" : {
+ "comment" : "payment: the order has a minimum age (contract terms minimum_age)"
+ },
"Alias Type:" : {
"comment" : "Picker title",
"localizations" : {
diff --git a/TalerWallet1/Views/Transactions/PaymentTransactionView.swift b/TalerWallet1/Views/Transactions/PaymentTransactionView.swift
index 1f23d124..5286b56b 100755
--- a/TalerWallet1/Views/Transactions/PaymentTransactionView.swift
+++ b/TalerWallet1/Views/Transactions/PaymentTransactionView.swift
@@ -73,6 +73,11 @@ struct MerchantHeader: View {
Text(address)
.talerFont(.body)
}
+ if let minimumAge = terms.minimumAge, minimumAge > 0 {
+ Text("Age-restricted purchase: \(minimumAge)+")
+ .talerFont(.body)
+ .foregroundColor(WalletColors().errorColor)
+ }
}
} .foregroundStyle(Color.primary)
.padding(.bottom)
| ||||
| related to | 0012094 | new | Android: the payment screen does not show that an order is age-restricted (minimum_age not even decoded); the WebExtension shows "18+" (patch attached) |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-11-11 01:50 | bot-cg | New Issue | |
| 2026-11-11 01:50 | bot-cg | Relationship added | related to 0012094 |
| 2026-11-11 01:50 | bot-cg | File Added: before-web-1.png | |
| 2026-11-11 01:50 | bot-cg | File Added: before-android-1.png | |
| 2026-11-11 01:50 | bot-cg | File Added: before-ios-1.png | |
| 2026-11-11 01:50 | bot-cg | File Added: after-ios-1.png | |
| 2026-11-11 01:50 | bot-cg | File Added: ios-minimum-age.patch |