mirror of
https://github.com/oxen-io/session-android.git
synced 2023-12-14 02:53:01 +01:00
* refactor: Migrate home screen to data binding * Add view binding * Migrate ConversationView to view binding * Migrate ConversationActivityV2 to view binding * View model refactor * Move more functionality to the view model * Add ui state events flow * Update conversation item bindings * Update profile picture view bindings * Replace Kotlin synthetics with view bindings * Fix qr code fragment binding and optimize imports * View binding refactors * Make TextSecurePreferences an interface and add an implementation to improve testability * Add conversation repository * Migrate remaining TextSecurePreferences functions into the interface * Add unit conversation unit tests * Add unit test coverage for remaining view model functions
66 lines
2.9 KiB
Kotlin
66 lines
2.9 KiB
Kotlin
package org.thoughtcrime.securesms.conversation.v2
|
|
|
|
import android.os.Bundle
|
|
import android.view.View
|
|
import network.loki.messenger.R
|
|
import network.loki.messenger.databinding.ActivityMessageDetailBinding
|
|
import org.session.libsession.utilities.Address
|
|
import org.session.libsession.utilities.ExpirationUtil
|
|
import org.session.libsession.utilities.TextSecurePreferences
|
|
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
|
import org.thoughtcrime.securesms.conversation.v2.utilities.ResendMessageUtilities
|
|
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
|
|
|
|
class MessageDetailActivity: PassphraseRequiredActionBarActivity() {
|
|
private lateinit var binding: ActivityMessageDetailBinding
|
|
var messageRecord: MessageRecord? = null
|
|
|
|
// region Settings
|
|
companion object {
|
|
// Extras
|
|
const val MESSAGE_TIMESTAMP = "message_timestamp"
|
|
}
|
|
// endregion
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
|
|
super.onCreate(savedInstanceState, ready)
|
|
binding = ActivityMessageDetailBinding.inflate(layoutInflater)
|
|
setContentView(binding.root)
|
|
title = resources.getString(R.string.conversation_context__menu_message_details)
|
|
val timestamp = intent.getLongExtra(MESSAGE_TIMESTAMP, -1L)
|
|
// We only show this screen for messages fail to send,
|
|
// 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)
|
|
updateContent()
|
|
binding.resendButton.setOnClickListener {
|
|
ResendMessageUtilities.resend(messageRecord!!)
|
|
finish()
|
|
}
|
|
}
|
|
|
|
fun updateContent() {
|
|
val dateLocale = Locale.getDefault()
|
|
val dateFormatter: SimpleDateFormat = DateUtils.getDetailedDateFormatter(this, dateLocale)
|
|
binding.sentTime.text = dateFormatter.format(Date(messageRecord!!.dateSent))
|
|
|
|
val errorMessage = DatabaseComponent.get(this).lokiMessageDatabase().getErrorMessage(messageRecord!!.getId()) ?: "Message failed to send."
|
|
binding.errorMessage.text = errorMessage
|
|
|
|
if (messageRecord!!.expiresIn <= 0 || messageRecord!!.expireStarted <= 0) {
|
|
binding.expiresContainer.visibility = View.GONE
|
|
} else {
|
|
binding.expiresContainer.visibility = View.VISIBLE
|
|
val elapsed = System.currentTimeMillis() - messageRecord!!.expireStarted
|
|
val remaining = messageRecord!!.expiresIn - elapsed
|
|
|
|
val duration = ExpirationUtil.getExpirationDisplayValue(this, Math.max((remaining / 1000).toInt(), 1))
|
|
binding.expiresIn.text = duration
|
|
}
|
|
}
|
|
} |