Skip to content

Federation: Flutter UI for joining and rendering remote-homed spaces #169

Description

@krazyjakee

Client-side follow-up to server federation (accordserver#38). Depends on #168 (SDK support).

Once the SDK can join a remote-homed space and parse origin/qualified IDs, the Flutter client needs UI to actually use federation. None exists today.

Task

  • Join entry point: a way to join a space homed on another server — via daccord:// invite/connect deep links (ServerUri.parseDeepLink() in lib/main.dart) and/or an explicit "join remote space" action, wired to the SDK join trigger.
  • Render federated content: display messages, members, reactions, and emoji from remote-homed spaces. Show qualified handles correctly and avoid colliding remote users with local ones.
  • Origin indication: surface which server a space/user is homed on where it matters (e.g. space header, member list / profile), so users can tell local vs. remote.
  • Remote media: load emoji and attachments from the absolute home-server CDN URLs the SDK now passes through.
  • Action routing: ensure send/edit/delete/react/typing/leave in a remote-homed space go through the SDK's forward path (the server re-runs permissions on the home), and reflect the authoritative result returned via fanout.

Pointers

  • lib/features/spaces/ (space list, join, discovery — accord_discovery.dart)
  • lib/features/messaging/, lib/features/member/, lib/features/profiles/ (rendering remote content)
  • lib/main.dart (ProfileGate, deep-link parsing)
  • Per-server clients: lib/features/server/controllers/connections.dart

Acceptance

  • A user can join a space homed on a different Accord server and see it in their space list.
  • Messages/reactions/members/emoji from that space render, with remote authors shown correctly.
  • Posting/editing/reacting in a remote-homed space works and reflects back via fanout.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfederationCross-server (peer-to-peer) federation

    Type

    No type

    Fields

    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