signal-desktop/ts/util/shouldRespondWithProfileKey.ts

36 lines
1 KiB
TypeScript

// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { MessageModel } from '../models/messages';
import { assert } from './assert';
export async function shouldRespondWithProfileKey(
message: MessageModel
): Promise<boolean> {
if (!message.isIncoming() || message.get('unidentifiedDeliveryReceived')) {
return false;
}
const sender = message.getContact();
if (!sender) {
assert(
false,
'MessageModel#shouldRespondWithProfileKey had no sender. Returning false'
);
return false;
}
if (sender.isMe() || !sender.getAccepted() || sender.isBlocked()) {
return false;
}
// We do message check in an attempt to avoid a database lookup. If someone was EVER in
// a shared group with us, we should've shared our profile key with them in the past,
// so we should respond with a profile key now.
if (sender.get('sharedGroupNames')?.length) {
return true;
}
await sender.updateSharedGroups();
return Boolean(sender.get('sharedGroupNames')?.length);
}