session-android/app/src/main/java/org/thoughtcrime/securesms/sskenvironment/ProfileManager.kt

76 lines
3.7 KiB
Kotlin
Raw Normal View History

2021-01-13 07:11:30 +01:00
package org.thoughtcrime.securesms.sskenvironment
import android.content.Context
2021-05-07 08:31:46 +02:00
import org.session.libsession.messaging.contacts.Contact
2021-01-13 07:11:30 +01:00
import org.session.libsession.utilities.SSKEnvironment
import org.session.libsession.utilities.recipients.Recipient
2021-01-13 07:11:30 +01:00
import org.thoughtcrime.securesms.ApplicationContext
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
2021-01-13 07:11:30 +01:00
import org.thoughtcrime.securesms.jobs.RetrieveProfileAvatarJob
2021-05-21 07:36:16 +02:00
class ProfileManager : SSKEnvironment.ProfileManagerProtocol {
2021-05-21 07:21:24 +02:00
2021-05-21 07:56:38 +02:00
override fun setNickname(context: Context, recipient: Recipient, nickname: String?) {
2021-05-07 08:31:46 +02:00
val sessionID = recipient.address.serialize()
val contactDatabase = DatabaseComponent.get(context).sessionContactDatabase()
2021-05-07 08:31:46 +02:00
var contact = contactDatabase.getContactWithSessionID(sessionID)
if (contact == null) contact = Contact(sessionID)
contact.threadID = DatabaseComponent.get(context).storage().getThreadId(recipient.address)
2021-05-21 07:56:38 +02:00
if (contact.nickname != nickname) {
contact.nickname = nickname
2021-05-07 08:31:46 +02:00
contactDatabase.setContact(contact)
}
}
2021-05-21 07:56:38 +02:00
override fun setName(context: Context, recipient: Recipient, name: String) {
2021-05-07 08:31:46 +02:00
// New API
val sessionID = recipient.address.serialize()
val contactDatabase = DatabaseComponent.get(context).sessionContactDatabase()
2021-05-07 08:31:46 +02:00
var contact = contactDatabase.getContactWithSessionID(sessionID)
if (contact == null) contact = Contact(sessionID)
contact.threadID = DatabaseComponent.get(context).storage().getThreadId(recipient.address)
2021-05-21 07:56:38 +02:00
if (contact.name != name) {
contact.name = name
2021-05-07 08:31:46 +02:00
contactDatabase.setContact(contact)
}
2021-05-21 07:56:38 +02:00
// Old API
val database = DatabaseComponent.get(context).recipientDatabase()
2021-05-21 07:56:38 +02:00
database.setProfileName(recipient, name)
recipient.notifyListeners()
2021-01-13 07:11:30 +01:00
}
override fun setProfilePictureURL(context: Context, recipient: Recipient, profilePictureURL: String) {
2021-05-21 07:56:38 +02:00
val job = RetrieveProfileAvatarJob(recipient, profilePictureURL)
ApplicationContext.getInstance(context).jobManager.add(job)
2021-05-07 08:53:09 +02:00
val sessionID = recipient.address.serialize()
val contactDatabase = DatabaseComponent.get(context).sessionContactDatabase()
2021-05-07 08:53:09 +02:00
var contact = contactDatabase.getContactWithSessionID(sessionID)
if (contact == null) contact = Contact(sessionID)
contact.threadID = DatabaseComponent.get(context).storage().getThreadId(recipient.address)
2021-05-07 08:53:09 +02:00
if (contact.profilePictureURL != profilePictureURL) {
contact.profilePictureURL = profilePictureURL
contactDatabase.setContact(contact)
}
2021-01-13 07:11:30 +01:00
}
override fun setProfileKey(context: Context, recipient: Recipient, profileKey: ByteArray) {
2021-05-07 08:31:46 +02:00
// New API
val sessionID = recipient.address.serialize()
val contactDatabase = DatabaseComponent.get(context).sessionContactDatabase()
2021-05-07 08:31:46 +02:00
var contact = contactDatabase.getContactWithSessionID(sessionID)
if (contact == null) contact = Contact(sessionID)
contact.threadID = DatabaseComponent.get(context).storage().getThreadId(recipient.address)
2021-05-07 08:31:46 +02:00
if (!contact.profilePictureEncryptionKey.contentEquals(profileKey)) {
contact.profilePictureEncryptionKey = profileKey
contactDatabase.setContact(contact)
}
2021-05-21 07:56:38 +02:00
// Old API
val database = DatabaseComponent.get(context).recipientDatabase()
2021-05-21 07:56:38 +02:00
database.setProfileKey(recipient, profileKey)
2021-01-13 07:11:30 +01:00
}
override fun setUnidentifiedAccessMode(context: Context, recipient: Recipient, unidentifiedAccessMode: Recipient.UnidentifiedAccessMode) {
val database = DatabaseComponent.get(context).recipientDatabase()
2021-01-13 07:11:30 +01:00
database.setUnidentifiedAccessMode(recipient, unidentifiedAccessMode)
}
}