diff --git a/graalvm-config-dir/jni-config.json b/graalvm-config-dir/jni-config.json index f9af0df1..77951d19 100644 --- a/graalvm-config-dir/jni-config.json +++ b/graalvm-config-dir/jni-config.json @@ -139,6 +139,10 @@ { "name":"org.signal.libsignal.net.ChatService$ResponseAndDebugInfo" }, +{ + "name":"org.signal.libsignal.net.ChatServiceException", + "methods":[{"name":"","parameterTypes":["java.lang.String"] }] +}, { "name":"org.signal.libsignal.net.DeviceDeregisteredException", "methods":[{"name":"","parameterTypes":["java.lang.String"] }] diff --git a/graalvm-config-dir/reflect-config.json b/graalvm-config-dir/reflect-config.json index 32dcbf16..7ea62b47 100644 --- a/graalvm-config-dir/reflect-config.json +++ b/graalvm-config-dir/reflect-config.json @@ -296,6 +296,11 @@ "allDeclaredConstructors":true, "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] }, +{ + "name":"java.lang.NullPointerException", + "queryAllPublicConstructors":true, + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"java.lang.Number", "allDeclaredFields":true, @@ -3063,7 +3068,6 @@ { "name":"org.whispersystems.signalservice.internal.storage.protos.AccountRecord", "allDeclaredFields":true, - "fields":[{"name":"avatarColor"}, {"name":"avatarUrlPath"}, {"name":"backupSubscriberData"}, {"name":"backupTier"}, {"name":"backupTierHistory"}, {"name":"displayBadgesOnProfile"}, {"name":"familyName"}, {"name":"givenName"}, {"name":"hasBackup"}, {"name":"hasCompletedUsernameOnboarding"}, {"name":"hasSeenGroupStoryEducationSheet"}, {"name":"hasSetMyStoriesPrivacy"}, {"name":"hasViewedOnboardingStory"}, {"name":"keepMutedChatsArchived"}, {"name":"linkPreviews"}, {"name":"noteToSelfArchived"}, {"name":"noteToSelfMarkedUnread"}, {"name":"notificationProfileManualOverride"}, {"name":"payments"}, {"name":"phoneNumberSharingMode"}, {"name":"pinnedConversations"}, {"name":"preferContactAvatars"}, {"name":"preferredReactionEmoji"}, {"name":"primarySendsSms"}, {"name":"profileKey"}, {"name":"readReceipts"}, {"name":"sealedSenderIndicators"}, {"name":"storiesDisabled"}, {"name":"storyViewReceiptsEnabled"}, {"name":"subscriberCurrencyCode"}, {"name":"subscriberId"}, {"name":"subscriptionManuallyCancelled"}, {"name":"typingIndicators"}, {"name":"universalExpireTimer"}, {"name":"unlistedPhoneNumber"}, {"name":"username"}, {"name":"usernameLink"}], "methods":[{"name":"adapter","parameterTypes":[] }, {"name":"unknownFields","parameterTypes":[] }] }, { @@ -3102,7 +3106,6 @@ { "name":"org.whispersystems.signalservice.internal.storage.protos.ContactRecord", "allDeclaredFields":true, - "fields":[{"name":"aci"}, {"name":"archived"}, {"name":"avatarColor"}, {"name":"blocked"}, {"name":"e164"}, {"name":"familyName"}, {"name":"givenName"}, {"name":"hidden"}, {"name":"hideStory"}, {"name":"identityKey"}, {"name":"identityState"}, {"name":"markedUnread"}, {"name":"mutedUntilTimestamp"}, {"name":"nickname"}, {"name":"note"}, {"name":"pni"}, {"name":"pniSignatureVerified"}, {"name":"profileKey"}, {"name":"systemFamilyName"}, {"name":"systemGivenName"}, {"name":"systemNickname"}, {"name":"unregisteredAtTimestamp"}, {"name":"username"}, {"name":"whitelisted"}], "methods":[{"name":"adapter","parameterTypes":[] }, {"name":"unknownFields","parameterTypes":[] }] }, { diff --git a/lib/src/main/java/org/asamk/signal/manager/SignalAccountFiles.java b/lib/src/main/java/org/asamk/signal/manager/SignalAccountFiles.java index cd0b5a21..82b73495 100644 --- a/lib/src/main/java/org/asamk/signal/manager/SignalAccountFiles.java +++ b/lib/src/main/java/org/asamk/signal/manager/SignalAccountFiles.java @@ -64,7 +64,7 @@ public class SignalAccountFiles { return accountsStore.getAllNumbers(); } - public MultiAccountManager initMultiAccountManager() throws IOException, AccountCheckException { + public MultiAccountManager initMultiAccountManager() throws IOException { final var managerPairs = accountsStore.getAllAccounts().parallelStream().map(a -> { try { return new Pair(initManager(a.number(), a.path()), null); @@ -80,12 +80,13 @@ public class SignalAccountFiles { for (final var pair : managerPairs) { if (pair.second() instanceof IOException e) { throw e; - } else if (pair.second() instanceof AccountCheckException e) { - throw e; } } - final var managers = managerPairs.stream().map(Pair::first).toList(); + final var managers = managerPairs.stream() + .filter(p -> p != null && p.first() != null) + .map(Pair::first) + .toList(); return new MultiAccountManagerImpl(managers, this); } @@ -132,7 +133,7 @@ public class SignalAccountFiles { manager.checkAccountState(); } catch (DeprecatedVersionException e) { manager.close(); - throw new AccountCheckException("signal-cli version is too old for the Signal-Server, please update."); + throw new IOException("signal-cli version is too old for the Signal-Server, please update."); } catch (IOException e) { manager.close(); throw new AccountCheckException("Error while checking account " + number + ": " + e.getMessage(), e); diff --git a/src/main/java/org/asamk/signal/App.java b/src/main/java/org/asamk/signal/App.java index 6352aa13..e494d201 100644 --- a/src/main/java/org/asamk/signal/App.java +++ b/src/main/java/org/asamk/signal/App.java @@ -291,8 +291,6 @@ public class App { commandHandler.handleMultiLocalCommand(command, multiAccountManager); } catch (IOException e) { throw new IOErrorException("Failed to load local accounts file", e); - } catch (AccountCheckException e) { - throw new UnexpectedErrorException("Failed to load account file", e); } }