Merge branch 'clearnet' into global-search-off-clearnet
commit
3f4db67c1b
@ -1,48 +0,0 @@
|
|||||||
import _ from 'lodash';
|
|
||||||
import { SignalService } from '../protobuf';
|
|
||||||
import { sha256 } from '../session/crypto';
|
|
||||||
|
|
||||||
const recentHashByConvo = new Map<string, Array<string>>();
|
|
||||||
|
|
||||||
const maxHashToKeepPerConvo = 10;
|
|
||||||
|
|
||||||
export function isDuplicateBasedOnHash(
|
|
||||||
dataMessage: SignalService.DataMessage,
|
|
||||||
conversationId: string,
|
|
||||||
sender: string
|
|
||||||
): boolean {
|
|
||||||
const toUseForHash = {
|
|
||||||
..._.omit(
|
|
||||||
SignalService.DataMessage.toObject(dataMessage),
|
|
||||||
'timestamp',
|
|
||||||
'profile',
|
|
||||||
'preview',
|
|
||||||
'profileKey'
|
|
||||||
),
|
|
||||||
conversationId,
|
|
||||||
sender,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!recentHashByConvo.has(conversationId)) {
|
|
||||||
recentHashByConvo.set(conversationId, new Array());
|
|
||||||
}
|
|
||||||
const newHash = sha256(JSON.stringify(toUseForHash));
|
|
||||||
|
|
||||||
// this can only be set based on the .set above()
|
|
||||||
let recentHashForConvo = recentHashByConvo.get(conversationId) as Array<string>;
|
|
||||||
|
|
||||||
// this hash already exists for this convo
|
|
||||||
if (recentHashForConvo.some(n => n === newHash)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// push the new hash at the end
|
|
||||||
recentHashForConvo.push(newHash);
|
|
||||||
if (recentHashForConvo.length > maxHashToKeepPerConvo) {
|
|
||||||
// slice the last maxHashToKeepPerConvo hashes
|
|
||||||
recentHashForConvo = recentHashForConvo?.slice(-maxHashToKeepPerConvo);
|
|
||||||
}
|
|
||||||
recentHashByConvo.set(conversationId, recentHashForConvo);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// build a hash of the data and check against recent messages
|
|
Loading…
Reference in New Issue