]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/manager/helper/ProfileHelper.java
Make loggers private
[signal-cli] / src / main / java / org / asamk / signal / manager / helper / ProfileHelper.java
index c81e2ff7f9c95e108ea5e250990c0d70d42f1093..60c47d8b93a060f6aece2d97c600907dcf306415 100644 (file)
@@ -95,7 +95,17 @@ public final class ProfileHelper {
                 ? unidentifiedPipe
                 : messagePipeProvider.getMessagePipe(false);
         if (pipe != null) {
-            return pipe.getProfile(address, profileKey, unidentifiedAccess, requestType);
+            try {
+                return pipe.getProfile(address, profileKey, unidentifiedAccess, requestType);
+            } catch (NoClassDefFoundError e) {
+                // Native zkgroup lib not available for ProfileKey
+                if (!address.getNumber().isPresent()) {
+                    throw new NotFoundException("Can't request profile without number");
+                }
+                SignalServiceAddress addressWithoutUuid = new SignalServiceAddress(Optional.absent(),
+                        address.getNumber());
+                return pipe.getProfile(addressWithoutUuid, profileKey, unidentifiedAccess, requestType);
+            }
         }
 
         throw new IOException("No pipe available!");
@@ -106,9 +116,18 @@ public final class ProfileHelper {
             Optional<ProfileKey> profileKey,
             Optional<UnidentifiedAccess> unidentifiedAccess,
             SignalServiceProfile.RequestType requestType
-    ) {
+    ) throws NotFoundException {
         SignalServiceMessageReceiver receiver = messageReceiverProvider.getMessageReceiver();
-        return receiver.retrieveProfile(address, profileKey, unidentifiedAccess, requestType);
+        try {
+            return receiver.retrieveProfile(address, profileKey, unidentifiedAccess, requestType);
+        } catch (NoClassDefFoundError e) {
+            // Native zkgroup lib not available for ProfileKey
+            if (!address.getNumber().isPresent()) {
+                throw new NotFoundException("Can't request profile without number");
+            }
+            SignalServiceAddress addressWithoutUuid = new SignalServiceAddress(Optional.absent(), address.getNumber());
+            return receiver.retrieveProfile(addressWithoutUuid, profileKey, unidentifiedAccess, requestType);
+        }
     }
 
     private Optional<UnidentifiedAccess> getUnidentifiedAccess(SignalServiceAddress recipient) {