aboutsummaryrefslogtreecommitdiffstats
path: root/src/features/names.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-08-02 18:43:56 -0700
committerAdam Soltys <[email protected]>2026-08-02 18:43:56 -0700
commit375bec5f2ee22b1f69bb9f4a963efb12a68aef05 (patch)
tree3b8f3fe0c9c78a82996ad08375760c7281111fcb /src/features/names.js
parent8da44392be513929802a5f4329b29bfa125aaa04 (diff)
downloadcoinosv3-375bec5f2ee22b1f69bb9f4a963efb12a68aef05.tar.gz
coinosv3-375bec5f2ee22b1f69bb9f4a963efb12a68aef05.zip
Profiles: view pages, editable own kind 0, zap recipients in history
Tapping any avatar or author name (chat rooms, DM threads, the chat home) opens a profile page: avatar, name, nip05, lightning address, about, npub, with Message and Pay actions (Pay runs the npub payment cascade). Your own profile — reachable from your avatar on the chat home — gets an editor for name, about, picture, and lightning address (prefilled with your coinos address); saving merges over the newest published kind 0 so fields we don't understand survive the round trip. Zaps now remember who they went to: the ark feature keys the recipient by what the movement already records (destination address or invoice) and history rows wear a clickable avatar chip that opens the profile. The messages feature exposes showProfile/profileChip seams so any feature can do the same. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Wvj4aoeMZwA7VUGdJP9Swi
Diffstat (limited to 'src/features/names.js')
-rw-r--r--src/features/names.js2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/features/names.js b/src/features/names.js
index 54f15f7..d6acc6a 100644
--- a/src/features/names.js
+++ b/src/features/names.js
@@ -308,6 +308,8 @@ export function namesFeature(ctx) {
id: 'names',
init() { checked = false; lastError = null; refresh(); },
namesAdoptIdentity(signer, npub) { return adoptIdentity(signer, npub); },
+ // the claimed payment address, for anyone prefilling a lightning address
+ namesAddress() { const st = load(); return st.name ? `${st.name}@${st.domain || DOMAIN}` : null; },
stop() { clearTimeout(retryTimer); clearTimeout(deadline); deadline = null; },
receiveModes() {
if (!available()) return [];