final ServiceEnvironment serviceEnvironment,
final String userAgent,
final TrustNewIdentity trustNewIdentity
- ) {
+ ) throws IOException {
this.pathConfig = PathConfig.createDefault(settingsPath);
this.serviceEnvironmentConfig = ServiceConfig.getServiceEnvironmentConfig(serviceEnvironment, userAgent);
this.userAgent = userAgent;
}
public MultiAccountManager initMultiAccountManager() {
- final var managers = getAllLocalAccountNumbers().stream().map(a -> {
+ final var managers = accountsStore.getAllAccounts().parallelStream().map(a -> {
try {
- return initManager(a);
+ return initManager(a.number(), a.path());
} catch (NotRegisteredException | IOException | AccountCheckException e) {
- logger.warn("Ignoring {}: {} ({})", a, e.getMessage(), e.getClass().getSimpleName());
+ logger.warn("Ignoring {}: {} ({})", a.number(), e.getMessage(), e.getClass().getSimpleName());
return null;
}
}).filter(Objects::nonNull).toList();
public Manager initManager(String number) throws IOException, NotRegisteredException, AccountCheckException {
final var accountPath = accountsStore.getPathByNumber(number);
- if (accountPath == null || !SignalAccount.accountFileExists(pathConfig.dataPath(), accountPath)) {
+ return this.initManager(number, accountPath);
+ }
+
+ private Manager initManager(
+ String number, String accountPath
+ ) throws IOException, NotRegisteredException, AccountCheckException {
+ if (accountPath == null) {
+ throw new NotRegisteredException();
+ }
+ if (!SignalAccount.accountFileExists(pathConfig.dataPath(), accountPath)) {
throw new NotRegisteredException();
}
final var accountPath = accountsStore.getPathByNumber(number);
if (accountPath == null || !SignalAccount.accountFileExists(pathConfig.dataPath(), accountPath)) {
final var newAccountPath = accountPath == null ? accountsStore.addAccount(number, null) : accountPath;
- var identityKey = KeyUtils.generateIdentityKeyPair();
+ var aciIdentityKey = KeyUtils.generateIdentityKeyPair();
+ var pniIdentityKey = KeyUtils.generateIdentityKeyPair();
var registrationId = KeyHelper.generateRegistrationId(false);
var profileKey = KeyUtils.createProfileKey();
var account = SignalAccount.create(pathConfig.dataPath(),
newAccountPath,
number,
- identityKey,
+ aciIdentityKey,
+ pniIdentityKey,
registrationId,
profileKey,
trustNewIdentity);