Overview
Channel (channel preset, attribute 8) β broadcasting to a potentially huge audience:
- Only moderators can post, everybody else can only react.
- Permissions are a default, so individuals can still be granted the chat permission.
- Calls are impossible for everyone, including moderators.
- The participants list is only available to moderators.
- System messages are not shown (client-side only).
- Listable for users by default.
Announcement (announcement preset, attributes 8|16 = 24) β a channel with extra rules:
- Everything a channel does, unless contradicted below.
- Not listable by default.
- Non-moderators can not leave; moderators can, and can still remove others.
- Notifies about all messages by default (changeable afterwards).
Capability announcement-preset indicates the existence and support of both presets. A conversation is a channel when TalkRoom.attributes & 8 (the CHANNEL bit) is set, and an announcement when TalkRoom.attributes & 16 (the ANNOUNCEMENT bit) is set. An announcement is a channel with additional restrictions, so it always has both bits set β every channel behavior below therefore applies to announcements as well, and attributes & 8 is the only check needed for the shared parts.
Detection
Channels (also applies to announcements)
Announcements only
Overview
Channel (
channelpreset, attribute8) β broadcasting to a potentially huge audience:Announcement (
announcementpreset, attributes8|16=24) β a channel with extra rules:Capability
announcement-presetindicates the existence and support of both presets. A conversation is a channel whenTalkRoom.attributes & 8(theCHANNELbit) is set, and an announcement whenTalkRoom.attributes & 16(theANNOUNCEMENTbit) is set. An announcement is a channel with additional restrictions, so it always has both bits set β every channel behavior below therefore applies to announcements as well, andattributes & 8is the only check needed for the shared parts.Detection
TalkRoom.attributes & 8and announcements viaTalkRoom.attributes & 16; only apply this behavior when theannouncement-presetcapability is present.channelandannouncementtoCONVERSATION.PRESETinsrc/constants.tsand give them an icon inpresetIcons(NewConversationSetupPage.vue).Channels (also applies to announcements)
GET /room/{token}/participants, so do not call it)PERMISSIONS_CALL_START/PERMISSIONS_CALL_JOINfrompermissionsand reportscanStartCall: false, and joining a call returns 403.permissionswithoutPERMISSIONS_CHAT(128) but withPERMISSIONS_REACT(256), so the message composer should be replaced by a reaction-only affordance. Individual participants can still be granted the chat permission, so always follow the actualpermissionsvalue rather than assuming.Announcements only
canLeaveConversationisfalsefor them andDELETE /room/{token}/participants/selfreturns 400announcement. Moderators can still leave and can still remove other participants.1) for users added to an announcement. It is only a default, so the notification settings must stay editable.