@if (callChoicePeer(); as selectedCallPeer) {

Start a call

{{ selectedCallPeer.displayName }}

Choose whether to place a full video call or audio only.

} @if (conversationModalOpen()) {

Fullscreen conversation

{{ displayedPeer()?.displayName ?? 'Conversation' }}

}
@if (currentUser(); as connectedUser) {
←

{{ connectedUser.displayName }}

@if (displayedPeer(); as selectedPeer) {
@if (peerDropdownOpen()) {
@for (dropdownPeer of dropdownPeers(); track dropdownPeer.id) {
}
}
}
Signaling
} @else {
←

Not signed in

}
@if (peerId(); as selectedPeerId) { @if (peer(); as livePeer) { @if (canEndSelectedVoiceCall()) { } } }
@if (emojiPickerOpen()) {
@for (emoji of emojiOptions; track emoji) { }
}
@if (lastIncomingReceiveMetric(); as receiveMetric) {
Rx {{ receiveMetric.mbps | number: '1.2-2' }} Mbit/s
}
@if (conversation().length === 0) {
No text messages yet. Messages and files can be queued here and will send when the peer reconnects.
} @for (entry of conversation(); track entry.id) {
@if (entry.direction !== 'system' && !isEmojiOnlyEntry(entry)) {
@if (isGeneratedImageEntry(entry)) { } @if (isForwardMenuOpen(entry.id)) {
}
} @if (!isEmojiOnlyEntry(entry)) {
{{ entry.authorLabel }} @if (isPendingOutgoingEntry(entry)) { Queued }
} @switch (entry.kind) { @case ('text') {

{{ entry.text }}

} @case ('json') {
{{ entry.payload | json }}
} @case ('file') {
@if (isImageEntry(entry)) { } @if (isVideoEntry(entry)) { } @if (isIncomingJsonFileEntry(entry)) { }
{{ entry.fileName }}
@if (entry.fileSize) {
{{ entry.fileSize | number }} bytes
}
@if (entry.downloadUrl) { Download } @if (hasDocumentPreviewImage(entry)) {
Preview
}
} @case ('voice') {
Voice message
@if (entry.downloadUrl) { }
} @default { @if (entry.showSpinner) {

{{ entry.text }}

} @else {

{{ entry.text }}

} } }
}