try {
context.getPreKeyHelper().refreshPreKeysIfNecessary();
if (account.getAci() == null) {
- final var aci = ACI.parseOrNull(dependencies.getAccountManager().getWhoAmI().getAci());
- account.setAci(aci);
- context.getAccountFileUpdater().updateAccountIdentifiers(account.getNumber(), aci);
+ checkWhoAmiI();
}
updateAccountAttributes();
} catch (AuthorizationFailedException e) {
}
}
+ public void checkWhoAmiI() throws IOException {
+ final var whoAmI = dependencies.getAccountManager().getWhoAmI();
+ final var number = whoAmI.getNumber();
+ final var aci = ACI.parseOrNull(whoAmI.getAci());
+ if (number.equals(account.getNumber()) && aci.equals(account.getAci())) {
+ return;
+ }
+
+ updateSelfIdentifiers(number, aci);
+ }
+
+ private void updateSelfIdentifiers(final String number, final ACI aci) {
+ account.setNumber(number);
+ account.setAci(aci);
+ account.getRecipientStore().resolveRecipientTrusted(account.getSelfRecipientAddress());
+ context.getAccountFileUpdater().updateAccountIdentifiers(account.getNumber(), account.getAci());
+ // TODO check and update remote storage
+ context.getUnidentifiedAccessHelper().rotateSenderCertificates();
+ dependencies.getSignalWebSocket().forceNewWebSockets();
+ }
+
public void setDeviceName(String deviceName) {
final var privateKey = account.getIdentityKeyPair().getPrivateKey();
final var encryptedDeviceName = DeviceNameUtil.encryptDeviceName(deviceName, privateKey);