From: AsamK Date: Fri, 12 Apr 2024 14:57:20 +0000 (+0200) Subject: Add handling for new nickname and note fields X-Git-Tag: v0.13.3~10 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/e0cd5b987e151222c7486c14d5cebeebc2ac7740 Add handling for new nickname and note fields --- diff --git a/lib/src/main/java/org/asamk/signal/manager/api/Contact.java b/lib/src/main/java/org/asamk/signal/manager/api/Contact.java index cfe3f894..3605b7c5 100644 --- a/lib/src/main/java/org/asamk/signal/manager/api/Contact.java +++ b/lib/src/main/java/org/asamk/signal/manager/api/Contact.java @@ -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; diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/AccountDatabase.java b/lib/src/main/java/org/asamk/signal/manager/storage/AccountDatabase.java index af498359..bf751fbc 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/AccountDatabase.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/AccountDatabase.java @@ -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( diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java b/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java index 0076f314..a3a98c6c 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java @@ -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, diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/LegacyRecipientStore2.java b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/LegacyRecipientStore2.java index 17f136ec..186ac517 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/LegacyRecipientStore2.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/LegacyRecipientStore2.java @@ -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, diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java index 7d47839b..c291342e 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java @@ -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"), diff --git a/lib/src/main/java/org/asamk/signal/manager/syncStorage/ContactRecordProcessor.java b/lib/src/main/java/org/asamk/signal/manager/syncStorage/ContactRecordProcessor.java index cd1e107c..a087553b 100644 --- a/lib/src/main/java/org/asamk/signal/manager/syncStorage/ContactRecordProcessor.java +++ b/lib/src/main/java/org/asamk/signal/manager/syncStorage/ContactRecordProcessor.java @@ -271,6 +271,9 @@ public class ContactRecordProcessor extends DefaultStorageRecordProcessor