Skip to content

feat: Add recipient opt-in mechanism for incoming streams #151

Description

@Austinaminu2

Description

Currently, anyone can create a stream to any Stellar address without the recipient's consent. The recipient has no way to reject an unwanted stream. This can lead to:

  • Cluttered dashboards with unsolicited streams
  • Potential regulatory issues (receiving unsolicited tokens)
  • Poor UX when unknown senders create streams

Proposed Solution

Option A: Frontend-only (simpler)

  • Add a "Hide stream" feature so recipients can dismiss unwanted streams from their dashboard
  • Hidden streams stored in localStorage, can be un-hidden
  • No contract changes needed

Option B: Contract-level (more robust)

  • Add an accept_stream() function — stream starts unlocking only after recipient accepts
  • Unaccepted streams can be cancelled by the sender with full refund
  • Adds a pending status to streams

Recommend starting with Option A for immediate UX improvement, with Option B as a follow-up.

Acceptance Criteria (Option A)

  • "Hide" button on stream cards for received streams
  • Hidden streams don't appear in dashboard or counts
  • "Show hidden streams" toggle to view/un-hide
  • Hidden stream IDs persisted in localStorage
  • "Block sender" option to auto-hide future streams from an address

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions