- for (final var number : unregisteredUsers) {
- final var recipient = findByNumber(connection, number);
- if (recipient.isPresent()) {
- final var recipientId = recipient.get().id();
- markUnregisteredAndSplitIfNecessary(connection, recipientId);
+ for (final var number : numbers) {
+ final var recipientAddress = findByNumber(connection, number);
+ if (recipientAddress.isPresent()) {
+ final var recipientId = recipientAddress.get().id();
+ markDiscoverable(connection, recipientId, false);
+ final var contact = getContact(connection, recipientId);
+ if (recipientAddress.get().address().aci().isEmpty() || contact.unregisteredTimestamp() != null) {
+ markUnregisteredAndSplitIfNecessary(connection, recipientId);
+ }
+ }
+ }
+ connection.commit();
+ } catch (SQLException e) {
+ throw new RuntimeException("Failed update recipient store", e);
+ }
+ }
+
+ public void markDiscoverable(final Set<String> numbers) {
+ logger.debug("Marking {} numbers as discoverable", numbers.size());
+ try (final var connection = database.getConnection()) {
+ connection.setAutoCommit(false);
+ for (final var number : numbers) {
+ final var recipientAddress = findByNumber(connection, number);
+ if (recipientAddress.isPresent()) {
+ final var recipientId = recipientAddress.get().id();
+ markDiscoverable(connection, recipientId, true);