]> nmode's Git Repositories - signal-cli/commitdiff
Add handling for new nickname and note fields
authorAsamK <asamk@gmx.de>
Fri, 12 Apr 2024 14:57:20 +0000 (16:57 +0200)
committerAsamK <asamk@gmx.de>
Mon, 15 Apr 2024 17:23:50 +0000 (19:23 +0200)
lib/src/main/java/org/asamk/signal/manager/api/Contact.java
lib/src/main/java/org/asamk/signal/manager/storage/AccountDatabase.java
lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java
lib/src/main/java/org/asamk/signal/manager/storage/recipients/LegacyRecipientStore2.java
lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java
lib/src/main/java/org/asamk/signal/manager/syncStorage/ContactRecordProcessor.java
lib/src/main/java/org/asamk/signal/manager/syncStorage/StorageSyncModels.java
src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java

index cfe3f89492ffd06b46ea947a433b10b1a64a578a..3605b7c57a7a3fd9e2efb440c6410a8d28b4188e 100644 (file)
@@ -6,6 +6,9 @@ public record Contact(
         String givenName,
         String familyName,
         String nickName,
+        String nickNameGivenName,
+        String nickNameFamilyName,
+        String note,
         String color,
         int messageExpirationTime,
         long muteUntil,
@@ -21,6 +24,9 @@ public record Contact(
         this(builder.givenName,
                 builder.familyName,
                 builder.nickName,
+                builder.nickNameGivenName,
+                builder.nickNameFamilyName,
+                builder.note,
                 builder.color,
                 builder.messageExpirationTime,
                 builder.muteUntil,
@@ -73,6 +79,9 @@ public record Contact(
         private String givenName;
         private String familyName;
         private String nickName;
+        private String nickNameGivenName;
+        private String nickNameFamilyName;
+        private String note;
         private String color;
         private int messageExpirationTime;
         private long muteUntil;
@@ -105,6 +114,21 @@ public record Contact(
             return this;
         }
 
+        public Builder withNickNameGivenName(final String val) {
+            nickNameGivenName = val;
+            return this;
+        }
+
+        public Builder withNickNameFamilyName(final String val) {
+            nickNameFamilyName = val;
+            return this;
+        }
+
+        public Builder withNote(final String val) {
+            note = val;
+            return this;
+        }
+
         public Builder withColor(final String val) {
             color = val;
             return this;
index af4983590e2aed50b51ff04f4a951a8d4b85d427..bf751fbca1b226f72eaccf5df8a9ad4c8deae92c 100644 (file)
@@ -33,7 +33,7 @@ import java.util.UUID;
 public class AccountDatabase extends Database {
 
     private static final Logger logger = LoggerFactory.getLogger(AccountDatabase.class);
-    private static final long DATABASE_VERSION = 24;
+    private static final long DATABASE_VERSION = 25;
 
     private AccountDatabase(final HikariDataSource dataSource) {
         super(logger, DATABASE_VERSION, dataSource);
@@ -581,6 +581,16 @@ public class AccountDatabase extends Database {
                                         """);
             }
         }
+        if (oldVersion < 25) {
+            logger.debug("Updating database: Create nick_name and note columns");
+            try (final var statement = connection.createStatement()) {
+                statement.executeUpdate("""
+                                        ALTER TABLE recipient ADD nick_name_given_name TEXT;
+                                        ALTER TABLE recipient ADD nick_name_family_name TEXT;
+                                        ALTER TABLE recipient ADD note TEXT;
+                                        """);
+            }
+        }
     }
 
     private static void createUuidMappingTable(
index 0076f31487ad7464289c56e74a855bdb31bcdbaa..a3a98c6c1fd9d6aec492eaecd8155c473af49ee2 100644 (file)
@@ -857,6 +857,9 @@ public class SignalAccount implements Closeable {
                 final var recipientId = getRecipientStore().resolveRecipientTrusted(contact.getAddress());
                 getContactStore().storeContact(recipientId,
                         new Contact(contact.name,
+                                null,
+                                null,
+                                null,
                                 null,
                                 null,
                                 contact.color,
index 17f136ec90fda7bd0b968729e5cafb89bbbb5b37..186ac517773bbbceb38285a59ba8f04cab5cbc73 100644 (file)
@@ -39,6 +39,9 @@ public class LegacyRecipientStore2 {
                 Contact contact = null;
                 if (r.contact != null) {
                     contact = new Contact(r.contact.name,
+                            null,
+                            null,
+                            null,
                             null,
                             null,
                             r.contact.color,
index 7d47839ba6ffef77b0243da619ba7df2565c7fa7..c291342eed8ca845d75d2b950d02eaeb3b443a1a 100644 (file)
@@ -71,6 +71,9 @@ public class RecipientStore implements RecipientIdCreator, RecipientResolver, Re
                                       given_name TEXT,
                                       family_name TEXT,
                                       nick_name TEXT,
+                                      nick_name_given_name TEXT,
+                                      nick_name_family_name TEXT,
+                                      note TEXT,
                                       color TEXT,
 
                                       expiration_time INTEGER NOT NULL DEFAULT 0,
@@ -1436,6 +1439,9 @@ public class RecipientStore implements RecipientIdCreator, RecipientResolver, Re
         return new Contact(resultSet.getString("given_name"),
                 resultSet.getString("family_name"),
                 resultSet.getString("nick_name"),
+                resultSet.getString("nick_name_given_name"),
+                resultSet.getString("nick_name_family_name"),
+                resultSet.getString("note"),
                 resultSet.getString("color"),
                 resultSet.getInt("expiration_time"),
                 resultSet.getLong("mute_until"),
index cd1e107c3e40d62066e5632f469c341fe06a8547..a087553be69efc999bd2a3fa4c43a4ec3996aa70 100644 (file)
@@ -271,6 +271,9 @@ public class ContactRecordProcessor extends DefaultStorageRecordProcessor<Signal
                     .withGivenName(contactRecord.getSystemGivenName().orElse(null))
                     .withFamilyName(contactRecord.getSystemFamilyName().orElse(null))
                     .withNickName(contactRecord.getSystemNickname().orElse(null))
+                    .withNickNameGivenName(contactRecord.getNicknameGivenName().orElse(null))
+                    .withNickNameFamilyName(contactRecord.getNicknameFamilyName().orElse(null))
+                    .withNote(contactRecord.getNote().orElse(null))
                     .withUnregisteredTimestamp(contactRecord.getUnregisteredTimestamp() == 0
                             ? null
                             : contactRecord.getUnregisteredTimestamp());
index 92ea4222b4631eb79cc526a0e4afc970cce9b431..16733bee7ad34fd82e021e88b634ddf09bd9a566 100644 (file)
@@ -97,6 +97,9 @@ public final class StorageSyncModels {
             builder.setSystemGivenName(recipient.getContact().givenName())
                     .setSystemFamilyName(recipient.getContact().familyName())
                     .setSystemNickname(recipient.getContact().nickName())
+                    .setNicknameGivenName(recipient.getContact().nickNameGivenName())
+                    .setNicknameFamilyName(recipient.getContact().nickNameFamilyName())
+                    .setNote(recipient.getContact().note())
                     .setBlocked(recipient.getContact().isBlocked())
                     .setProfileSharingEnabled(recipient.getContact().isProfileSharingEnabled())
                     .setMuteUntil(recipient.getContact().muteUntil())
index cd65be5105fd1ff78117f27b06ac52a3698bfe26..b428fb32522afe87a09d667df41ffa5811910fe5 100644 (file)
@@ -692,6 +692,9 @@ public class DbusManagerImpl implements Manager {
             return Recipient.newBuilder()
                     .withAddress(new RecipientAddress(null, n))
                     .withContact(new Contact(contactName,
+                            null,
+                            null,
+                            null,
                             null,
                             null,
                             null,