Join a group from a Welcome message
To join a group from a Welcome
message, a new MlsGroup
can be instantiated from
the MlsMessageIn
message containing the Welcome
and an MlsGroupJoinConfig
(see Group configuration for more details). This is a
two-step process: a StagedWelcome
is constructed from the Welcome
and can then be turned into an MlsGroup
. If the group configuration does not
use the ratchet tree extension, the ratchet tree needs to be provided.
let staged_join = StagedWelcome::new_from_welcome(provider, &mls_group_config, welcome, None)
.expect("Error constructing staged join");
let mut bob_group = staged_join
.into_group(provider)
.expect("Error joining group from StagedWelcome");
The reason for this two-phase process is to allow the recipient of a Welcome
to inspect the message, e.g. to determine the identity of the sender.
Pay attention not to forward a Welcome message to a client before its associated commit has been accepted by the Delivery Service. Otherwise, you would end up with an invalid MLS group instance.