...
This commit is contained in:
@@ -219,7 +219,23 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
<div class="d-flex mb-2 @(msg.Type==Common.Enums.ConversationType.UE ? "justify-content-end" : "justify-content-start")">
|
<div class="d-flex mb-2 @(msg.Type==Common.Enums.ConversationType.UE ? "justify-content-end" : "justify-content-start")">
|
||||||
<div class="chat-bubble @(msg.Type==Common.Enums.ConversationType.UE ? "chat-mine": "chat-other")" data-id="@msg.ID"> @msg.text </div>
|
|
||||||
|
<div class="chat-bubble @(msg.Type==Common.Enums.ConversationType.UE ? "chat-mine": "chat-other")" data-id="@msg.ID">
|
||||||
|
@if (msg.FileContent != null && msg.FileContent.Length > 0 && !string.IsNullOrWhiteSpace(msg.FileType) && msg.FileType.StartsWith("image/"))
|
||||||
|
{
|
||||||
|
<a href="@GetImageDataUrl(msg.FileType, msg.FileContent)" download="@GetDownloadFileName(msg.FileName, msg.FileType)" title="دانلود تصویر" style="display:inline-block">
|
||||||
|
<img src="@GetImageDataUrl(msg.FileType, msg.FileContent)" alt="image" style="max-width: 220px; border-radius: 8px; display: block; cursor: pointer;" />
|
||||||
|
</a>
|
||||||
|
@if (!string.IsNullOrWhiteSpace(msg.text))
|
||||||
|
{
|
||||||
|
<div style="margin-top:6px">@msg.text</div>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@msg.text
|
||||||
|
}
|
||||||
|
</div>
|
||||||
@if (msg.Type != Common.Enums.ConversationType.UE)
|
@if (msg.Type != Common.Enums.ConversationType.UE)
|
||||||
{
|
{
|
||||||
if (msg.IsRead)
|
if (msg.IsRead)
|
||||||
@@ -487,6 +503,21 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
private static string GetImageDataUrl(string? fileType, byte[]? content)
|
||||||
|
=> (string.IsNullOrWhiteSpace(fileType) || content == null || content.Length == 0)
|
||||||
|
? string.Empty
|
||||||
|
: $"data:{fileType};base64,{Convert.ToBase64String(content)}";
|
||||||
|
|
||||||
|
private static string GetDownloadFileName(string? fileName, string? fileType)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrWhiteSpace(fileName)) return fileName;
|
||||||
|
var ext = "";
|
||||||
|
if (!string.IsNullOrWhiteSpace(fileType) && fileType.StartsWith("image/"))
|
||||||
|
{
|
||||||
|
ext = "." + fileType.Split('/').Last();
|
||||||
|
}
|
||||||
|
return $"image_{DateTimeOffset.Now.ToUnixTimeSeconds()}{ext}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -79,7 +79,9 @@
|
|||||||
<div class="chat-bubble @(msg.Type!=Common.Enums.ConversationType.UE ? "chat-mine": "chat-other")" data-id="@msg.ID">
|
<div class="chat-bubble @(msg.Type!=Common.Enums.ConversationType.UE ? "chat-mine": "chat-other")" data-id="@msg.ID">
|
||||||
@if (msg.FileContent != null && msg.FileContent.Length > 0 && !string.IsNullOrWhiteSpace(msg.FileType) && msg.FileType.StartsWith("image/"))
|
@if (msg.FileContent != null && msg.FileContent.Length > 0 && !string.IsNullOrWhiteSpace(msg.FileType) && msg.FileType.StartsWith("image/"))
|
||||||
{
|
{
|
||||||
<img src="@($"data:{msg.FileType};base64,{Convert.ToBase64String(msg.FileContent)}")" alt="image" style="max-width: 220px; border-radius: 8px; display: block;" />
|
<a href="@GetImageDataUrl(msg.FileType, msg.FileContent)" download="@GetDownloadFileName(msg.FileName, msg.FileType)" title="دانلود تصویر" style="display:inline-block">
|
||||||
|
<img src="@GetImageDataUrl(msg.FileType, msg.FileContent)" alt="image" style="max-width: 220px; border-radius: 8px; display: block; cursor: pointer;" />
|
||||||
|
</a>
|
||||||
@if (!string.IsNullOrWhiteSpace(msg.text))
|
@if (!string.IsNullOrWhiteSpace(msg.text))
|
||||||
{
|
{
|
||||||
<div style="margin-top:6px">@msg.text</div>
|
<div style="margin-top:6px">@msg.text</div>
|
||||||
@@ -507,6 +509,22 @@
|
|||||||
SelectedImagePreview = null;
|
SelectedImagePreview = null;
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string GetImageDataUrl(string? fileType, byte[]? content)
|
||||||
|
=> (string.IsNullOrWhiteSpace(fileType) || content == null || content.Length == 0)
|
||||||
|
? string.Empty
|
||||||
|
: $"data:{fileType};base64,{Convert.ToBase64String(content)}";
|
||||||
|
|
||||||
|
private static string GetDownloadFileName(string? fileName, string? fileType)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrWhiteSpace(fileName)) return fileName;
|
||||||
|
var ext = "";
|
||||||
|
if (!string.IsNullOrWhiteSpace(fileType) && fileType.StartsWith("image/"))
|
||||||
|
{
|
||||||
|
ext = "." + fileType.Split('/').Last();
|
||||||
|
}
|
||||||
|
return $"image_{DateTimeOffset.Now.ToUnixTimeSeconds()}{ext}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
<style>
|
<style>
|
||||||
.chat-bubble {
|
.chat-bubble {
|
||||||
|
Reference in New Issue
Block a user