LivePanels.Canvas.Shared.Session (livepanels v0.1.0)

Copy Markdown View Source

Application-provided shared-mode participant session metadata.

Put participant metadata under session_key/0 in the LiveView session. The runtime reads only viewer_id, role, capabilities, and optional region_id; authentication and display data stay with the application. Missing shared-mode roles resolve to :viewer unless the runtime caller passes another :default_role.

Summary

Functions

Extracts participant runtime options from a LiveView session.

Returns a LiveView session map containing shared participant metadata.

Participant fields LivePanels reads from the application session payload.

Session key used for app-provided shared-mode participant metadata.

Types

participant_options()

@type participant_options() :: [
  viewer_id: String.t(),
  role: :viewer | :editor,
  capabilities: [atom() | String.t()],
  region_id: String.t() | nil
]

Functions

participant_options(session, client_id, opts \\ [])

@spec participant_options(map(), String.t(), keyword()) ::
  {:ok, participant_options()} | {:error, {atom(), String.t(), term()}}

Extracts participant runtime options from a LiveView session.

participant_options!(session, client_id, opts \\ [])

@spec participant_options!(map(), String.t(), keyword()) :: participant_options()

Bang variant of participant_options/3.

participant_session(opts \\ [])

@spec participant_session(keyword() | map()) :: map()

Returns a LiveView session map containing shared participant metadata.

session_fields()

@spec session_fields() :: [:viewer_id | :role | :capabilities | :region_id]

Participant fields LivePanels reads from the application session payload.

session_key()

@spec session_key() :: String.t()

Session key used for app-provided shared-mode participant metadata.