Fix MAX attachment send and self push echoes

This commit is contained in:
sevenhill
2026-07-04 23:46:00 +03:00
parent 8e16469d94
commit b022218a1f
3 changed files with 216 additions and 30 deletions
@@ -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);
}