Rename BACKGROUND_FRIEND_REQUEST to SESSION_REQUEST.

Don't trigger friend request logic if a message is aimed at a group.
This commit is contained in:
Mikunj 2020-02-05 10:32:14 +11:00
parent 9732c4f4d0
commit 8ae793db19
4 changed files with 40 additions and 36 deletions

View File

@ -1891,7 +1891,8 @@
const authorisation = await libloki.storage.getGrantAuthorisationForSecondaryPubKey(
source
);
if (initialMessage.group) {
const isGroupMessage = !!initialMessage.group;
if (isGroupMessage) {
conversationId = initialMessage.group.id;
} else if (source !== ourNumber && authorisation) {
// Ignore auth from our devices
@ -1982,16 +1983,16 @@
Date.now(),
undefined,
undefined,
{ messageType: 'friend-request', backgroundFriendReq: true }
{ messageType: 'friend-request', sessionRequest: true }
);
});
}
});
}
const backgroundFrReq =
const isSessionRequest =
initialMessage.flags ===
textsecure.protobuf.DataMessage.Flags.BACKGROUND_FRIEND_REQUEST;
textsecure.protobuf.DataMessage.Flags.SESSION_REQUEST;
if (
// eslint-disable-next-line no-bitwise
@ -2002,7 +2003,7 @@
this.set({ endSessionType: 'ongoing' });
}
if (message.isFriendRequest() && backgroundFrReq) {
if (message.isFriendRequest() && isSessionRequest) {
// Check if the contact is a member in one of our private groups:
const groupMember = window
.getConversations()
@ -2308,39 +2309,42 @@
}
let autoAccept = false;
if (message.get('type') === 'friend-request') {
/*
Here is the before and after state diagram for the operation before.
// Make sure friend request logic doesn't trigger on messages aimed at groups
if (!isGroupMessage) {
if (message.get('type') === 'friend-request') {
/*
Here is the before and after state diagram for the operation before.
None -> RequestReceived
PendingSend -> RequestReceived
RequestReceived -> RequestReceived
Sent -> Friends
Expired -> Friends
Friends -> Friends
None -> RequestReceived
PendingSend -> RequestReceived
RequestReceived -> RequestReceived
Sent -> Friends
Expired -> Friends
Friends -> Friends
The cases where we auto accept are the following:
- We sent the user a friend request and that user sent us a friend request.
- We are friends with the user, and that user just sent us a friend request.
*/
const isFriend = sendingDeviceConversation.isFriend();
const hasSentFriendRequest = sendingDeviceConversation.hasSentFriendRequest();
autoAccept = isFriend || hasSentFriendRequest;
The cases where we auto accept are the following:
- We sent the user a friend request and that user sent us a friend request.
- We are friends with the user, and that user just sent us a friend request.
*/
const isFriend = sendingDeviceConversation.isFriend();
const hasSentFriendRequest = sendingDeviceConversation.hasSentFriendRequest();
autoAccept = isFriend || hasSentFriendRequest;
if (autoAccept) {
message.set({ friendStatus: 'accepted' });
}
if (autoAccept) {
message.set({ friendStatus: 'accepted' });
}
if (isFriend) {
window.Whisper.events.trigger('endSession', source);
} else if (hasSentFriendRequest) {
if (isFriend) {
window.Whisper.events.trigger('endSession', source);
} else if (hasSentFriendRequest) {
await sendingDeviceConversation.onFriendRequestAccepted();
} else {
await sendingDeviceConversation.onFriendRequestReceived();
}
} else if (message.get('type') !== 'outgoing') {
// Ignore 'outgoing' messages because they are sync messages
await sendingDeviceConversation.onFriendRequestAccepted();
} else {
await sendingDeviceConversation.onFriendRequestReceived();
}
} else if (message.get('type') !== 'outgoing') {
// Ignore 'outgoing' messages because they are sync messages
await sendingDeviceConversation.onFriendRequestAccepted();
}
const id = await window.Signal.Data.saveMessage(message.attributes, {
Message: Whisper.Message,

View File

@ -1848,7 +1848,7 @@ MessageReceiver.prototype.extend({
} else if (decrypted.flags & FLAGS.PROFILE_KEY_UPDATE) {
decrypted.body = null;
decrypted.attachments = [];
} else if (decrypted.flags & FLAGS.BACKGROUND_FRIEND_REQUEST) {
} else if (decrypted.flags & FLAGS.SESSION_REQUEST) {
// do nothing
} else if (decrypted.flags & FLAGS.SESSION_RESTORE) {
// do nothing

View File

@ -950,8 +950,8 @@ MessageSender.prototype = {
) {
const profile = this.getOurProfile();
const flags = options.backgroundFriendReq
? textsecure.protobuf.DataMessage.Flags.BACKGROUND_FRIEND_REQUEST
const flags = options.sessionRequest
? textsecure.protobuf.DataMessage.Flags.SESSION_REQUEST
: undefined;
const { groupInvitation, sessionRestoration } = options;

View File

@ -107,7 +107,7 @@ message DataMessage {
PROFILE_KEY_UPDATE = 4;
SESSION_RESTORE = 64;
UNPAIRING_REQUEST = 128;
BACKGROUND_FRIEND_REQUEST = 256;
SESSION_REQUEST = 256;
}
message Quote {