feat(clink): pay CLINK noffer offers from notes, profiles & wallet#360
Draft
dmnyc wants to merge 1 commit into
Draft
feat(clink): pay CLINK noffer offers from notes, profiles & wallet#360dmnyc wants to merge 1 commit into
dmnyc wants to merge 1 commit into
Conversation
…wallet Add CLINK Offers (noffer1…) payment support, matching the zap.cooking UX in wisp style. - Noffer: bech32 + TLV decoder, pricing types, isNofferString/stripNostrPrefix - NofferClient: kind-21001 NIP-44 RPC (publish request, await encrypted invoice response on the offer's relay), with code-3 "expired/moved" latest-retry - NofferPaySheet + NofferButton: shared "Pay offer" modal — pay via the active wallet, or fall back to a scannable bare noffer QR for an external wallet - Notes: ContentParser detects noffer tokens; RichContentView renders the card - Profiles: parse clink_offer/noffer/offer from kind-0; show a Pay-offer button on the profile header; add a CLINK offer field to the profile editor - Wallet: detect a pasted/scanned noffer in the Send sheet and open the pay flow - Tests: round-trip decoder coverage mirroring the CLINK spec TLV layout Spec: https://github.com/shocknet/CLINK/blob/main/specs/clink-offers.md Android port to follow after the iOS merge.
This was referenced Jun 11, 2026
Collaborator
Author
|
Changing to draft mode so this can deploy in Dark Wisp first. barrydeen/dark-wisp-android#25 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds CLINK Offers (
noffer1…) payment support so users can pay self-custodial Lightning offers advertised in notes, on profiles, and from the wallet — matching the established "scan to pay" UX in Wisp style.Noffer: bech32 + TLV decoder, pricing types (fixed / variable-range / spontaneous),isNofferString/stripNostrPrefix.NofferClient: kind-21001 NIP-44 RPC (publish request → await the encrypted invoice on the offer's relay → pay), with code-3 "expired/moved" latest-retry.NofferPaySheet+NofferButton: a shared "Pay offer" sheet that pays via the active wallet, or falls back to a scannable bare-nofferQR for an external CLINK-aware wallet. The inline card resolves the recipient's name itself so it reads consistently across feed and thread.ContentParserdetectsnoffertokens (incl.nostr:prefix);RichContentViewrenders the Pay-offer card.clink_offer/noffer/offerfrom kind-0 (tolerant read); Pay-offer button on the profile header; a CLINK offer field in the profile editor's Advanced section.nofferand opens the pay flow; the input placeholder now reads "Lightning address, invoice, or CLINK offer".Spec: https://github.com/shocknet/CLINK/blob/main/specs/clink-offers.md
Test plan
nofferopens the pay flowAndroid port to follow.