diff --git a/js/models/messages.js b/js/models/messages.js index ee668df59..985342db6 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -448,7 +448,7 @@ // If you don't have a profile name for this device, and profileName is set, // add profileName to conversation. const primaryDevicePubKey = - (await libloki.storage.getPrimaryDeviceFor(devicePubKey)) || + (await window.Signal.Data.getPrimaryDeviceFor(devicePubKey)) || devicePubKey; const primaryConversation = allConversationsWithUser.find( c => c.id === primaryDevicePubKey @@ -2247,12 +2247,10 @@ return null; } } - const conversation = conversationPrimary; - // source = primarySource; - return conversation.queueJob(async () => { + return conversationPrimary.queueJob(async () => { window.log.info( - `Starting handleDataMessage for message ${message.idForLogging()} in conversation ${conversation.idForLogging()}` + `Starting handleDataMessage for message ${message.idForLogging()} in conversation ${conversationPrimary.idForLogging()}` ); const GROUP_TYPES = textsecure.protobuf.GroupContext.Type; const type = message.get('type'); @@ -2265,7 +2263,7 @@ try { const now = new Date().getTime(); let attributes = { - ...conversation.attributes, + ...conversationPrimary.attributes, }; if (dataMessage.group) { @@ -2283,18 +2281,18 @@ }; groupUpdate = - conversation.changedAttributes( + conversationPrimary.changedAttributes( _.pick(dataMessage.group, 'name', 'avatar') ) || {}; const addedMembers = _.difference( attributes.members, - conversation.get('members') + conversationPrimary.get('members') ); if (addedMembers.length > 0) { groupUpdate.joined = addedMembers; } - if (conversation.get('left')) { + if (conversationPrimary.get('left')) { // TODO: Maybe we shouldn't assume this message adds us: // we could maybe still get this message by mistake window.log.warn('re-added to a left group'); @@ -2308,7 +2306,7 @@ // Check if anyone got kicked: const removedMembers = _.difference( - conversation.get('members'), + conversationPrimary.get('members'), attributes.members ); @@ -2330,7 +2328,7 @@ groupUpdate = { left: source }; } attributes.members = _.without( - conversation.get('members'), + conversationPrimary.get('members'), source ); } @@ -2363,7 +2361,7 @@ attachments: dataMessage.attachments, body: dataMessage.body, contact: dataMessage.contact, - conversationId: conversation.id, + conversationId: conversationPrimary.id, decrypted_at: now, errors: [], flags: dataMessage.flags, @@ -2377,7 +2375,7 @@ if (type === 'outgoing') { const receipts = Whisper.DeliveryReceipts.forMessage( - conversation, + conversationPrimary, message ); receipts.forEach(receipt => @@ -2390,10 +2388,10 @@ ); } attributes.active_at = now; - conversation.set(attributes); + conversationPrimary.set(attributes); // Re-enable typing if re-joined the group - conversation.updateTextInputState(); + conversationPrimary.updateTextInputState(); if (message.isExpirationTimerUpdate()) { message.set({ @@ -2402,7 +2400,7 @@ expireTimer: dataMessage.expireTimer, }, }); - conversation.set({ expireTimer: dataMessage.expireTimer }); + conversationPrimary.set({ expireTimer: dataMessage.expireTimer }); } else if (dataMessage.expireTimer) { message.set({ expireTimer: dataMessage.expireTimer }); } @@ -2414,7 +2412,7 @@ message.isExpirationTimerUpdate() || expireTimer; if (shouldLogExpireTimerChange) { window.log.info("Update conversation 'expireTimer'", { - id: conversation.idForLogging(), + id: conversationPrimary.idForLogging(), expireTimer, source: 'handleDataMessage', }); @@ -2422,8 +2420,8 @@ if (!message.isEndSession()) { if (dataMessage.expireTimer) { - if (dataMessage.expireTimer !== conversation.get('expireTimer')) { - conversation.updateExpirationTimer( + if (dataMessage.expireTimer !== conversationPrimary.get('expireTimer')) { + conversationPrimary.updateExpirationTimer( dataMessage.expireTimer, source, message.get('received_at'), @@ -2433,18 +2431,18 @@ ); } } else if ( - conversation.get('expireTimer') && + conversationPrimary.get('expireTimer') && // We only turn off timers if it's not a group update !message.isGroupUpdate() ) { - conversation.updateExpirationTimer( + conversationPrimary.updateExpirationTimer( null, source, message.get('received_at') ); } } else { - const endSessionType = conversation.isSessionResetReceived() + const endSessionType = conversationPrimary.isSessionResetReceived() ? 'ongoing' : 'done'; this.set({ endSessionType }); @@ -2476,11 +2474,11 @@ message.attributes.body && message.attributes.body.indexOf(`@${ourNumber}`) !== -1 ) { - conversation.set({ mentionedUs: true }); + conversationPrimary.set({ mentionedUs: true }); } - conversation.set({ - unreadCount: conversation.get('unreadCount') + 1, + conversationPrimary.set({ + unreadCount: conversationPrimary.get('unreadCount') + 1, isArchived: false, }); } @@ -2488,7 +2486,7 @@ if (type === 'outgoing') { const reads = Whisper.ReadReceipts.forMessage( - conversation, + conversationPrimary, message ); if (reads.length) { @@ -2499,39 +2497,35 @@ } // A sync'd message to ourself is automatically considered read and delivered - if (conversation.isMe()) { + if (conversationPrimary.isMe()) { message.set({ - read_by: conversation.getRecipients(), - delivered_to: conversation.getRecipients(), + read_by: conversationPrimary.getRecipients(), + delivered_to: conversationPrimary.getRecipients(), }); } - message.set({ recipients: conversation.getRecipients() }); + message.set({ recipients: conversationPrimary.getRecipients() }); } - const conversationTimestamp = conversation.get('timestamp'); + const conversationTimestamp = conversationPrimary.get('timestamp'); if ( !conversationTimestamp || message.get('sent_at') > conversationTimestamp ) { - conversation.lastMessage = message.getNotificationText(); - conversation.set({ + conversationPrimary.lastMessage = message.getNotificationText(); + conversationPrimary.set({ timestamp: message.get('sent_at'), }); } - const sendingDeviceConversation = await ConversationController.getOrCreateAndWait( - primarySource, - 'private' - ); if (dataMessage.profileKey) { const profileKey = dataMessage.profileKey.toString('base64'); if (source === textsecure.storage.user.getNumber()) { - conversation.set({ profileSharing: true }); - } else if (conversation.isPrivate()) { - conversation.setProfileKey(profileKey); + conversationPrimary.set({ profileSharing: true }); + } else if (conversationPrimary.isPrivate()) { + conversationPrimary.setProfileKey(profileKey); } else { - sendingDeviceConversation.setProfileKey(profileKey); + conversationOrigin.setProfileKey(profileKey); } } @@ -2558,8 +2552,8 @@ and that user just sent us a friend request. */ - const isFriend = sendingDeviceConversation.isFriend(); - const hasSentFriendRequest = sendingDeviceConversation.hasSentFriendRequest(); + const isFriend = conversationOrigin.isFriend(); + const hasSentFriendRequest = conversationOrigin.hasSentFriendRequest(); autoAccept = isFriend || hasSentFriendRequest; if (autoAccept) { @@ -2573,13 +2567,13 @@ if (isFriend) { window.Whisper.events.trigger('endSession', source); } else if (hasSentFriendRequest) { - await sendingDeviceConversation.onFriendRequestAccepted(); + await conversationOrigin.onFriendRequestAccepted(); } else { - await sendingDeviceConversation.onFriendRequestReceived(); + await conversationOrigin.onFriendRequestReceived(); } } else if (message.get('type') !== 'outgoing') { // Ignore 'outgoing' messages because they are sync messages - await sendingDeviceConversation.onFriendRequestAccepted(); + await conversationOrigin.onFriendRequestAccepted(); } } @@ -2601,11 +2595,11 @@ await window.Signal.Data.updateConversation( conversationId, - conversation.attributes, + conversationPrimary.attributes, { Conversation: Whisper.Conversation } ); - conversation.trigger('newmessage', message); + conversationPrimary.trigger('newmessage', message); try { // We go to the database here because, between the message save above and @@ -2643,9 +2637,9 @@ if (message.get('unread')) { // Need to do this here because the conversation has already changed states if (autoAccept) { - await conversation.notifyFriendRequest(source, 'accepted'); + await conversationPrimary.notifyFriendRequest(source, 'accepted'); } else { - await conversation.notify(message); + await conversationPrimary.notify(message); } }