@ -257,13 +257,14 @@ class VisibleMessageView : LinearLayout {
binding . expirationTimerView . isGone = true
if ( message . isOutgoing || disappearing ) {
val ( iconID , iconColor , textId , contentDescription ) = getMessageStatusImage ( message )
val ( iconID , iconColor , textId ) = getMessageStatusImage ( message )
textId ?. let ( binding . messageStatusTextView :: setText )
iconColor ?. let ( binding . messageStatusTextView :: setTextColor )
iconID ?. let { ContextCompat . getDrawable ( context , it ) }
?. run { iconColor ?. let { mutate ( ) . apply { setTint ( it ) } } ?: this }
?. let ( binding . messageStatusImageView :: setImageDrawable )
binding . messageStatusImageView . contentDescription = contentDescription
binding . messageStatusTextView . contentDescription = context . getString ( R . string . AccessibilityId _message _sent _status )
binding . messageStatusImageView . contentDescription = context . getString ( R . string . AccessibilityId _message _sent _status )
val lastMessageID = mmsSmsDb . getLastMessageID ( message . threadId )
val isLastMessage = message . id == lastMessageID
@ -305,48 +306,41 @@ class VisibleMessageView : LinearLayout {
data class MessageStatusInfo ( @DrawableRes val iconId : Int ? ,
@ColorInt val iconTint : Int ? ,
@StringRes val messageText : Int ? ,
val contentDescription : String ? )
@StringRes val messageText : Int ? )
private fun getMessageStatusImage ( message : MessageRecord ) : MessageStatusInfo = when {
message . isFailed ->
MessageStatusInfo (
R . drawable . ic _delivery _status _failed ,
resources . getColor ( R . color . destructive , context . theme ) ,
R . string . delivery _status _failed ,
null
R . string . delivery _status _failed
)
message . isSyncFailed ->
MessageStatusInfo (
R . drawable . ic _delivery _status _failed ,
context . getColor ( R . color . accent _orange ) ,
R . string . delivery _status _sync _failed ,
null
R . string . delivery _status _sync _failed
)
message . isPending ->
MessageStatusInfo (
R . drawable . ic _delivery _status _sending ,
context . getColorFromAttr ( R . attr . message _status _color ) , R . string . delivery _status _sending ,
context . getString ( R . string . AccessibilityId _message _sent _status _pending )
context . getColorFromAttr ( R . attr . message _status _color ) , R . string . delivery _status _sending
)
message . isResyncing ->
MessageStatusInfo (
R . drawable . ic _delivery _status _sending ,
context . getColor ( R . color . accent _orange ) , R . string . delivery _status _syncing ,
context . getString ( R . string . AccessibilityId _message _sent _status _syncing )
context . getColor ( R . color . accent _orange ) , R . string . delivery _status _syncing
)
message . isRead || ! message . isOutgoing ->
MessageStatusInfo (
R . drawable . ic _delivery _status _read ,
context . getColorFromAttr ( R . attr . message _status _color ) , R . string . delivery _status _read ,
null
context . getColorFromAttr ( R . attr . message _status _color ) , R . string . delivery _status _read
)
else ->
MessageStatusInfo (
R . drawable . ic _delivery _status _sent ,
context . getColorFromAttr ( R . attr . message _status _color ) ,
R . string . delivery _status _sent ,
context . getString ( R . string . AccessibilityId _message _sent _status _tick )
R . string . delivery _status _sent
)
}