Group-specific outbound transformations and routing decisions.
The session worker remains responsible for transport calls, response receives, timeouts, persistence, and retries. This module owns sender-key payload construction, group target selection, group IQ shapes, and group message-node composition.
Summary
Functions
Builds the final encrypted group message node.
Builds the IQ node used to request interactive group information.
Creates the sender-key distribution payload and encrypted group payload.
Resolves live and cached sender-key distribution targets.
Normalizes the group session preparation result.
Parses the interactive group information response.
Selects group distribution targets that need a prekey bootstrap.
Builds the participant and local-account JIDs for the group USync query.
Types
Functions
@spec build_encrypted_message_node( String.t(), String.t(), [ExWapp.Binary.Node.t()], binary(), term(), term(), boolean() ) :: ExWapp.Binary.Node.t()
Builds the final encrypted group message node.
Builds the IQ node used to request interactive group information.
@spec build_sender_key_payloads(term(), String.t(), binary()) :: {:ok, binary(), binary()} | {:error, term()}
Creates the sender-key distribution payload and encrypted group payload.
@spec distribution_targets( [term()], map(), term(), non_neg_integer() | nil, String.t(), String.t(), term(), map() ) :: {[String.t()], [String.t()]}
Resolves live and cached sender-key distribution targets.
Targets incompatible with the group's addressing mode and the current local device are excluded.
@spec finalize_sessions_result( {:error, term()} | ExWapp.Signal.SessionStore.t(), map(), [String.t()] ) :: {:error, term()} | {:ok, ExWapp.Signal.SessionStore.t(), map(), [String.t()]}
Normalizes the group session preparation result.
@spec parse_info_response(term(), String.t()) :: {:ok, group_info()} | {:error, term()}
Parses the interactive group information response.
@spec prekey_targets( [term()], map(), ExWapp.Signal.SessionStore.t(), map(), String.t(), String.t(), non_neg_integer() ) :: [String.t()]
Selects group distribution targets that need a prekey bootstrap.
Builds the participant and local-account JIDs for the group USync query.