From: AsamK Date: Sun, 18 Feb 2024 20:26:36 +0000 (+0100) Subject: Enable profile sharing when accepting message request X-Git-Tag: v0.13.0~3 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/9051f68ba64163690c6c0e7bc4214cb2a2f37002 Enable profile sharing when accepting message request --- diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java index 609c2bcf..f9af27f1 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java @@ -49,6 +49,13 @@ public class ContactHelper { account.getContactStore().storeContact(recipientId, builder.withIsBlocked(blocked).build()); } + public void setContactProfileSharing(RecipientId recipientId, boolean profileSharing) { + var contact = account.getContactStore().getContact(recipientId); + final var builder = contact == null ? Contact.newBuilder() : Contact.newBuilder(contact); + builder.withIsProfileSharingEnabled(profileSharing); + account.getContactStore().storeContact(recipientId, builder.build()); + } + public void setContactHidden(RecipientId recipientId, boolean hidden) { var contact = account.getContactStore().getContact(recipientId); final var builder = contact == null ? Contact.newBuilder() : Contact.newBuilder(contact); diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java index 4d218003..4789790e 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java @@ -2,7 +2,7 @@ package org.asamk.signal.manager.helper; import org.asamk.signal.manager.api.Contact; import org.asamk.signal.manager.api.GroupId; -import org.asamk.signal.manager.api.MessageEnvelope; +import org.asamk.signal.manager.api.MessageEnvelope.Sync.MessageRequestResponse; import org.asamk.signal.manager.api.TrustLevel; import org.asamk.signal.manager.storage.SignalAccount; import org.asamk.signal.manager.storage.groups.GroupInfoV1; @@ -368,19 +368,23 @@ public class SyncHelper { } public SendMessageResult sendMessageRequestResponse( - final MessageEnvelope.Sync.MessageRequestResponse.Type type, final GroupId groupId + final MessageRequestResponse.Type type, final GroupId groupId ) { final var response = MessageRequestResponseMessage.forGroup(groupId.serialize(), localToRemoteType(type)); return context.getSendHelper().sendSyncMessage(SignalServiceSyncMessage.forMessageRequestResponse(response)); } public SendMessageResult sendMessageRequestResponse( - final MessageEnvelope.Sync.MessageRequestResponse.Type type, final RecipientId recipientId + final MessageRequestResponse.Type type, final RecipientId recipientId ) { final var address = account.getRecipientAddressResolver().resolveRecipientAddress(recipientId); if (address.serviceId().isEmpty()) { return null; } + context.getContactHelper() + .setContactProfileSharing(recipientId, + type == MessageRequestResponse.Type.ACCEPT + || type == MessageRequestResponse.Type.UNBLOCK_AND_ACCEPT); final var response = MessageRequestResponseMessage.forIndividual(address.serviceId().get(), localToRemoteType(type)); return context.getSendHelper().sendSyncMessage(SignalServiceSyncMessage.forMessageRequestResponse(response)); @@ -411,7 +415,7 @@ public class SyncHelper { } } - private MessageRequestResponseMessage.Type localToRemoteType(final MessageEnvelope.Sync.MessageRequestResponse.Type type) { + private MessageRequestResponseMessage.Type localToRemoteType(final MessageRequestResponse.Type type) { return switch (type) { case UNKNOWN -> MessageRequestResponseMessage.Type.UNKNOWN; case ACCEPT -> MessageRequestResponseMessage.Type.ACCEPT;