Addressed PR feedback

This commit is contained in:
Morgan Pretty 2023-05-30 12:43:51 +10:00
parent c77d465438
commit b7744f4f2d
4 changed files with 17 additions and 15 deletions

View File

@ -69,15 +69,7 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context,
return Profile(displayName, profileKey, profilePictureUrl) return Profile(displayName, profileKey, profilePictureUrl)
} }
override fun setUserProfilePictureURL(newValue: String) { override fun setProfileAvatar(recipient: Recipient, profileAvatar: String?) {
val ourRecipient = fromSerialized(getUserPublicKey()!!).let {
Recipient.from(context, it, false)
}
TextSecurePreferences.setProfilePictureURL(context, newValue)
JobQueue.shared.add(RetrieveProfileAvatarJob(newValue, ourRecipient.address))
}
override fun setProfileAvatar(recipient: Recipient, profileAvatar: String) {
val database = DatabaseComponent.get(context).recipientDatabase() val database = DatabaseComponent.get(context).recipientDatabase()
database.setProfileAvatar(recipient, profileAvatar) database.setProfileAvatar(recipient, profileAvatar)
} }

View File

@ -37,8 +37,7 @@ interface StorageProtocol {
fun getUserPublicKey(): String? fun getUserPublicKey(): String?
fun getUserX25519KeyPair(): ECKeyPair fun getUserX25519KeyPair(): ECKeyPair
fun getUserProfile(): Profile fun getUserProfile(): Profile
fun setUserProfilePictureURL(newProfilePicture: String) fun setProfileAvatar(recipient: Recipient, profileAvatar: String?)
fun setProfileAvatar(recipient: Recipient, profileAvatar: String)
// Signal // Signal
fun getOrGenerateRegistrationID(): Int fun getOrGenerateRegistrationID(): Int

View File

@ -9,6 +9,8 @@ import org.session.libsession.utilities.TextSecurePreferences.Companion.setProfi
import org.session.libsession.utilities.Util.copy import org.session.libsession.utilities.Util.copy
import org.session.libsession.utilities.Util.equals import org.session.libsession.utilities.Util.equals
import org.session.libsession.utilities.Address import org.session.libsession.utilities.Address
import org.session.libsession.utilities.TextSecurePreferences
import org.session.libsession.utilities.TextSecurePreferences.Companion.setProfilePictureURL
import org.session.libsession.utilities.recipients.Recipient import org.session.libsession.utilities.recipients.Recipient
import org.session.libsignal.streams.ProfileCipherInputStream import org.session.libsignal.streams.ProfileCipherInputStream
import org.session.libsignal.utilities.Log import org.session.libsignal.utilities.Log
@ -18,7 +20,7 @@ import java.io.FileOutputStream
import java.io.InputStream import java.io.InputStream
import java.security.SecureRandom import java.security.SecureRandom
class RetrieveProfileAvatarJob(val profileAvatar: String, val recipientAddress: Address): Job { class RetrieveProfileAvatarJob(val profileAvatar: String?, val recipientAddress: Address): Job {
override var delegate: JobDelegate? = null override var delegate: JobDelegate? = null
override var id: String? = null override var id: String? = null
override var failureCount: Int = 0 override var failureCount: Int = 0
@ -49,10 +51,16 @@ class RetrieveProfileAvatarJob(val profileAvatar: String, val recipientAddress:
return return
} }
if (TextUtils.isEmpty(profileAvatar)) { if (profileAvatar.isNullOrEmpty()) {
Log.w(TAG, "Removing profile avatar for: " + recipient.address.serialize()) Log.w(TAG, "Removing profile avatar for: " + recipient.address.serialize())
if (recipient.isLocalNumber) {
setProfileAvatarId(context, SecureRandom().nextInt())
setProfilePictureURL(context, null)
}
AvatarHelper.delete(context, recipient.address) AvatarHelper.delete(context, recipient.address)
storage.setProfileAvatar(recipient, profileAvatar) storage.setProfileAvatar(recipient, null)
return return
} }
@ -70,7 +78,9 @@ class RetrieveProfileAvatarJob(val profileAvatar: String, val recipientAddress:
if (recipient.isLocalNumber) { if (recipient.isLocalNumber) {
setProfileAvatarId(context, SecureRandom().nextInt()) setProfileAvatarId(context, SecureRandom().nextInt())
setProfilePictureURL(context, profileAvatar)
} }
storage.setProfileAvatar(recipient, profileAvatar) storage.setProfileAvatar(recipient, profileAvatar)
} }

View File

@ -5,6 +5,7 @@ import org.session.libsession.avatars.AvatarHelper
import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.MessagingModuleConfiguration
import org.session.libsession.messaging.jobs.BackgroundGroupAddJob import org.session.libsession.messaging.jobs.BackgroundGroupAddJob
import org.session.libsession.messaging.jobs.JobQueue import org.session.libsession.messaging.jobs.JobQueue
import org.session.libsession.messaging.jobs.RetrieveProfileAvatarJob
import org.session.libsession.messaging.messages.Message import org.session.libsession.messaging.messages.Message
import org.session.libsession.messaging.messages.control.CallMessage import org.session.libsession.messaging.messages.control.CallMessage
import org.session.libsession.messaging.messages.control.ClosedGroupControlMessage import org.session.libsession.messaging.messages.control.ClosedGroupControlMessage
@ -183,7 +184,7 @@ private fun handleConfigurationMessage(message: ConfigurationMessage) {
ProfileKeyUtil.setEncodedProfileKey(context, profileKey) ProfileKeyUtil.setEncodedProfileKey(context, profileKey)
profileManager.setProfileKey(context, recipient, message.profileKey) profileManager.setProfileKey(context, recipient, message.profileKey)
if (!message.profilePicture.isNullOrEmpty() && TextSecurePreferences.getProfilePictureURL(context) != message.profilePicture) { if (!message.profilePicture.isNullOrEmpty() && TextSecurePreferences.getProfilePictureURL(context) != message.profilePicture) {
storage.setUserProfilePictureURL(message.profilePicture!!) JobQueue.shared.add(RetrieveProfileAvatarJob(message.profilePicture!!, recipient.address))
} }
} }
storage.addContacts(message.contacts) storage.addContacts(message.contacts)