Fix channel message dedup logic

This commit is contained in:
Janez T
2026-03-13 19:39:26 +01:00
parent 249268dd00
commit 9d8594fe05
2 changed files with 20 additions and 24 deletions

View File

@@ -647,9 +647,8 @@ class MessagesProvider with ChangeNotifier {
return false;
}
final timestampDeltaSeconds = (existing.senderTimestamp -
message.senderTimestamp)
.abs();
final timestampDeltaSeconds =
(existing.senderTimestamp - message.senderTimestamp).abs();
final withinChannelRepeatWindow = timestampDeltaSeconds <= 5;
final existingSenderKey = existing.senderKeyShort;

View File

@@ -176,29 +176,26 @@ void main() {
);
});
test(
'channel replay is deduped for self sender within repeat window',
() {
final provider = MessagesProvider();
provider.resolveContactNameCallback = (_) => 'dz0ny (SI)';
provider.addSentMessage(
_buildSentChannelMessage(id: 'c-echo', senderTimestamp: 1700000100),
);
provider.markMessageSent('c-echo', 0, 0);
test('channel replay is deduped for self sender within repeat window', () {
final provider = MessagesProvider();
provider.resolveContactNameCallback = (_) => 'dz0ny (SI)';
provider.addSentMessage(
_buildSentChannelMessage(id: 'c-echo', senderTimestamp: 1700000100),
);
provider.markMessageSent('c-echo', 0, 0);
provider.addMessage(
_buildReceivedChannelReplay(
id: 'c-echo-incoming',
senderTimestamp: 1700000104,
senderName: 'dz0ny (SI)',
),
);
provider.addMessage(
_buildReceivedChannelReplay(
id: 'c-echo-incoming',
senderTimestamp: 1700000104,
senderName: 'dz0ny (SI)',
),
);
expect(provider.messages, hasLength(1));
expect(provider.messages.single.id, equals('c-echo'));
expect(provider.messages.single.senderName, equals('dz0ny (SI)'));
},
);
expect(provider.messages, hasLength(1));
expect(provider.messages.single.id, equals('c-echo'));
expect(provider.messages.single.senderName, equals('dz0ny (SI)'));
});
test(
'channel replay is not deduped for different sender with same text',