feat: implement NIP-A3 payment targets (kind 10133)
- Fix PaymentTargetTag.parse() missing tag.has(2) bounds check - Add paymentTargets() method to PaymentTargetsEvent to read tags - Add savePaymentTargets() and flow StateFlow to NipA3PaymentTargetsState - Add savePaymentTargets() to Account for publishing kind 10133 events - Create PaymentTargetsViewModel and PaymentTargetsScreen for settings UI - Add EditPaymentTargets route and navigation entry - Add Payment Targets row in AllSettingsScreen (wallet icon) - Display other users' payment targets on their profile page - Fetch kind 10133 when loading user profiles via UserProfileListKinds - Add string resources for payment targets UI https://claude.ai/code/session_018G4g1cChqjeNEM5TztD3FE
This commit is contained in:
+2
-3
@@ -35,11 +35,10 @@ class PaymentTargetTag {
|
||||
ensure(tag.has(1)) { return null }
|
||||
ensure(tag[0] == TAG_NAME) { return null }
|
||||
ensure(tag[1].isNotEmpty()) { return null }
|
||||
ensure(tag.has(2)) { return null }
|
||||
ensure(tag[2].isNotEmpty()) { return null }
|
||||
|
||||
val paymentTarget = PaymentTarget(tag[1], tag[2])
|
||||
|
||||
return paymentTarget
|
||||
return PaymentTarget(tag[1], tag[2])
|
||||
}
|
||||
|
||||
fun assemble(paymentTarget: PaymentTarget) = arrayOf(TAG_NAME, paymentTarget.type, paymentTarget.authority)
|
||||
|
||||
+2
@@ -34,6 +34,8 @@ class PaymentTargetsEvent(
|
||||
content: String,
|
||||
sig: HexKey,
|
||||
) : BaseReplaceableEvent(id, pubKey, createdAt, KIND, tags, content, sig) {
|
||||
fun paymentTargets(): List<PaymentTarget> = tags.mapNotNull { PaymentTargetTag.parse(it) }
|
||||
|
||||
companion object {
|
||||
const val KIND = 10133
|
||||
|
||||
|
||||
Reference in New Issue
Block a user