Try to load manager in MultiAccountManager if it doesn't exist yet

This commit is contained in:
AsamK 2025-09-23 18:21:13 +02:00
parent 96ec6624c5
commit af0f4a6b01
2 changed files with 19 additions and 3 deletions

View File

@ -925,7 +925,7 @@
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.String"] }, {"name":"captcha","parameterTypes":[] }, {"name":"voice","parameterTypes":[] }]
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.String"] }, {"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.String","java.lang.Boolean"] }, {"name":"captcha","parameterTypes":[] }, {"name":"voice","parameterTypes":[] }]
},
{
"name":"org.asamk.signal.commands.StartLinkCommand$JsonLink",

View File

@ -5,6 +5,8 @@ import org.asamk.signal.manager.MultiAccountManager;
import org.asamk.signal.manager.ProvisioningManager;
import org.asamk.signal.manager.RegistrationManager;
import org.asamk.signal.manager.SignalAccountFiles;
import org.asamk.signal.manager.api.AccountCheckException;
import org.asamk.signal.manager.api.NotRegisteredException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -50,7 +52,7 @@ public class MultiAccountManagerImpl implements MultiAccountManager {
}
}
void addManager(final Manager m) {
private void addManager(final Manager m) {
synchronized (managers) {
if (managers.contains(m)) {
return;
@ -95,7 +97,21 @@ public class MultiAccountManagerImpl implements MultiAccountManager {
@Override
public Manager getManager(final String number) {
synchronized (managers) {
return managers.stream().filter(m -> m.getSelfNumber().equals(number)).findFirst().orElse(null);
final var manager = managers.stream()
.filter(m -> m.getSelfNumber().equals(number))
.findFirst()
.orElse(null);
if (manager != null) {
return manager;
}
try {
final var newManager = signalAccountFiles.initManager(number);
managers.add(newManager);
return newManager;
} catch (IOException | NotRegisteredException | AccountCheckException e) {
logger.warn("Failed to load new manager", e);
return null;
}
}
}