|
|
|
@ -2,24 +2,36 @@ package org.thoughtcrime.securesms.conversation.v2
|
|
|
|
|
|
|
|
|
|
import android.os.Bundle
|
|
|
|
|
import android.view.View
|
|
|
|
|
import dagger.hilt.android.AndroidEntryPoint
|
|
|
|
|
import network.loki.messenger.R
|
|
|
|
|
import network.loki.messenger.databinding.ActivityMessageDetailBinding
|
|
|
|
|
import org.session.libsession.messaging.MessagingModuleConfiguration
|
|
|
|
|
import org.session.libsession.messaging.open_groups.OpenGroupApi
|
|
|
|
|
import org.session.libsession.messaging.utilities.SessionId
|
|
|
|
|
import org.session.libsession.messaging.utilities.SodiumUtilities
|
|
|
|
|
import org.session.libsession.utilities.Address
|
|
|
|
|
import org.session.libsession.utilities.ExpirationUtil
|
|
|
|
|
import org.session.libsession.utilities.TextSecurePreferences
|
|
|
|
|
import org.session.libsignal.utilities.IdPrefix
|
|
|
|
|
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
|
|
|
|
import org.thoughtcrime.securesms.conversation.v2.utilities.ResendMessageUtilities
|
|
|
|
|
import org.thoughtcrime.securesms.database.Storage
|
|
|
|
|
import org.thoughtcrime.securesms.database.model.MessageRecord
|
|
|
|
|
import org.thoughtcrime.securesms.dependencies.DatabaseComponent
|
|
|
|
|
import org.thoughtcrime.securesms.util.DateUtils
|
|
|
|
|
import java.text.SimpleDateFormat
|
|
|
|
|
import java.util.Date
|
|
|
|
|
import java.util.Locale
|
|
|
|
|
import javax.inject.Inject
|
|
|
|
|
|
|
|
|
|
@AndroidEntryPoint
|
|
|
|
|
class MessageDetailActivity: PassphraseRequiredActionBarActivity() {
|
|
|
|
|
private lateinit var binding: ActivityMessageDetailBinding
|
|
|
|
|
var messageRecord: MessageRecord? = null
|
|
|
|
|
|
|
|
|
|
@Inject
|
|
|
|
|
lateinit var storage: Storage
|
|
|
|
|
|
|
|
|
|
// region Settings
|
|
|
|
|
companion object {
|
|
|
|
|
// Extras
|
|
|
|
@ -37,9 +49,19 @@ class MessageDetailActivity: PassphraseRequiredActionBarActivity() {
|
|
|
|
|
// so the author of the messages must be the current user.
|
|
|
|
|
val author = Address.fromSerialized(TextSecurePreferences.getLocalNumber(this)!!)
|
|
|
|
|
messageRecord = DatabaseComponent.get(this).mmsSmsDatabase().getMessageFor(timestamp, author)
|
|
|
|
|
val threadId = messageRecord!!.threadId
|
|
|
|
|
val openGroup = storage.getOpenGroup(threadId)
|
|
|
|
|
val blindedKey = openGroup?.let { group ->
|
|
|
|
|
val userEdKeyPair = MessagingModuleConfiguration.shared.getUserED25519KeyPair() ?: return@let null
|
|
|
|
|
val blindingEnabled = storage.getServerCapabilities(group.server).contains(OpenGroupApi.Capability.BLIND.name.lowercase())
|
|
|
|
|
if (blindingEnabled) {
|
|
|
|
|
SodiumUtilities.blindedKeyPair(group.publicKey, userEdKeyPair)?.publicKey?.asBytes
|
|
|
|
|
?.let { SessionId(IdPrefix.BLINDED, it) }?.hexString
|
|
|
|
|
} else null
|
|
|
|
|
}
|
|
|
|
|
updateContent()
|
|
|
|
|
binding.resendButton.setOnClickListener {
|
|
|
|
|
ResendMessageUtilities.resend(messageRecord!!)
|
|
|
|
|
ResendMessageUtilities.resend(this, messageRecord!!, blindedKey)
|
|
|
|
|
finish()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|