mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-12 11:07:42 +00:00
Clean
This commit is contained in:
@@ -1,64 +0,0 @@
|
||||
package org.thoughtcrime.securesms.loki.database
|
||||
|
||||
import android.content.ContentValues
|
||||
import android.content.Context
|
||||
import android.database.sqlite.SQLiteDatabase
|
||||
import org.session.libsignal.utilities.Log
|
||||
import org.session.libsession.utilities.Address
|
||||
import org.thoughtcrime.securesms.database.Database
|
||||
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper
|
||||
import org.thoughtcrime.securesms.loki.utilities.get
|
||||
import org.thoughtcrime.securesms.loki.utilities.insertOrUpdate
|
||||
import org.session.libsession.utilities.recipients.Recipient
|
||||
import org.session.libsession.utilities.TextSecurePreferences
|
||||
import org.session.libsignal.database.LokiUserDatabaseProtocol
|
||||
|
||||
class LokiUserDatabase(context: Context, helper: SQLCipherOpenHelper) : Database(context, helper), LokiUserDatabaseProtocol {
|
||||
|
||||
companion object {
|
||||
// Shared
|
||||
private val displayName = "display_name"
|
||||
// Display name cache
|
||||
private val displayNameTable = "loki_user_display_name_database"
|
||||
private val publicKey = "hex_encoded_public_key"
|
||||
@JvmStatic val createDisplayNameTableCommand = "CREATE TABLE $displayNameTable ($publicKey TEXT PRIMARY KEY, $displayName TEXT);"
|
||||
// Server display name cache
|
||||
private val serverDisplayNameTable = "loki_user_server_display_name_database"
|
||||
private val serverID = "server_id"
|
||||
@JvmStatic val createServerDisplayNameTableCommand = "CREATE TABLE $serverDisplayNameTable ($publicKey TEXT, $serverID TEXT, $displayName TEXT, PRIMARY KEY ($publicKey, $serverID));"
|
||||
}
|
||||
|
||||
override fun getDisplayName(publicKey: String): String? {
|
||||
if (publicKey == TextSecurePreferences.getLocalNumber(context)) {
|
||||
return TextSecurePreferences.getProfileName(context)
|
||||
} else {
|
||||
val database = databaseHelper.readableDatabase
|
||||
val result = database.get(displayNameTable, "${Companion.publicKey} = ?", arrayOf( publicKey )) { cursor ->
|
||||
cursor.getString(cursor.getColumnIndexOrThrow(displayName))
|
||||
} ?: return null
|
||||
val suffix = " (...${publicKey.substring(publicKey.count() - 8)})"
|
||||
if (result.endsWith(suffix)) {
|
||||
return result.substring(0..(result.count() - suffix.count()))
|
||||
} else {
|
||||
return result
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setDisplayName(publicKey: String, displayName: String) {
|
||||
val database = databaseHelper.writableDatabase
|
||||
val row = ContentValues(2)
|
||||
row.put(Companion.publicKey, publicKey)
|
||||
row.put(Companion.displayName, displayName)
|
||||
database.insertOrUpdate(displayNameTable, row, "${Companion.publicKey} = ?", arrayOf( publicKey ))
|
||||
Recipient.from(context, Address.fromSerialized(publicKey), false).notifyListeners()
|
||||
}
|
||||
|
||||
override fun getProfilePictureURL(publicKey: String): String? {
|
||||
return if (publicKey == TextSecurePreferences.getLocalNumber(context)) {
|
||||
TextSecurePreferences.getProfilePictureURL(context)
|
||||
} else {
|
||||
Recipient.from(context, Address.fromSerialized(publicKey), false).resolve().profileAvatar
|
||||
}
|
||||
}
|
||||
}
|
@@ -10,42 +10,38 @@ import org.thoughtcrime.securesms.jobs.RetrieveProfileAvatarJob
|
||||
|
||||
class ProfileManager : SSKEnvironment.ProfileManagerProtocol {
|
||||
|
||||
override fun setDisplayName(context: Context, recipient: Recipient, displayName: String?) {
|
||||
override fun setNickname(context: Context, recipient: Recipient, nickname: String?) {
|
||||
val sessionID = recipient.address.serialize()
|
||||
// New API
|
||||
val contactDatabase = DatabaseFactory.getSessionContactDatabase(context)
|
||||
var contact = contactDatabase.getContactWithSessionID(sessionID)
|
||||
if (contact == null) contact = Contact(sessionID)
|
||||
contact.threadID = DatabaseFactory.getStorage(context).getThreadId(recipient.address)
|
||||
if (contact.nickname != displayName) {
|
||||
contact.nickname = displayName
|
||||
if (contact.nickname != nickname) {
|
||||
contact.nickname = nickname
|
||||
contactDatabase.setContact(contact)
|
||||
}
|
||||
}
|
||||
|
||||
override fun setName(context: Context, recipient: Recipient, name: String) {
|
||||
// New API
|
||||
val sessionID = recipient.address.serialize()
|
||||
val contactDatabase = DatabaseFactory.getSessionContactDatabase(context)
|
||||
var contact = contactDatabase.getContactWithSessionID(sessionID)
|
||||
if (contact == null) contact = Contact(sessionID)
|
||||
contact.threadID = DatabaseFactory.getStorage(context).getThreadId(recipient.address)
|
||||
if (contact.name != name) {
|
||||
contact.name = name
|
||||
contactDatabase.setContact(contact)
|
||||
}
|
||||
// Old API
|
||||
if (displayName == null) return
|
||||
val database = DatabaseFactory.getLokiUserDatabase(context)
|
||||
database.setDisplayName(sessionID, displayName)
|
||||
}
|
||||
|
||||
override fun setProfileName(context: Context, recipient: Recipient, profileName: String) {
|
||||
val database = DatabaseFactory.getRecipientDatabase(context)
|
||||
database.setProfileName(recipient, profileName)
|
||||
database.setProfileName(recipient, name)
|
||||
recipient.notifyListeners()
|
||||
// New API
|
||||
val sessionID = recipient.address.serialize()
|
||||
val contactDatabase = DatabaseFactory.getSessionContactDatabase(context)
|
||||
var contact = contactDatabase.getContactWithSessionID(sessionID)
|
||||
if (contact == null) contact = Contact(sessionID)
|
||||
contact.threadID = DatabaseFactory.getStorage(context).getThreadId(recipient.address)
|
||||
if (contact.name != profileName) {
|
||||
contact.name = profileName
|
||||
contactDatabase.setContact(contact)
|
||||
}
|
||||
}
|
||||
|
||||
override fun setProfilePictureURL(context: Context, recipient: Recipient, profilePictureURL: String) {
|
||||
ApplicationContext.getInstance(context).jobManager.add(RetrieveProfileAvatarJob(recipient, profilePictureURL))
|
||||
// New API
|
||||
val job = RetrieveProfileAvatarJob(recipient, profilePictureURL)
|
||||
ApplicationContext.getInstance(context).jobManager.add(job)
|
||||
val sessionID = recipient.address.serialize()
|
||||
val contactDatabase = DatabaseFactory.getSessionContactDatabase(context)
|
||||
var contact = contactDatabase.getContactWithSessionID(sessionID)
|
||||
@@ -58,8 +54,6 @@ class ProfileManager : SSKEnvironment.ProfileManagerProtocol {
|
||||
}
|
||||
|
||||
override fun setProfileKey(context: Context, recipient: Recipient, profileKey: ByteArray) {
|
||||
val database = DatabaseFactory.getRecipientDatabase(context)
|
||||
database.setProfileKey(recipient, profileKey)
|
||||
// New API
|
||||
val sessionID = recipient.address.serialize()
|
||||
val contactDatabase = DatabaseFactory.getSessionContactDatabase(context)
|
||||
@@ -70,23 +64,13 @@ class ProfileManager : SSKEnvironment.ProfileManagerProtocol {
|
||||
contact.profilePictureEncryptionKey = profileKey
|
||||
contactDatabase.setContact(contact)
|
||||
}
|
||||
// Old API
|
||||
val database = DatabaseFactory.getRecipientDatabase(context)
|
||||
database.setProfileKey(recipient, profileKey)
|
||||
}
|
||||
|
||||
override fun setUnidentifiedAccessMode(context: Context, recipient: Recipient, unidentifiedAccessMode: Recipient.UnidentifiedAccessMode) {
|
||||
val database = DatabaseFactory.getRecipientDatabase(context)
|
||||
database.setUnidentifiedAccessMode(recipient, unidentifiedAccessMode)
|
||||
}
|
||||
|
||||
override fun getDisplayName(context: Context, recipient: Recipient): String? {
|
||||
val sessionID = recipient.address.serialize()
|
||||
val contactDatabase = DatabaseFactory.getSessionContactDatabase(context)
|
||||
var contact = contactDatabase.getContactWithSessionID(sessionID)
|
||||
if (contact == null) {
|
||||
contact = Contact(sessionID)
|
||||
contact.threadID = DatabaseFactory.getStorage(context).getThreadId(recipient.address)
|
||||
contact.name = DatabaseFactory.getLokiUserDatabase(context).getDisplayName(sessionID) ?: recipient.profileName ?: recipient.name
|
||||
contactDatabase.setContact(contact)
|
||||
}
|
||||
return contact.displayName(Contact.contextForRecipient(recipient))
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user