mirror of
https://github.com/oxen-io/session-android.git
synced 2025-03-28 08:52:14 +00:00
Map text & media group messages from secondary deivces to their primary device
This commit is contained in:
parent
cc369f5c52
commit
db9f26d9df
@ -70,6 +70,7 @@ public class GroupMessageProcessor {
|
||||
String id = GroupUtil.getEncodedId(group);
|
||||
Optional<GroupRecord> record = database.getGroup(id);
|
||||
|
||||
// TODO: Allow processing messages from secondary devices
|
||||
if (record.isPresent() && group.getType() == Type.UPDATE) {
|
||||
return handleGroupUpdate(context, content, group, record.get(), outgoing);
|
||||
} else if (!record.isPresent() && group.getType() == Type.UPDATE) {
|
||||
@ -230,8 +231,9 @@ public class GroupMessageProcessor {
|
||||
GroupContext.Builder builder = createGroupContext(group);
|
||||
builder.setType(GroupContext.Type.QUIT);
|
||||
|
||||
if (members.contains(Address.fromExternal(context, content.getSender()))) {
|
||||
database.remove(id, Address.fromExternal(context, content.getSender()));
|
||||
String hexEncodedPublicKey = getMasterHexEncodedPublicKey(context, content.getSender());
|
||||
if (members.contains(Address.fromExternal(context, hexEncodedPublicKey))) {
|
||||
database.remove(id, Address.fromExternal(context, hexEncodedPublicKey));
|
||||
if (outgoing) database.setActive(id, false);
|
||||
|
||||
return storeMessage(context, content, group, builder.build(), outgoing);
|
||||
|
@ -851,8 +851,13 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
|
||||
Optional<List<LinkPreview>> linkPreviews = getLinkPreviews(message.getPreviews(), message.getBody().or(""));
|
||||
Optional<Attachment> sticker = getStickerAttachment(message.getSticker());
|
||||
|
||||
// If message is from group then we need to map it to the correct sender
|
||||
Address sender = message.isGroupMessage() ? Address.fromSerialized(content.getSender()) : primaryDeviceRecipient.getAddress();
|
||||
Address sender = primaryDeviceRecipient.getAddress();
|
||||
|
||||
// If message is from group then we need to map it to get the sender of the message
|
||||
if (message.isGroupMessage()) {
|
||||
sender = getPrimaryDeviceRecipient(content.getSender()).getAddress();
|
||||
}
|
||||
|
||||
IncomingMediaMessage mediaMessage = new IncomingMediaMessage(sender, message.getTimestamp(), -1,
|
||||
message.getExpiresInSeconds() * 1000L, false, content.isNeedsReceipt(), message.getBody(), message.getGroupInfo(), message.getAttachments(),
|
||||
quote, sharedContacts, linkPreviews, sticker);
|
||||
@ -1036,8 +1041,13 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
|
||||
} else {
|
||||
notifyTypingStoppedFromIncomingMessage(primaryDeviceRecipient, content.getSender(), content.getSenderDevice());
|
||||
|
||||
// If message is from group then we need to map it to the correct sender
|
||||
Address sender = message.isGroupMessage() ? Address.fromSerialized(content.getSender()) : primaryDeviceRecipient.getAddress();
|
||||
Address sender = primaryDeviceRecipient.getAddress();
|
||||
|
||||
// If message is from group then we need to map it to get the sender of the message
|
||||
if (message.isGroupMessage()) {
|
||||
sender = getPrimaryDeviceRecipient(content.getSender()).getAddress();
|
||||
}
|
||||
|
||||
IncomingTextMessage _textMessage = new IncomingTextMessage(sender,
|
||||
content.getSenderDevice(),
|
||||
message.getTimestamp(), body,
|
||||
|
Loading…
x
Reference in New Issue
Block a user