}
public void updateAccountAttributes() throws IOException {
- accountManager.setAccountAttributes(account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, account.getRegistrationLockPin(), getSelfUnidentifiedAccessKey(), false);
+ accountManager.setAccountAttributes(account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, account.getRegistrationLockPin(), account.getRegistrationLock(), getSelfUnidentifiedAccessKey(), false);
}
public void setProfileName(String name) throws IOException {
verificationCode = verificationCode.replace("-", "");
account.setSignalingKey(KeyUtils.createSignalingKey());
// TODO make unrestricted unidentified access configurable
- accountManager.verifyAccountWithCode(verificationCode, account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, pin, getSelfUnidentifiedAccessKey(), false);
+ accountManager.verifyAccountWithCode(verificationCode, account.getSignalingKey(), account.getSignalProtocolStore().getLocalRegistrationId(), true, pin, null, getSelfUnidentifiedAccessKey(), false);
//accountManager.setGcmId(Optional.of(GoogleCloudMessaging.getInstance(this).register(REGISTRATION_ID)));
account.setRegistered(true);
}
public void setRegistrationLockPin(Optional<String> pin) throws IOException {
- accountManager.setPin(pin);
if (pin.isPresent()) {
account.setRegistrationLockPin(pin.get());
+ throw new RuntimeException("Not implemented anymore, will be replaced with KBS");
} else {
account.setRegistrationLockPin(null);
+ accountManager.removeV1Pin();
}
account.save();
}
sendMessageLegacy(messageBuilder, membersSend);
}
+ public void sendGroupMessageReaction(String emoji, boolean remove, SignalServiceAddress targetAuthor,
+ long targetSentTimestamp, byte[] groupId)
+ throws IOException, EncapsulatedExceptions, AttachmentInvalidException {
+ SignalServiceDataMessage.Reaction reaction = new SignalServiceDataMessage.Reaction(emoji, remove, targetAuthor, targetSentTimestamp);
+ final SignalServiceDataMessage.Builder messageBuilder = SignalServiceDataMessage.newBuilder()
+ .withReaction(reaction)
+ .withProfileKey(account.getProfileKey());
+ if (groupId != null) {
+ SignalServiceGroup group = SignalServiceGroup.newBuilder(SignalServiceGroup.Type.DELIVER)
+ .withId(groupId)
+ .build();
+ messageBuilder.asGroupMessage(group);
+ }
+ final GroupInfo g = getGroupForSending(groupId);
+ // Don't send group message to ourself
+ final List<String> membersSend = new ArrayList<>(g.members);
+ membersSend.remove(this.username);
+ sendMessageLegacy(messageBuilder, membersSend);
+ }
+
public void sendQuitGroupMessage(byte[] groupId) throws GroupNotFoundException, IOException, EncapsulatedExceptions {
SignalServiceGroup group = SignalServiceGroup.newBuilder(SignalServiceGroup.Type.QUIT)
.withId(groupId)
sendMessageLegacy(messageBuilder, recipients);
}
+ public void sendMessageReaction(String emoji, boolean remove, SignalServiceAddress targetAuthor,
+ long targetSentTimestamp, List<String> recipients)
+ throws IOException, EncapsulatedExceptions, AttachmentInvalidException {
+ SignalServiceDataMessage.Reaction reaction = new SignalServiceDataMessage.Reaction(emoji, remove, targetAuthor, targetSentTimestamp);
+ final SignalServiceDataMessage.Builder messageBuilder = SignalServiceDataMessage.newBuilder()
+ .withReaction(reaction)
+ .withProfileKey(account.getProfileKey());
+ sendMessageLegacy(messageBuilder, recipients);
+ }
+
@Override
public void sendEndSessionMessage(List<String> recipients) throws IOException, EncapsulatedExceptions {
SignalServiceDataMessage.Builder messageBuilder = SignalServiceDataMessage.newBuilder()
if (g.getAvatar().isPresent()) {
retrieveGroupAvatarAttachment(g.getAvatar().get(), syncGroup.groupId);
}
+ syncGroup.inboxPosition = g.getInboxPosition().orNull();
+ syncGroup.archived = g.isArchived();
account.getGroupStore().updateGroup(syncGroup);
}
}
account.getThreadStore().updateThread(thread);
}
contact.blocked = c.isBlocked();
+ contact.inboxPosition = c.getInboxPosition().orNull();
+ contact.archived = c.isArchived();
account.getContactStore().updateContact(contact);
if (c.getAvatar().isPresent()) {
out.write(new DeviceGroup(record.groupId, Optional.fromNullable(record.name),
new ArrayList<>(record.getMembers()), createGroupAvatarAttachment(record.groupId),
record.active, Optional.fromNullable(info != null ? info.messageExpirationTime : null),
- Optional.fromNullable(record.color), record.blocked));
+ Optional.fromNullable(record.color), record.blocked, Optional.fromNullable(record.inboxPosition), record.archived));
}
}
out.write(new DeviceContact(record.getAddress(), Optional.fromNullable(record.name),
createContactAvatarAttachment(record.number), Optional.fromNullable(record.color),
Optional.fromNullable(verifiedMessage), Optional.fromNullable(profileKey), record.blocked,
- Optional.fromNullable(info != null ? info.messageExpirationTime : null)));
+ Optional.fromNullable(info != null ? info.messageExpirationTime : null),
+ Optional.fromNullable(record.inboxPosition), record.archived));
}
if (account.getProfileKey() != null) {
Optional.<String>absent(), Optional.<SignalServiceAttachmentStream>absent(),
Optional.<String>absent(), Optional.<VerifiedMessage>absent(),
Optional.of(account.getProfileKey()),
- false, Optional.<Integer>absent()));
+ false, Optional.<Integer>absent(), Optional.<Integer>absent(), false));
}
}