Skip to content

Contacts status - #379

Draft
defnax wants to merge 4 commits into
RetroShare:masterfrom
defnax:contacts-status
Draft

Contacts status#379
defnax wants to merge 4 commits into
RetroShare:masterfrom
defnax:contacts-status

Conversation

@defnax

@defnax defnax commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Implemented GXS contact presence with getContactsStatus....

Included:

  • away, busy, and online contact states
  • Per-identity custom-state strings
  • Contact-only exchange over authenticated GXS tunnels
  • Persistent own status/custom state
  • Transient remote-contact status
  • CONTACT_STATUS_CHANGED identity events
  • JSON API annotations

the GXS contact status is restricted per sender’s local contact list.
Current protections:

  • Status is sent only when isARegularContact(contactId) returns true.
  • Non-contact tunnels do not receive the new RS_CHAT_FLAG_GXS_CONTACT_STATUS packet.
  • Incoming status is stored only if the authenticated sender is in the receiver’s regular contact list.
  • Exchange occurs through the encrypted/authenticated GXS distant-chat tunnel.
  • getContactsStatusList() returns entries only from mContacts.
  • Each side decides independently: if Alice considers Bob a contact but Bob does not consider Alice one, Alice may advertise to Bob, but Bob will not advertise to Alice.
image

defnax added 4 commits August 20, 2026 21:30
- Setting Online, Away, Busy, or custom state automatically queues an encrypted background message.
- No distant-chat window or tunnel is required.
- Messages are sent only to regular GXS contacts.
- Offline contacts receive the queued status when GXS transport reaches them.
- Received status is stored persistently and remains the last-known status even when the contact disconnects.
- It sends only after a change, plus once after RetroShare starts—no frequent heartbeat.
- Contact presence now uses its own GXS Transport subservice: P3_CONTACT_STATUS.
@defnax
defnax marked this pull request as draft August 30, 2026 22:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant