diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/MessageDetailActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/MessageDetailActivity.kt index 820dfd915..d885ade00 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/MessageDetailActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/MessageDetailActivity.kt @@ -44,6 +44,7 @@ import org.thoughtcrime.securesms.ui.Cell import org.thoughtcrime.securesms.ui.CellWithPadding import org.thoughtcrime.securesms.ui.ItemButton import org.thoughtcrime.securesms.ui.LocalExtraColors +import org.thoughtcrime.securesms.ui.colorDestructive import org.thoughtcrime.securesms.ui.destructiveButtonColors import java.util.* import javax.inject.Inject @@ -72,11 +73,12 @@ class MessageDetailActivity: PassphraseRequiredActionBarActivity() { class MessageDetailsViewModel: ViewModel() { - fun setMessageRecord(value: MessageRecord?) { + fun setMessageRecord(value: MessageRecord?, error: String?) { _details.value = value?.run { MessageDetails( sent = dateSent.let(::Date).toString().let { TitledText("Sent:", it) }, received = dateReceived.let(::Date).toString().let { TitledText("Received:", it) }, + error = error?.let { TitledText("Error:", it) }, senderInfo = individualRecipient.run { name?.let { TitledText(it, address.serialize()) } }, sender = individualRecipient ) @@ -97,7 +99,9 @@ class MessageDetailActivity: PassphraseRequiredActionBarActivity() { return } - viewModel.setMessageRecord(messageRecord) + val error = DatabaseComponent.get(this).lokiMessageDatabase().getErrorMessage(messageRecord!!.getId()) + + viewModel.setMessageRecord(messageRecord, error) title = resources.getString(R.string.conversation_context__menu_message_details) @@ -135,6 +139,7 @@ class MessageDetailActivity: PassphraseRequiredActionBarActivity() { val fileDetails: List? = null, val sent: TitledText? = null, val received: TitledText? = null, + val error: TitledText? = null, val senderInfo: TitledText? = null, val sender: Recipient? = null ) @@ -143,16 +148,19 @@ class MessageDetailActivity: PassphraseRequiredActionBarActivity() { @Composable fun PreviewMessageDetails() { MessageDetails( - fileDetails = listOf( - TitledText("File Id:", "1237896548514214124235985214"), - TitledText("File Type:", ".PNG"), - TitledText("File Size:", "6mb"), - TitledText("Resolution:", "550x550"), - TitledText("Duration:", "N/A"), - ), - sent = TitledText("Sent:", "6:12 AM Tue, 09/08/2022"), - received = TitledText("Received:", "6:12 AM Tue, 09/08/2022"), - senderInfo = TitledText("Connor", "d4f1g54sdf5g1d5f4g65ds4564df65f4g65d54gdfsg") + MessageDetails( + fileDetails = listOf( + TitledText("File Id:", "1237896548514214124235985214"), + TitledText("File Type:", ".PNG"), + TitledText("File Size:", "6mb"), + TitledText("Resolution:", "550x550"), + TitledText("Duration:", "N/A"), + ), + sent = TitledText("Sent:", "6:12 AM Tue, 09/08/2022"), + received = TitledText("Received:", "6:12 AM Tue, 09/08/2022"), + error = TitledText("Error:", "Message failed to send"), + senderInfo = TitledText("Connor", "d4f1g54sdf5g1d5f4g65ds4564df65f4g65d54gdfsg") + ) ) } @@ -186,20 +194,19 @@ class MessageDetailActivity: PassphraseRequiredActionBarActivity() { Column(verticalArrangement = Arrangement.spacedBy(16.dp)) { sent?.let { titledText(it) } received?.let { titledText(it) } + error?.let { titledText(it, valueStyle = LocalTextStyle.current.copy(color = colorDestructive)) } senderInfo?.let { titledView("From:") { Row { - Box( - modifier = Modifier.align(Alignment.CenterVertically) - .width(60.dp) - .height(60.dp) - ) { - AndroidView( - factory = { ProfilePictureView(it).apply { sender?.let(::update) } }, - modifier = Modifier.align(Alignment.Center) - .width(46.dp) - .height(46.dp) - ) + sender?.let { + Box(modifier = Modifier.width(60.dp).align(Alignment.CenterVertically)) { + AndroidView( + factory = { ProfilePictureView(it).apply { update(sender) } }, + modifier = Modifier + .width(46.dp) + .height(46.dp) + ) + } } Column { titledText(it, valueStyle = LocalTextStyle.current.copy(fontFamily = FontFamily.Monospace)) @@ -213,14 +220,11 @@ class MessageDetailActivity: PassphraseRequiredActionBarActivity() { Column { ItemButton("Reply", R.drawable.ic_message_details__reply, onClick = onReply) Divider() - ItemButton("Resend", R.drawable.ic_message_details__refresh, onClick = onResend) - Divider() - ItemButton( - "Delete", - R.drawable.ic_message_details__trash, - colors = destructiveButtonColors(), - onClick = onDelete - ) + if (error != null) { + ItemButton("Resend", R.drawable.ic_message_details__refresh, onClick = onResend) + Divider() + } + ItemButton("Delete", R.drawable.ic_message_details__trash, colors = destructiveButtonColors(), onClick = onDelete) } } }