Add nickname and notes fields to the RecipientTable.

This commit is contained in:
Alex Hart
2024-03-19 13:52:06 -03:00
committed by Nicholas Tinsley
parent 50149a3803
commit 7de2f0f460
8 changed files with 86 additions and 11 deletions

View File

@@ -186,6 +186,10 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
const val PHONE_NUMBER_SHARING = "phone_number_sharing"
const val PHONE_NUMBER_DISCOVERABLE = "phone_number_discoverable"
const val PNI_SIGNATURE_VERIFIED = "pni_signature_verified"
const val NICKNAME_GIVEN_NAME = "nickname_given_name"
const val NICKNAME_FAMILY_NAME = "nickname_family_name"
const val NICKNAME_JOINED_NAME = "nickname_joined_name"
const val NOTE = "note"
const val SEARCH_PROFILE_NAME = "search_signal_profile"
const val SORT_NAME = "sort_name"
@@ -254,7 +258,11 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
$REPORTING_TOKEN BLOB DEFAULT NULL,
$PHONE_NUMBER_SHARING INTEGER DEFAULT ${PhoneNumberSharingState.UNKNOWN.id},
$PHONE_NUMBER_DISCOVERABLE INTEGER DEFAULT ${PhoneNumberDiscoverableState.UNKNOWN.id},
$PNI_SIGNATURE_VERIFIED INTEGER DEFAULT 0
$PNI_SIGNATURE_VERIFIED INTEGER DEFAULT 0,
$NICKNAME_GIVEN_NAME TEXT DEFAULT NULL,
$NICKNAME_FAMILY_NAME TEXT DEFAULT NULL,
$NICKNAME_JOINED_NAME TEXT DEFAULT NULL,
$NOTE TEXT DEFAULT NULL
)
"""
@@ -314,7 +322,10 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
BADGES,
NEEDS_PNI_SIGNATURE,
REPORTING_TOKEN,
PHONE_NUMBER_SHARING
PHONE_NUMBER_SHARING,
NICKNAME_GIVEN_NAME,
NICKNAME_FAMILY_NAME,
NOTE
)
private val ID_PROJECTION = arrayOf(ID)
@@ -335,6 +346,8 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
"""
LOWER(
COALESCE(
NULLIF($NICKNAME_JOINED_NAME, ''),
NULLIF($NICKNAME_GIVEN_NAME, ''),
NULLIF($SYSTEM_JOINED_NAME, ''),
NULLIF($SYSTEM_GIVEN_NAME, ''),
NULLIF($PROFILE_JOINED_NAME, ''),
@@ -374,6 +387,8 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da
"""
REPLACE(
COALESCE(
NULLIF($NICKNAME_JOINED_NAME, ''),
NULLIF($NICKNAME_GIVEN_NAME, ''),
NULLIF($SYSTEM_JOINED_NAME, ''),
NULLIF($SYSTEM_GIVEN_NAME, ''),
NULLIF($PROFILE_JOINED_NAME, ''),

View File

@@ -165,7 +165,9 @@ object RecipientTableCursorUtil {
needsPniSignature = cursor.requireBoolean(RecipientTable.NEEDS_PNI_SIGNATURE),
hiddenState = Recipient.HiddenState.deserialize(cursor.requireInt(RecipientTable.HIDDEN)),
callLinkRoomId = cursor.requireString(RecipientTable.CALL_LINK_ROOM_ID)?.let { CallLinkRoomId.DatabaseSerializer.deserialize(it) },
phoneNumberSharing = cursor.requireInt(RecipientTable.PHONE_NUMBER_SHARING).let { RecipientTable.PhoneNumberSharingState.fromId(it) }
phoneNumberSharing = cursor.requireInt(RecipientTable.PHONE_NUMBER_SHARING).let { RecipientTable.PhoneNumberSharingState.fromId(it) },
nickname = ProfileName.fromParts(cursor.requireString(RecipientTable.NICKNAME_GIVEN_NAME), cursor.requireString(RecipientTable.NICKNAME_FAMILY_NAME)),
note = cursor.requireString(RecipientTable.NOTE)
)
}

View File

@@ -80,6 +80,7 @@ import org.thoughtcrime.securesms.database.helpers.migration.V219_PniPreKeyStore
import org.thoughtcrime.securesms.database.helpers.migration.V220_PreKeyConstraints
import org.thoughtcrime.securesms.database.helpers.migration.V221_AddReadColumnToCallEventsTable
import org.thoughtcrime.securesms.database.helpers.migration.V222_DataHashRefactor
import org.thoughtcrime.securesms.database.helpers.migration.V223_AddNicknameAndNoteFieldsToRecipientTable
/**
* Contains all of the database migrations for [SignalDatabase]. Broken into a separate file for cleanliness.
@@ -162,10 +163,11 @@ object SignalDatabaseMigrations {
219 to V219_PniPreKeyStores,
220 to V220_PreKeyConstraints,
221 to V221_AddReadColumnToCallEventsTable,
222 to V222_DataHashRefactor
222 to V222_DataHashRefactor,
223 to V223_AddNicknameAndNoteFieldsToRecipientTable
)
const val DATABASE_VERSION = 222
const val DATABASE_VERSION = 223
@JvmStatic
fun migrate(context: Application, db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {

View File

@@ -0,0 +1,22 @@
/*
* Copyright 2024 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.thoughtcrime.securesms.database.helpers.migration
import android.app.Application
import net.zetetic.database.sqlcipher.SQLiteDatabase
/**
* Adds necessary fields to the recipeints table for the nickname & notes feature.
*/
@Suppress("ClassName")
object V223_AddNicknameAndNoteFieldsToRecipientTable : SignalDatabaseMigration {
override fun migrate(context: Application, db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
db.execSQL("ALTER TABLE recipient ADD COLUMN nickname_given_name TEXT DEFAULT NULL")
db.execSQL("ALTER TABLE recipient ADD COLUMN nickname_family_name TEXT DEFAULT NULL")
db.execSQL("ALTER TABLE recipient ADD COLUMN nickname_joined_name TEXT DEFAULT NULL")
db.execSQL("ALTER TABLE recipient ADD COLUMN note TEXT DEFAULT NULL")
}
}

View File

@@ -78,7 +78,9 @@ data class RecipientRecord(
val needsPniSignature: Boolean,
val hiddenState: Recipient.HiddenState,
val callLinkRoomId: CallLinkRoomId?,
val phoneNumberSharing: PhoneNumberSharingState
val phoneNumberSharing: PhoneNumberSharingState,
val nickname: ProfileName,
val note: String?
) {
fun e164Only(): Boolean {