Fix MAX attachment send and self push echoes
This commit is contained in:
@@ -130,23 +130,28 @@ public sealed class MaxBridgeSyncService(
|
||||
var previewHint = MessageTextSanitizer.CleanChatPreview(update.LastMessagePreview);
|
||||
var shouldLoadLastKnownMessage = !chatWasCreated &&
|
||||
!string.IsNullOrWhiteSpace(previewHint) &&
|
||||
!string.IsNullOrWhiteSpace(chat.LastMessagePreview) &&
|
||||
string.Equals(MessageTextSanitizer.CleanChatPreview(chat.LastMessagePreview), previewHint, StringComparison.Ordinal) &&
|
||||
update.LastMessageIsOutgoing != true &&
|
||||
update.Messages.Count == 0 &&
|
||||
HasListClockTime(update.LastMessageTimeText);
|
||||
List<LastKnownMessageSnapshot> lastKnownMessages = !shouldLoadLastKnownMessage
|
||||
var lastKnownOutgoingMessages = !shouldLoadLastKnownMessage
|
||||
? []
|
||||
: await db.Messages
|
||||
.AsNoTracking()
|
||||
.Include(x => x.Attachments)
|
||||
.Where(x =>
|
||||
x.ChatId == chat.Id &&
|
||||
x.DeletedAt == null &&
|
||||
x.Direction == MessageDirection.Outgoing &&
|
||||
x.Text == previewHint)
|
||||
.Select(x => new LastKnownMessageSnapshot(x.Direction, x.Text, x.SentAt))
|
||||
x.Direction == MessageDirection.Outgoing)
|
||||
.OrderByDescending(x => x.SentAt)
|
||||
.Take(5)
|
||||
.ToListAsync(cancellationToken);
|
||||
var lastKnownMessage = lastKnownMessages
|
||||
.OrderByDescending(x => x.SentAt)
|
||||
var lastKnownMessage = lastKnownOutgoingMessages
|
||||
.Select(x => new LastKnownMessageSnapshot(
|
||||
x.Direction,
|
||||
x.Text,
|
||||
LastMessagePreview(x.Text, x.Attachments),
|
||||
x.Attachments.Count > 0,
|
||||
x.SentAt))
|
||||
.FirstOrDefault();
|
||||
|
||||
if (ApplyListPreview(
|
||||
@@ -349,14 +354,15 @@ public sealed class MaxBridgeSyncService(
|
||||
DateTimeOffset previewAt)
|
||||
{
|
||||
if (lastKnownMessage is null ||
|
||||
lastKnownMessage.Direction != MessageDirection.Outgoing ||
|
||||
string.IsNullOrWhiteSpace(lastKnownMessage.Text))
|
||||
lastKnownMessage.Direction != MessageDirection.Outgoing)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var lastText = MessageTextSanitizer.CleanChatPreview(lastKnownMessage.Text);
|
||||
if (!string.Equals(lastText, preview, StringComparison.Ordinal))
|
||||
var lastPreview = MessageTextSanitizer.CleanChatPreview(lastKnownMessage.Preview ?? lastKnownMessage.Text);
|
||||
var previewMatches = string.Equals(lastPreview, preview, StringComparison.Ordinal) ||
|
||||
lastKnownMessage.HasAttachments && MessageTextSanitizer.IsGenericMediaLabel(preview);
|
||||
if (!previewMatches)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -810,5 +816,7 @@ public sealed class MaxBridgeSyncService(
|
||||
private sealed record LastKnownMessageSnapshot(
|
||||
MessageDirection Direction,
|
||||
string? Text,
|
||||
string? Preview,
|
||||
bool HasAttachments,
|
||||
DateTimeOffset SentAt);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user