@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 (requiresRichMarkdown(msg.content)) {
@defer {
} @placeholder {
{{ msg.content }}
}
} @else {
{{ msg.content }}
}
@if (msg.linkMetadata?.length) {
@for (meta of msg.linkMetadata; track meta.url) {
@if (shouldShowLinkEmbed(meta.url)) {
}
}
}
@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 {
}
} @else {
Shared from your device
}
@if (!att.available && att.requestError) {
{{ att.requestError }}
}
}
}
}
}
}
@if (!msg.isDeleted && msg.reactions.length > 0) {
@for (reaction of getGroupedReactions(); track reaction.emoji) {
}
}