Xmtp.RoomPanel (xmtp_elixir_sdk v0.1.2)

Copy Markdown

Product-safe room state for Phoenix UIs.

Host apps render this struct and send user actions back through Xmtp.Rooms. Product code should not infer XMTP group, membership, or send permissions from lower-level client state.

Summary

Types

copy()

@type copy() :: %{:primary => String.t(), optional(:detail) => String.t() | nil}

membership()

@type membership() ::
  :not_connected
  | :not_joined
  | :pending_signature
  | :joined
  | :blocked
  | :removed

room_status()

@type room_status() :: :ready | :syncing | :bootstrapping | :disabled

t()

@type t() :: %Xmtp.RoomPanel{
  active_member_count: non_neg_integer(),
  can_join: boolean(),
  can_moderate: boolean(),
  can_send: boolean(),
  capacity: pos_integer() | nil,
  connected_wallet: String.t() | nil,
  last_synced_at: DateTime.t() | nil,
  member_count: non_neg_integer(),
  membership: membership(),
  messages: [map()],
  name: String.t() | nil,
  pending_signature_request_id: String.t() | nil,
  presence_ttl_seconds: non_neg_integer(),
  room_key: String.t() | nil,
  seats_remaining: non_neg_integer(),
  status: room_status(),
  user_copy: copy(),
  xmtp_group_id: String.t() | nil
}

Functions

copy(primary, detail \\ nil)

@spec copy(String.t(), String.t() | nil) :: copy()

new!(attrs)

@spec new!(map()) :: t()