Add profile data to message request responses

This commit is contained in:
charles
2022-10-04 15:23:58 +11:00
parent fbd1721eaf
commit 1f7edadc59
3 changed files with 315 additions and 22 deletions

View File

@@ -1,15 +1,22 @@
package org.session.libsession.messaging.messages.control
import com.google.protobuf.ByteString
import org.session.libsession.messaging.messages.visible.Profile
import org.session.libsignal.protos.SignalServiceProtos
import org.session.libsignal.utilities.Log
class MessageRequestResponse(val isApproved: Boolean) : ControlMessage() {
class MessageRequestResponse(val isApproved: Boolean, val profile: Profile? = null) : ControlMessage() {
override val isSelfSendValid: Boolean = true
override fun toProto(): SignalServiceProtos.Content? {
val profileProto = SignalServiceProtos.DataMessage.LokiProfile.newBuilder()
profile?.displayName?.let { profileProto.displayName = it }
profile?.profilePictureURL?.let { profileProto.profilePicture = it }
val messageRequestResponseProto = SignalServiceProtos.MessageRequestResponse.newBuilder()
.setIsApproved(isApproved)
.setProfile(profileProto.build())
profile?.profileKey?.let { messageRequestResponseProto.profileKey = ByteString.copyFrom(it) }
return try {
SignalServiceProtos.Content.newBuilder()
.setMessageRequestResponse(messageRequestResponseProto.build())
@@ -26,7 +33,13 @@ class MessageRequestResponse(val isApproved: Boolean) : ControlMessage() {
fun fromProto(proto: SignalServiceProtos.Content): MessageRequestResponse? {
val messageRequestResponseProto = if (proto.hasMessageRequestResponse()) proto.messageRequestResponse else return null
val isApproved = messageRequestResponseProto.isApproved
return MessageRequestResponse(isApproved)
val profileProto = messageRequestResponseProto.profile
val profile = Profile().apply {
displayName = profileProto.displayName
profileKey = messageRequestResponseProto.profileKey.toByteArray()
profilePictureURL = profileProto.profilePicture
}
return MessageRequestResponse(isApproved, profile)
}
}