]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java
Implement SignalServiceAccountDataStore for PNI
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / IncomingMessageHandler.java
index 579d76e41d71dc4feac508c697538b30dd0b62b0..89ff3e702f9bac3d235828620a00043b2dfbac84 100644 (file)
@@ -214,6 +214,7 @@ public final class IncomingMessageHandler {
         final var senderPair = getSender(envelope, content);
         final var sender = senderPair.first();
         final var senderDeviceId = senderPair.second();
+        final var destination = getDestination(envelope);
 
         if (content.getReceiptMessage().isPresent()) {
             final var message = content.getReceiptMessage().get();
@@ -274,7 +275,7 @@ public final class IncomingMessageHandler {
             actions.addAll(handleSignalServiceDataMessage(message,
                     false,
                     sender,
-                    account.getSelfRecipientId(),
+                    destination,
                     receiveConfig.ignoreAttachments()));
         }
 
@@ -305,13 +306,14 @@ public final class IncomingMessageHandler {
         }
 
         if (message.getRatchetKey().isPresent()) {
-            if (account.getSessionStore().isCurrentRatchetKey(sender, senderDeviceId, message.getRatchetKey().get())) {
+            if (account.getAciSessionStore()
+                    .isCurrentRatchetKey(sender, senderDeviceId, message.getRatchetKey().get())) {
                 if (logEntries.isEmpty()) {
                     logger.debug("Renewing the session with sender");
                     actions.add(new RenewSessionAction(sender));
                 } else {
                     logger.trace("Archiving the session with sender, a resend message has already been queued");
-                    context.getAccount().getSessionStore().archiveSessions(sender);
+                    context.getAccount().getAciSessionStore().archiveSessions(sender);
                 }
             }
             return;
@@ -641,7 +643,7 @@ public final class IncomingMessageHandler {
 
         final var conversationPartnerAddress = isSync ? destination : source;
         if (conversationPartnerAddress != null && message.isEndSession()) {
-            account.getSessionStore().deleteAllSessions(conversationPartnerAddress);
+            account.getAciSessionStore().deleteAllSessions(conversationPartnerAddress);
         }
         if (message.isExpirationUpdate() || message.getBody().isPresent()) {
             if (message.getGroupContext().isPresent()) {
@@ -776,4 +778,15 @@ public final class IncomingMessageHandler {
                     content.getSenderDevice());
         }
     }
+
+    private RecipientId getDestination(SignalServiceEnvelope envelope) {
+        if (!envelope.hasDestinationUuid()) {
+            return account.getSelfRecipientId();
+        }
+        final var addressOptional = SignalServiceAddress.fromRaw(envelope.getDestinationUuid(), null);
+        if (addressOptional.isEmpty()) {
+            return account.getSelfRecipientId();
+        }
+        return context.getRecipientHelper().resolveRecipient(addressOptional.get());
+    }
 }