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-05-18 08:03:47 +02:00
|
|
|
import org.session.libsession.utilities.recipients.Recipient
|
2021-01-13 07:11:30 +01:00
|
|
|
import org.session.libsession.utilities.SSKEnvironment
|
|
|
|
import org.thoughtcrime.securesms.ApplicationContext
|
|
|
|
import org.thoughtcrime.securesms.database.DatabaseFactory
|
|
|
|
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 = DatabaseFactory.getSessionContactDatabase(context)
|
|
|
|
var contact = contactDatabase.getContactWithSessionID(sessionID)
|
|
|
|
if (contact == null) contact = Contact(sessionID)
|
2021-05-21 07:21:24 +02:00
|
|
|
contact.threadID = DatabaseFactory.getStorage(context).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-04-22 02:48:19 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
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 = DatabaseFactory.getSessionContactDatabase(context)
|
|
|
|
var contact = contactDatabase.getContactWithSessionID(sessionID)
|
|
|
|
if (contact == null) contact = Contact(sessionID)
|
2021-05-21 07:21:24 +02:00
|
|
|
contact.threadID = DatabaseFactory.getStorage(context).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 = DatabaseFactory.getRecipientDatabase(context)
|
|
|
|
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 = DatabaseFactory.getSessionContactDatabase(context)
|
|
|
|
var contact = contactDatabase.getContactWithSessionID(sessionID)
|
|
|
|
if (contact == null) contact = Contact(sessionID)
|
2021-05-21 07:21:24 +02:00
|
|
|
contact.threadID = DatabaseFactory.getStorage(context).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 = DatabaseFactory.getSessionContactDatabase(context)
|
|
|
|
var contact = contactDatabase.getContactWithSessionID(sessionID)
|
|
|
|
if (contact == null) contact = Contact(sessionID)
|
2021-05-21 07:21:24 +02:00
|
|
|
contact.threadID = DatabaseFactory.getStorage(context).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 = DatabaseFactory.getRecipientDatabase(context)
|
|
|
|
database.setProfileKey(recipient, profileKey)
|
2021-01-13 07:11:30 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun setUnidentifiedAccessMode(context: Context, recipient: Recipient, unidentifiedAccessMode: Recipient.UnidentifiedAccessMode) {
|
|
|
|
val database = DatabaseFactory.getRecipientDatabase(context)
|
|
|
|
database.setUnidentifiedAccessMode(recipient, unidentifiedAccessMode)
|
|
|
|
}
|
|
|
|
}
|