@let msg = message(); @let attachmentsList = attachmentViewModels();
@if (msg.replyToId) { @let reply = repliedMessage();
@if (reply) { {{ reply.senderName }} {{ reply.isDeleted ? deletedMessageContent : reply.content }} } @else { Original message not found }
}
{{ msg.senderName }} {{ formatTimestamp(msg.timestamp) }} @if (msg.editedAt && !msg.isDeleted) { (edited) }
@if (isEditing()) {
} @else { @if (msg.isDeleted) {
{{ deletedMessageContent }}
} @else { @if (!pluginEmbedToken()) { @if (requiresRichMarkdown(msg.content)) { @defer {
} @placeholder {
{{ msg.content }}
} } @else {
{{ msg.content }}
} } @if (missingPluginEmbed(); as missingEmbed) {
Required plugin is not installed to view this content, visit the .
} @if (msg.linkMetadata?.length) { @for (meta of msg.linkMetadata; track meta.url) { @if (shouldShowLinkEmbed(meta.url)) { } } } @if (pluginEmbeds().length > 0) {
@for (embed of pluginEmbeds(); track embed.id) {
{{ embed.contribution.embedType }} {{ embed.pluginId }}
}
} @if (attachmentsList.length > 0) {
@for (att of attachmentsList; track att.id) { @if (att.isImage) { @if (att.available && att.objectUrl) {
} @else if ((att.receivedBytes || 0) > 0) {
{{ att.filename }}
{{ formatBytes(att.receivedBytes || 0) }} / {{ formatBytes(att.size) }}
{{ ((att.receivedBytes || 0) * 100) / att.size | number: '1.0-0' }}%
} @else {
{{ att.filename }}
{{ formatBytes(att.size) }}
{{ att.requestError || 'Waiting for image source...' }}
} } @else if (att.isVideo || att.isAudio) { @if (att.available && att.objectUrl) { @if (att.isVideo) { } @else { } } @else if ((att.receivedBytes || 0) > 0) {
{{ att.filename }}
{{ formatBytes(att.receivedBytes || 0) }} / {{ formatBytes(att.size) }}
{{ att.progressPercent | number: '1.0-0' }}% @if (att.speedBps) { {{ formatSpeed(att.speedBps) }} }
} @else {
{{ att.filename }}
{{ formatBytes(att.size) }}
{{ att.mediaStatusText }}
} } @else {
{{ att.filename }}
{{ formatBytes(att.size) }}
@if (!att.isUploader) { @if (!att.available) {
{{ att.progressPercent | number: '1.0-0' }}% @if (att.speedBps) { • {{ formatSpeed(att.speedBps) }} }
@if (!(att.receivedBytes || 0)) { } @else { } } @else { @if (att.canOpenExternally) { } @if (att.canUseExperimentalPlayer) { } } } @else {
Shared from your device
@if (att.canOpenExternally) { } @if (att.canUseExperimentalPlayer) { } }
@if (!att.available && att.requestError) {
{{ att.requestError }}
}
@if (att.experimentalPlayerActive && att.objectUrl) { @defer { } @loading {
Loading experimental player...
} } } }
} } } @if (!msg.isDeleted && msg.reactions.length > 0) {
@for (reaction of getGroupedReactions(); track reaction.emoji) { }
}
@if (!msg.isDeleted && !isMobile()) {
@if (showEmojiPicker()) {
@for (emoji of commonEmojis; track emoji) { }
}
@if (isOwnMessage()) { } @if (isOwnMessage() || isAdmin()) { }
}

React

@for (emoji of commonEmojis; track emoji) { }
@if (isOwnMessage()) { } @if (isOwnMessage() || isAdmin()) { }