Skip to content
Snippets Groups Projects
Commit f69effef authored by Adrien Béraud's avatar Adrien Béraud
Browse files

conversation: re-use formatter, string builder

Change-Id: Ib9aaa801aad668391153cd3d759c4d809ff8e780
parent fa399550
No related branches found
No related tags found
No related merge requests found
......@@ -103,6 +103,7 @@ class ConversationAdapter(
private var mCurrentLongItem: RecyclerViewContextMenuInfo? = null
@ColorInt private var convColor = 0
@ColorInt private var convColorTint = 0
private val formatter = Formatter(StringBuilder(64), Locale.getDefault())
private val emojiMessagePadding = Padding(0, 0, 0, 0)
private val callPadding = Padding(
......@@ -970,7 +971,7 @@ class ConversationAdapter(
private fun configureForFileInfo(viewHolder: ConversationViewHolder, interaction: Interaction, position: Int) {
val file = interaction as DataTransfer
val path = presenter.deviceRuntimeService.getConversationPath(file)
val timeString = TextUtils.timestampToDetailString(viewHolder.itemView.context, file.timestamp)
val timeString = TextUtils.timestampToDetailString(viewHolder.itemView.context, formatter, file.timestamp)
viewHolder.compositeDisposable.add(timestampUpdateTimer.subscribe {
viewHolder.mMsgDetailTxt?.text = when (val status = file.status) {
InteractionStatus.TRANSFER_FINISHED -> String.format("%s - %s", timeString,
......@@ -986,7 +987,7 @@ class ConversationAdapter(
})
if (hasPermanentTimeString(file, position)) {
viewHolder.compositeDisposable.add(timestampUpdateTimer.subscribe {
viewHolder.mMsgDetailTxtPerm?.text = TextUtils.timestampToDetailString(viewHolder.itemView.context, file.timestamp)
viewHolder.mMsgDetailTxtPerm?.text = TextUtils.timestampToDetailString(viewHolder.itemView.context, formatter, file.timestamp)
})
viewHolder.mMsgDetailTxtPerm?.visibility = View.VISIBLE
} else {
......@@ -1225,7 +1226,7 @@ class ConversationAdapter(
if (isTimeShown) {
convViewHolder.compositeDisposable.add(timestampUpdateTimer.subscribe {
convViewHolder.mMsgDetailTxtPerm?.text =
TextUtils.timestampToDetailString(context, textMessage.timestamp)
TextUtils.timestampToDetailString(context, formatter, textMessage.timestamp)
})
convViewHolder.mMsgDetailTxtPerm?.visibility = View.VISIBLE
} else {
......@@ -1234,7 +1235,7 @@ class ConversationAdapter(
if (isExpanded) {
convViewHolder.compositeDisposable.add(timestampUpdateTimer.subscribe {
convViewHolder.mMsgDetailTxt?.text =
TextUtils.timestampToDetailString(context, textMessage.timestamp)
TextUtils.timestampToDetailString(context, formatter, textMessage.timestamp)
})
}
setItemViewExpansionState(convViewHolder, isExpanded)
......@@ -1279,7 +1280,7 @@ class ConversationAdapter(
val event = interaction as ContactEvent
Log.w(TAG, "configureForContactEvent ${event.account} ${event.event} ${event.contact} ${event.author} ")
val timestamp =
TextUtils.timestampToDetailString(viewHolder.itemView.context, event.timestamp)
TextUtils.timestampToDetailString(viewHolder.itemView.context, formatter, event.timestamp)
if (interaction.isSwarm) {
viewHolder.compositeDisposable.add(
......@@ -1388,7 +1389,7 @@ class ConversationAdapter(
if (isTimeShown) {
convViewHolder.compositeDisposable.add(timestampUpdateTimer.subscribe {
convViewHolder.mMsgDetailTxtPerm?.text =
TextUtils.timestampToDetailString(context, call.timestamp)
TextUtils.timestampToDetailString(context, formatter, call.timestamp)
})
convViewHolder.mMsgDetailTxtPerm?.visibility = View.VISIBLE
} else convViewHolder.mMsgDetailTxtPerm?.visibility = View.GONE
......
......@@ -89,6 +89,7 @@ class TvConversationAdapter(
private val markwon: Markwon = Markwon.builder(conversationFragment.requireContext())
.usePlugin(LinkifyPlugin.create())
.build()
private val formatter = Formatter(StringBuilder(64), Locale.getDefault())
/**
* Refreshes the data and notifies the changes
......@@ -448,7 +449,7 @@ class TvConversationAdapter(
private fun configureForFileInfo(viewHolder: ConversationViewHolder, interaction: Interaction, position: Int) {
val file = interaction as DataTransfer
val path = presenter.deviceRuntimeService.getConversationPath(file)
val timeString = TextUtils.timestampToDetailString(viewHolder.itemView.context, file.timestamp)
val timeString = TextUtils.timestampToDetailString(viewHolder.itemView.context, formatter, file.timestamp)
viewHolder.compositeDisposable.add(timestampUpdateTimer.subscribe {
viewHolder.mMsgDetailTxt?.text = when (val status = file.status) {
InteractionStatus.TRANSFER_FINISHED -> String.format("%s - %s", timeString,
......@@ -465,7 +466,7 @@ class TvConversationAdapter(
viewHolder.compositeDisposable.clear()
if (hasPermanentTimeString(file, position)) {
viewHolder.compositeDisposable.add(timestampUpdateTimer.subscribe {
viewHolder.mMsgDetailTxtPerm?.text = TextUtils.timestampToDetailString(viewHolder.itemView.context, file.timestamp)
viewHolder.mMsgDetailTxtPerm?.text = TextUtils.timestampToDetailString(viewHolder.itemView.context, formatter, file.timestamp)
})
viewHolder.mMsgDetailTxtPerm?.visibility = View.VISIBLE
} else {
......@@ -621,7 +622,7 @@ class TvConversationAdapter(
if (isTimeShown) {
convViewHolder.compositeDisposable.add(timestampUpdateTimer.subscribe { t: Long? ->
val timeSeparationString = TextUtils.timestampToDetailString(context, textMessage.timestamp)
val timeSeparationString = TextUtils.timestampToDetailString(context, formatter, textMessage.timestamp)
convViewHolder.mMsgDetailTxtPerm!!.text = timeSeparationString
})
convViewHolder.mMsgDetailTxtPerm!!.visibility = View.VISIBLE
......@@ -630,7 +631,7 @@ class TvConversationAdapter(
val isExpanded = position == expandedItemPosition
if (isExpanded) {
convViewHolder.compositeDisposable.add(timestampUpdateTimer.subscribe { t: Long? ->
val timeSeparationString = TextUtils.timestampToDetailString(context, textMessage.timestamp)
val timeSeparationString = TextUtils.timestampToDetailString(context, formatter, textMessage.timestamp)
convViewHolder.mMsgDetailTxt!!.text = timeSeparationString
})
}
......@@ -660,7 +661,7 @@ class TvConversationAdapter(
else -> R.string.hist_contact_added
})
viewHolder.compositeDisposable.add(timestampUpdateTimer.subscribe { t: Long? ->
val timeSeparationString = TextUtils.timestampToDetailString(viewHolder.itemView.context, event.timestamp)
val timeSeparationString = TextUtils.timestampToDetailString(viewHolder.itemView.context, formatter, event.timestamp)
viewHolder.mMsgDetailTxt?.text = timeSeparationString
})
}
......
......@@ -16,10 +16,10 @@
*/
package cx.ring.utils
import android.text.TextUtils
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.text.TextUtils
import android.text.format.DateUtils
import cx.ring.R
import net.jami.model.Interaction.InteractionStatus
......@@ -50,25 +50,26 @@ object TextUtils {
* Can be the last received message timestamp for example.
* @return The string to display in the text details between messages.
*/
fun timestampToDetailString(context: Context, timestamp: Long): String {
fun timestampToDetailString(context: Context, formatter: Formatter, timestamp: Long): String {
(formatter.out() as? StringBuilder)?.setLength(0)
val diff = Date().time - timestamp
val timeStr: String = if (diff < DateUtils.WEEK_IN_MILLIS) {
val timeStr: Formatter = if (diff < DateUtils.WEEK_IN_MILLIS) {
if (diff < DateUtils.DAY_IN_MILLIS && DateUtils.isToday(timestamp)) { // 11:32 A.M.
DateUtils.formatDateTime(context, timestamp, DateUtils.FORMAT_SHOW_TIME)
DateUtils.formatDateRange(context, formatter, timestamp, timestamp, DateUtils.FORMAT_SHOW_TIME)
} else {
DateUtils.formatDateTime(context, timestamp,
DateUtils.formatDateRange(context, formatter, timestamp, timestamp,
DateUtils.FORMAT_SHOW_WEEKDAY or DateUtils.FORMAT_NO_YEAR or
DateUtils.FORMAT_ABBREV_ALL or DateUtils.FORMAT_SHOW_TIME)
}
} else if (diff < DateUtils.YEAR_IN_MILLIS) {
DateUtils.formatDateTime(context, timestamp, DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or
DateUtils.formatDateRange(context, formatter, timestamp, timestamp, DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_NO_YEAR or
DateUtils.FORMAT_ABBREV_ALL or DateUtils.FORMAT_SHOW_TIME)
} else {
DateUtils.formatDateTime(context, timestamp, DateUtils.FORMAT_SHOW_TIME or DateUtils.FORMAT_SHOW_DATE or
DateUtils.formatDateRange(context, formatter, timestamp, timestamp, DateUtils.FORMAT_SHOW_TIME or DateUtils.FORMAT_SHOW_DATE or
DateUtils.FORMAT_SHOW_YEAR or DateUtils.FORMAT_SHOW_WEEKDAY or
DateUtils.FORMAT_ABBREV_ALL)
}
return timeStr.uppercase(Locale.getDefault())
return timeStr.out().toString().uppercase(Locale.getDefault())
}
fun getReadableFileTransferStatus(context: Context, transferStatus: InteractionStatus): String {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment