From 5ff66728e32237a23fdffda4515031d24dad7cf0 Mon Sep 17 00:00:00 2001 From: AsamK Date: Wed, 26 Jun 2024 15:35:54 +0200 Subject: [PATCH] Update libsignal-service --- graalvm-config-dir/reflect-config.json | 2 +- .../asamk/signal/manager/config/ServiceConfig.java | 11 ++++++++++- .../org/asamk/signal/manager/helper/PinHelper.java | 2 +- .../asamk/signal/manager/internal/ManagerImpl.java | 11 +++++++++-- .../signal/manager/internal/SignalDependencies.java | 3 +-- .../asamk/signal/manager/util/AttachmentUtils.java | 4 +++- settings.gradle.kts | 2 +- 7 files changed, 26 insertions(+), 9 deletions(-) diff --git a/graalvm-config-dir/reflect-config.json b/graalvm-config-dir/reflect-config.json index e17f4f64..64efa057 100644 --- a/graalvm-config-dir/reflect-config.json +++ b/graalvm-config-dir/reflect-config.json @@ -2142,7 +2142,7 @@ "allDeclaredFields":true, "allDeclaredMethods":true, "allDeclaredConstructors":true, - "methods":[{"name":"getAnnouncementGroup","parameterTypes":[] }, {"name":"getChangeNumber","parameterTypes":[] }, {"name":"getGiftBadges","parameterTypes":[] }, {"name":"getPaymentActivation","parameterTypes":[] }, {"name":"getPni","parameterTypes":[] }, {"name":"getSenderKey","parameterTypes":[] }, {"name":"getStorage","parameterTypes":[] }, {"name":"getStories","parameterTypes":[] }] + "methods":[{"name":"getAnnouncementGroup","parameterTypes":[] }, {"name":"getChangeNumber","parameterTypes":[] }, {"name":"getDeleteSync","parameterTypes":[] }, {"name":"getGiftBadges","parameterTypes":[] }, {"name":"getPaymentActivation","parameterTypes":[] }, {"name":"getPni","parameterTypes":[] }, {"name":"getSenderKey","parameterTypes":[] }, {"name":"getStorage","parameterTypes":[] }, {"name":"getStories","parameterTypes":[] }] }, { "name":"org.whispersystems.signalservice.api.account.ChangePhoneNumberRequest", diff --git a/lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java b/lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java index ea47b8a6..e827e3f5 100644 --- a/lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java +++ b/lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java @@ -30,7 +30,16 @@ public class ServiceConfig { final var giftBadges = !isPrimaryDevice; final var pni = !isPrimaryDevice; final var paymentActivation = !isPrimaryDevice; - return new AccountAttributes.Capabilities(true, true, true, true, true, giftBadges, pni, paymentActivation); + final var deleteSync = !isPrimaryDevice; + return new AccountAttributes.Capabilities(true, + true, + true, + true, + true, + giftBadges, + pni, + paymentActivation, + deleteSync); } public static ServiceEnvironmentConfig getServiceEnvironmentConfig( diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java index 0bcfe09e..cb9b9057 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/PinHelper.java @@ -105,7 +105,7 @@ public class PinHelper { public SecureValueRecovery.RestoreResponse.Success getRegistrationLockData( SecureValueRecovery secureValueRecovery, AuthCredentials authCredentials, String pin ) throws IOException, IncorrectPinException { - final var restoreResponse = secureValueRecovery.restoreDataPreRegistration(authCredentials, pin); + final var restoreResponse = secureValueRecovery.restoreDataPreRegistration(authCredentials, null, pin); switch (restoreResponse) { case SecureValueRecovery.RestoreResponse.Success s -> { diff --git a/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java index 13785a94..426429da 100644 --- a/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java @@ -92,6 +92,7 @@ import org.signal.libsignal.usernames.BaseUsernameException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.whispersystems.signalservice.api.SignalSessionLock; +import org.whispersystems.signalservice.api.messages.SignalServiceAttachment; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; import org.whispersystems.signalservice.api.messages.SignalServicePreview; import org.whispersystems.signalservice.api.messages.SignalServiceReceiptMessage; @@ -738,17 +739,23 @@ public class ManagerImpl implements Manager { private void applyMessage( final SignalServiceDataMessage.Builder messageBuilder, final Message message ) throws AttachmentInvalidException, IOException, UnregisteredRecipientException, InvalidStickerException { + final var additionalAttachments = new ArrayList(); if (message.messageText().length() > 2000) { final var messageBytes = message.messageText().getBytes(StandardCharsets.UTF_8); final var textAttachment = AttachmentUtils.createAttachmentStream(new StreamDetails(new ByteArrayInputStream( messageBytes), MimeUtils.LONG_TEXT, messageBytes.length), Optional.empty()); messageBuilder.withBody(message.messageText().substring(0, 2000)); - messageBuilder.withAttachment(context.getAttachmentHelper().uploadAttachment(textAttachment)); + additionalAttachments.add(context.getAttachmentHelper().uploadAttachment(textAttachment)); } else { messageBuilder.withBody(message.messageText()); } if (!message.attachments().isEmpty()) { - messageBuilder.withAttachments(context.getAttachmentHelper().uploadAttachments(message.attachments())); + if (!additionalAttachments.isEmpty()) { + additionalAttachments.addAll(context.getAttachmentHelper().uploadAttachments(message.attachments())); + messageBuilder.withAttachments(additionalAttachments); + } else { + messageBuilder.withAttachments(context.getAttachmentHelper().uploadAttachments(message.attachments())); + } } if (!message.mentions().isEmpty()) { messageBuilder.withMentions(resolveMentions(message.mentions())); diff --git a/lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java b/lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java index a143fceb..feb61d1c 100644 --- a/lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java +++ b/lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java @@ -197,8 +197,7 @@ public class SignalDependencies { Optional.empty(), executor, ServiceConfig.MAX_ENVELOPE_SIZE, - pushServiceSocket, - false)); + pushServiceSocket)); } public List getSecureValueRecoveryV2() { diff --git a/lib/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java b/lib/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java index 5126b691..d06d8745 100644 --- a/lib/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java +++ b/lib/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java @@ -9,6 +9,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.UUID; public class AttachmentUtils { @@ -58,6 +59,7 @@ public class AttachmentUtils { blurHash, null, null, - resumableUploadSpec); + resumableUploadSpec, + UUID.randomUUID()); } } diff --git a/settings.gradle.kts b/settings.gradle.kts index dd0e6244..d185c417 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -15,7 +15,7 @@ dependencyResolutionManagement { library("slf4j.jul", "org.slf4j", "jul-to-slf4j").versionRef("slf4j") library("logback", "ch.qos.logback", "logback-classic").version("1.5.6") - library("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_103") + library("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_104") library("sqlite", "org.xerial", "sqlite-jdbc").version("3.46.0.0") library("hikari", "com.zaxxer", "HikariCP").version("5.1.0") library("junit.jupiter", "org.junit.jupiter", "junit-jupiter").version("5.10.2") -- 2.50.1