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; return false;
} }
final timestampDeltaSeconds = (existing.senderTimestamp - final timestampDeltaSeconds =
message.senderTimestamp) (existing.senderTimestamp - message.senderTimestamp).abs();
.abs();
final withinChannelRepeatWindow = timestampDeltaSeconds <= 5; final withinChannelRepeatWindow = timestampDeltaSeconds <= 5;
final existingSenderKey = existing.senderKeyShort; final existingSenderKey = existing.senderKeyShort;

View File

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