From: AsamK Date: Sun, 14 Jan 2024 10:42:48 +0000 (+0100) Subject: Update libsignal-service-java X-Git-Tag: v0.13.0~53 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/be9efb9a25ab99bf28371dbbf91e9223cd2eaf92?ds=sidebyside Update libsignal-service-java --- diff --git a/lib/src/main/java/org/asamk/signal/manager/api/MessageEnvelope.java b/lib/src/main/java/org/asamk/signal/manager/api/MessageEnvelope.java index dc157fe6..c964281f 100644 --- a/lib/src/main/java/org/asamk/signal/manager/api/MessageEnvelope.java +++ b/lib/src/main/java/org/asamk/signal/manager/api/MessageEnvelope.java @@ -716,7 +716,6 @@ public record MessageEnvelope( Optional busy, List iceUpdate, Optional opaque, - boolean isMultiRing, boolean isUrgent ) { @@ -732,17 +731,13 @@ public record MessageEnvelope( .map(m -> m.stream().map(IceUpdate::from).toList()) .orElse(List.of()), callMessage.getOpaqueMessage().map(Opaque::from), - callMessage.isMultiRing(), callMessage.isUrgent()); } - public record Offer(long id, String sdp, Type type, byte[] opaque) { + public record Offer(long id, Type type, byte[] opaque) { static Offer from(OfferMessage offerMessage) { - return new Offer(offerMessage.getId(), - offerMessage.getSdp(), - Type.from(offerMessage.getType()), - offerMessage.getOpaque()); + return new Offer(offerMessage.getId(), Type.from(offerMessage.getType()), offerMessage.getOpaque()); } public enum Type { @@ -758,10 +753,10 @@ public record MessageEnvelope( } } - public record Answer(long id, String sdp, byte[] opaque) { + public record Answer(long id, byte[] opaque) { static Answer from(AnswerMessage answerMessage) { - return new Answer(answerMessage.getId(), answerMessage.getSdp(), answerMessage.getOpaque()); + return new Answer(answerMessage.getId(), answerMessage.getOpaque()); } } @@ -799,10 +794,10 @@ public record MessageEnvelope( } } - public record IceUpdate(long id, String sdp, byte[] opaque) { + public record IceUpdate(long id, byte[] opaque) { static IceUpdate from(IceUpdateMessage iceUpdateMessage) { - return new IceUpdate(iceUpdateMessage.getId(), iceUpdateMessage.getSdp(), iceUpdateMessage.getOpaque()); + return new IceUpdate(iceUpdateMessage.getId(), iceUpdateMessage.getOpaque()); } } diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java index d49ab67a..c83dde25 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java @@ -320,7 +320,11 @@ public class AccountHelper { if (currentUsername != null) { final var currentNickname = currentUsername.substring(0, currentUsername.indexOf('.')); if (currentNickname.equals(nickname)) { - refreshCurrentUsername(); + try { + refreshCurrentUsername(); + } catch (IOException | BaseUsernameException e) { + logger.warn("[reserveUsername] Failed to refresh current username, trying to claim new username"); + } return; } } @@ -341,11 +345,11 @@ public class AccountHelper { logger.debug("[reserveUsername] Successfully reserved username."); final var username = candidates.get(hashIndex); - dependencies.getAccountManager().confirmUsername(username.getUsername(), response); + final var linkComponents = dependencies.getAccountManager().confirmUsernameAndCreateNewLink(username); account.setUsername(username.getUsername()); + account.setUsernameLink(linkComponents); account.getRecipientStore().resolveSelfRecipientTrusted(account.getSelfRecipientAddress()); logger.debug("[confirmUsername] Successfully confirmed username."); - tryToSetUsernameLink(username); } public void refreshCurrentUsername() throws IOException, BaseUsernameException { @@ -386,12 +390,20 @@ public class AccountHelper { } private void tryReserveConfirmUsername(final Username username) throws IOException { - final var response = dependencies.getAccountManager() - .reserveUsername(List.of(Base64.encodeUrlSafeWithoutPadding(username.getHash()))); - logger.debug("[reserveUsername] Successfully reserved existing username."); - dependencies.getAccountManager().confirmUsername(username.getUsername(), response); - logger.debug("[confirmUsername] Successfully confirmed existing username."); - tryToSetUsernameLink(username); + final var usernameLink = account.getUsernameLink(); + + if (usernameLink == null) { + dependencies.getAccountManager() + .reserveUsername(List.of(Base64.encodeUrlSafeWithoutPadding(username.getHash()))); + logger.debug("[reserveUsername] Successfully reserved existing username."); + final var linkComponents = dependencies.getAccountManager().confirmUsernameAndCreateNewLink(username); + account.setUsernameLink(linkComponents); + logger.debug("[confirmUsername] Successfully confirmed existing username."); + } else { + final var linkComponents = dependencies.getAccountManager().reclaimUsernameAndLink(username, usernameLink); + account.setUsernameLink(linkComponents); + logger.debug("[confirmUsername] Successfully reclaimed existing username and link."); + } } private void tryToSetUsernameLink(Username username) { diff --git a/settings.gradle.kts b/settings.gradle.kts index c6d4cdb4..831c1188 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -15,8 +15,7 @@ dependencyResolutionManagement { library("slf4j.jul", "org.slf4j", "jul-to-slf4j").versionRef("slf4j") library("logback", "ch.qos.logback", "logback-classic").version("1.4.14") - - library("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_91") + library("signalservice", "com.github.turasa", "signal-service-java").version("2.15.3_unofficial_92") library("sqlite", "org.xerial", "sqlite-jdbc").version("3.44.1.0") library("hikari", "com.zaxxer", "HikariCP").version("5.1.0") library("junit.jupiter", "org.junit.jupiter", "junit-jupiter").version("5.10.1") diff --git a/src/main/java/org/asamk/signal/ReceiveMessageHandler.java b/src/main/java/org/asamk/signal/ReceiveMessageHandler.java index ef7a8359..f6eb660e 100644 --- a/src/main/java/org/asamk/signal/ReceiveMessageHandler.java +++ b/src/main/java/org/asamk/signal/ReceiveMessageHandler.java @@ -273,7 +273,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { } if (callMessage.answer().isPresent()) { var answerMessage = callMessage.answer().get(); - writer.println("Answer message: {}, sdp: {})", answerMessage.id(), answerMessage.sdp()); + writer.println("Answer message: {}, opaque length: {})", answerMessage.id(), answerMessage.opaque().length); } if (callMessage.busy().isPresent()) { var busyMessage = callMessage.busy().get(); @@ -287,12 +287,12 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { writer.println("Ice update messages:"); var iceUpdateMessages = callMessage.iceUpdate(); for (var iceUpdateMessage : iceUpdateMessages) { - writer.println("- {}, sdp: {}", iceUpdateMessage.id(), iceUpdateMessage.sdp()); + writer.println("- {}, opaque length: {}", iceUpdateMessage.id(), iceUpdateMessage.opaque().length); } } if (callMessage.offer().isPresent()) { var offerMessage = callMessage.offer().get(); - writer.println("Offer message: {}, sdp: {}", offerMessage.id(), offerMessage.sdp()); + writer.println("Offer message: {}, opaque length: {}", offerMessage.id(), offerMessage.opaque().length); } if (callMessage.opaque().isPresent()) { final var opaqueMessage = callMessage.opaque().get(); diff --git a/src/main/java/org/asamk/signal/json/JsonCallMessage.java b/src/main/java/org/asamk/signal/json/JsonCallMessage.java index 3438cf39..1b1bc2ba 100644 --- a/src/main/java/org/asamk/signal/json/JsonCallMessage.java +++ b/src/main/java/org/asamk/signal/json/JsonCallMessage.java @@ -23,20 +23,17 @@ record JsonCallMessage( callMessage.iceUpdate().stream().map(IceUpdate::from).toList()); } - record Offer(long id, String sdp, String type, String opaque) { + record Offer(long id, String type, String opaque) { public static Offer from(final MessageEnvelope.Call.Offer offer) { - return new Offer(offer.id(), - offer.sdp(), - offer.type().name(), - Base64.getEncoder().encodeToString(offer.opaque())); + return new Offer(offer.id(), offer.type().name(), Base64.getEncoder().encodeToString(offer.opaque())); } } - public record Answer(long id, String sdp, String opaque) { + public record Answer(long id, String opaque) { public static Answer from(final MessageEnvelope.Call.Answer answer) { - return new Answer(answer.id(), answer.sdp(), Base64.getEncoder().encodeToString(answer.opaque())); + return new Answer(answer.id(), Base64.getEncoder().encodeToString(answer.opaque())); } } @@ -54,12 +51,10 @@ record JsonCallMessage( } } - public record IceUpdate(long id, String sdp, String opaque) { + public record IceUpdate(long id, String opaque) { public static IceUpdate from(final MessageEnvelope.Call.IceUpdate iceUpdate) { - return new IceUpdate(iceUpdate.id(), - iceUpdate.sdp(), - Base64.getEncoder().encodeToString(iceUpdate.opaque())); + return new IceUpdate(iceUpdate.id(), Base64.getEncoder().encodeToString(iceUpdate.opaque())); } } }