X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/9a1b348ed2d31ac63bf0ef6f64ad92a2f16d173c..a69e8facd2efdfd29bcb128c76573adb62431f1f:/src/main/java/cli/Manager.java?ds=sidebyside diff --git a/src/main/java/cli/Manager.java b/src/main/java/cli/Manager.java index b15457af..3b11d7b4 100644 --- a/src/main/java/cli/Manager.java +++ b/src/main/java/cli/Manager.java @@ -136,7 +136,7 @@ class Manager implements TextSecure { accountManager = new TextSecureAccountManager(URL, TRUST_STORE, username, password, USER_AGENT); } - public void save() { + private void save() { ObjectNode rootNode = jsonProcessot.createObjectNode(); rootNode.put("username", username) .put("password", password) @@ -160,6 +160,7 @@ class Manager implements TextSecure { axolotlStore = new JsonAxolotlStore(identityKey, registrationId); groupStore = new JsonGroupStore(); registered = false; + save(); } public boolean isRegistered() { @@ -177,6 +178,7 @@ class Manager implements TextSecure { accountManager.requestSmsVerificationCode(); registered = false; + save(); } private static final int BATCH_SIZE = 100; @@ -194,6 +196,8 @@ class Manager implements TextSecure { } preKeyIdOffset = (preKeyIdOffset + BATCH_SIZE + 1) % Medium.MAX_VALUE; + save(); + return records; } @@ -210,6 +214,7 @@ class Manager implements TextSecure { PreKeyRecord record = new PreKeyRecord(Medium.MAX_VALUE, keyPair); axolotlStore.storePreKey(Medium.MAX_VALUE, record); + save(); return record; } @@ -222,6 +227,7 @@ class Manager implements TextSecure { axolotlStore.storeSignedPreKey(nextSignedPreKeyId, record); nextSignedPreKeyId = (nextSignedPreKeyId + 1) % Medium.MAX_VALUE; + save(); return record; } catch (InvalidKeyException e) { @@ -244,6 +250,7 @@ class Manager implements TextSecure { SignedPreKeyRecord signedPreKeyRecord = generateSignedPreKey(axolotlStore.getIdentityKeyPair()); accountManager.setPreKeys(axolotlStore.getIdentityKeyPair().getPublicKey(), lastResortKey, signedPreKeyRecord, oneTimePreKeys); + save(); } @@ -286,7 +293,7 @@ class Manager implements TextSecure { } TextSecureDataMessage message = messageBuilder.build(); - sendMessage(message, getGroupInfo(groupId).members); + sendMessage(message, groupStore.getGroup(groupId).members); } public void sendQuitGroupMessage(byte[] groupId) throws GroupNotFoundException, IOException, EncapsulatedExceptions { @@ -298,7 +305,7 @@ class Manager implements TextSecure { .asGroupMessage(group) .build(); - sendMessage(message, getGroupInfo(groupId).members); + sendMessage(message, groupStore.getGroup(groupId).members); } public byte[] sendUpdateGroupMessage(byte[] groupId, String name, Collection members, String avatarFile) throws IOException, EncapsulatedExceptions, GroupNotFoundException, AttachmentInvalidException { @@ -308,7 +315,7 @@ class Manager implements TextSecure { g = new GroupInfo(Util.getSecretBytes(16)); g.members.add(username); } else { - g = getGroupInfo(groupId); + g = groupStore.getGroup(groupId); } if (name != null) { @@ -342,7 +349,7 @@ class Manager implements TextSecure { } } - setGroupInfo(g); + groupStore.updateGroup(g); TextSecureDataMessage message = TextSecureDataMessage.newBuilder() .asGroupMessage(group.build()) @@ -392,6 +399,7 @@ class Manager implements TextSecure { } catch (InvalidNumberException e) { System.err.println("Failed to add recipient \"" + recipient + "\": " + e.getMessage()); System.err.println("Aborting sending."); + save(); return; } } @@ -584,14 +592,6 @@ class Manager implements TextSecure { return new TextSecureAddress(e164number); } - private GroupInfo getGroupInfo(byte[] groupId) throws GroupNotFoundException { - return groupStore.getGroup(groupId); - } - - private void setGroupInfo(GroupInfo group) { - groupStore.updateGroup(group); - } - @Override public boolean isRemote() { return false;