From 9051f68ba64163690c6c0e7bc4214cb2a2f37002 Mon Sep 17 00:00:00 2001 From: AsamK Date: Sun, 18 Feb 2024 21:26:36 +0100 Subject: [PATCH] Enable profile sharing when accepting message request --- .../asamk/signal/manager/helper/ContactHelper.java | 7 +++++++ .../org/asamk/signal/manager/helper/SyncHelper.java | 12 ++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) 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; -- 2.50.1