import { HistoryVisibility, JoinRule } from 'matrix-js-sdk'; /** * [Gitea #133] One sentence for Room Settings → General, under the name: * "Encrypted · Invite only · History visible to members since they joined". * Wording mirrors the room preview card chips and the history-visibility * setting so the same words mean the same thing everywhere. */ export function describeRoomVisibility(input: { encrypted: boolean; joinRule?: string; historyVisibility?: string; }): string { const parts: string[] = [input.encrypted ? 'Encrypted' : 'Not encrypted']; switch (input.joinRule) { case JoinRule.Public: parts.push('Anyone can join'); break; case JoinRule.Knock: case 'knock_restricted': parts.push('Ask to join'); break; case JoinRule.Restricted: parts.push('Restricted'); break; case JoinRule.Private: parts.push('Private'); break; case JoinRule.Invite: default: parts.push('Invite only'); } switch (input.historyVisibility) { case HistoryVisibility.WorldReadable: parts.push('History visible to anyone, even guests'); break; case HistoryVisibility.Invited: parts.push('History visible to members since they were invited'); break; case HistoryVisibility.Joined: parts.push('History visible to members since they joined'); break; case HistoryVisibility.Shared: default: // "shared" is also the spec default when the state event is absent. parts.push('History visible to members, including before they joined'); } return parts.join(' · '); }