Fix progress of message with attachment
This commit is contained in:
parent
4e7790966f
commit
55dcba6f36
|
@ -77,7 +77,7 @@ private class ContentMediaProgressUpdater(private val progressLayout: ViewGroup,
|
||||||
is ContentUploadStateTracker.State.UploadingThumbnail -> handleProgressThumbnail(state)
|
is ContentUploadStateTracker.State.UploadingThumbnail -> handleProgressThumbnail(state)
|
||||||
is ContentUploadStateTracker.State.Encrypting -> handleEncrypting(state)
|
is ContentUploadStateTracker.State.Encrypting -> handleEncrypting(state)
|
||||||
is ContentUploadStateTracker.State.Uploading -> handleProgress(state)
|
is ContentUploadStateTracker.State.Uploading -> handleProgress(state)
|
||||||
is ContentUploadStateTracker.State.Failure -> handleFailure(state)
|
is ContentUploadStateTracker.State.Failure -> handleFailure(/*state*/)
|
||||||
is ContentUploadStateTracker.State.Success -> handleSuccess()
|
is ContentUploadStateTracker.State.Success -> handleSuccess()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,6 +120,7 @@ private class ContentMediaProgressUpdater(private val progressLayout: ViewGroup,
|
||||||
val progressTextView = progressLayout.findViewById<TextView>(R.id.mediaProgressTextView)
|
val progressTextView = progressLayout.findViewById<TextView>(R.id.mediaProgressTextView)
|
||||||
progressBar?.isIndeterminate = false
|
progressBar?.isIndeterminate = false
|
||||||
progressBar?.progress = percent.toInt()
|
progressBar?.progress = percent.toInt()
|
||||||
|
progressTextView.isVisible = true
|
||||||
progressTextView?.text = progressLayout.context.getString(resId)
|
progressTextView?.text = progressLayout.context.getString(resId)
|
||||||
progressTextView?.setTextColor(messageColorProvider.getMessageTextColor(SendState.ENCRYPTING))
|
progressTextView?.setTextColor(messageColorProvider.getMessageTextColor(SendState.ENCRYPTING))
|
||||||
}
|
}
|
||||||
|
@ -132,19 +133,23 @@ private class ContentMediaProgressUpdater(private val progressLayout: ViewGroup,
|
||||||
progressBar?.isVisible = true
|
progressBar?.isVisible = true
|
||||||
progressBar?.isIndeterminate = false
|
progressBar?.isIndeterminate = false
|
||||||
progressBar?.progress = percent.toInt()
|
progressBar?.progress = percent.toInt()
|
||||||
|
progressTextView.isVisible = true
|
||||||
progressTextView?.text = progressLayout.context.getString(resId,
|
progressTextView?.text = progressLayout.context.getString(resId,
|
||||||
TextUtils.formatFileSize(progressLayout.context, current, true),
|
TextUtils.formatFileSize(progressLayout.context, current, true),
|
||||||
TextUtils.formatFileSize(progressLayout.context, total, true))
|
TextUtils.formatFileSize(progressLayout.context, total, true))
|
||||||
progressTextView?.setTextColor(messageColorProvider.getMessageTextColor(SendState.SENDING))
|
progressTextView?.setTextColor(messageColorProvider.getMessageTextColor(SendState.SENDING))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleFailure(state: ContentUploadStateTracker.State.Failure) {
|
private fun handleFailure(/*state: ContentUploadStateTracker.State.Failure*/) {
|
||||||
progressLayout.visibility = View.VISIBLE
|
progressLayout.visibility = View.VISIBLE
|
||||||
val progressBar = progressLayout.findViewById<ProgressBar>(R.id.mediaProgressBar)
|
val progressBar = progressLayout.findViewById<ProgressBar>(R.id.mediaProgressBar)
|
||||||
val progressTextView = progressLayout.findViewById<TextView>(R.id.mediaProgressTextView)
|
val progressTextView = progressLayout.findViewById<TextView>(R.id.mediaProgressTextView)
|
||||||
progressBar?.isVisible = false
|
progressBar?.isVisible = false
|
||||||
progressTextView?.text = errorFormatter.toHumanReadable(state.throwable)
|
// Do not show the message it's too technical for users, and unfortunate when upload is cancelled
|
||||||
progressTextView?.setTextColor(messageColorProvider.getMessageTextColor(SendState.UNDELIVERED))
|
// in the middle by turning airplane mode for example
|
||||||
|
progressTextView.isVisible = false
|
||||||
|
// progressTextView?.text = errorFormatter.toHumanReadable(state.throwable)
|
||||||
|
// progressTextView?.setTextColor(messageColorProvider.getMessageTextColor(SendState.UNDELIVERED))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleSuccess() {
|
private fun handleSuccess() {
|
||||||
|
|
|
@ -28,6 +28,7 @@ import com.airbnb.epoxy.EpoxyModelClass
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import im.vector.app.features.home.room.detail.timeline.helper.ContentDownloadStateTrackerBinder
|
import im.vector.app.features.home.room.detail.timeline.helper.ContentDownloadStateTrackerBinder
|
||||||
import im.vector.app.features.home.room.detail.timeline.helper.ContentUploadStateTrackerBinder
|
import im.vector.app.features.home.room.detail.timeline.helper.ContentUploadStateTrackerBinder
|
||||||
|
import org.matrix.android.sdk.api.session.room.send.SendState
|
||||||
|
|
||||||
@EpoxyModelClass(layout = R.layout.item_timeline_event_base)
|
@EpoxyModelClass(layout = R.layout.item_timeline_event_base)
|
||||||
abstract class MessageFileItem : AbsMessageItem<MessageFileItem.Holder>() {
|
abstract class MessageFileItem : AbsMessageItem<MessageFileItem.Holder>() {
|
||||||
|
@ -87,7 +88,12 @@ abstract class MessageFileItem : AbsMessageItem<MessageFileItem.Holder>() {
|
||||||
holder.fileImageWrapper.setOnLongClickListener(attributes.itemLongClickListener)
|
holder.fileImageWrapper.setOnLongClickListener(attributes.itemLongClickListener)
|
||||||
holder.filenameView.paintFlags = (holder.filenameView.paintFlags or Paint.UNDERLINE_TEXT_FLAG)
|
holder.filenameView.paintFlags = (holder.filenameView.paintFlags or Paint.UNDERLINE_TEXT_FLAG)
|
||||||
|
|
||||||
holder.eventSendingIndicator.isVisible = attributes.informationData.sendState.isInProgress()
|
holder.eventSendingIndicator.isVisible = when (attributes.informationData.sendState) {
|
||||||
|
SendState.UNSENT,
|
||||||
|
SendState.ENCRYPTING,
|
||||||
|
SendState.SENDING -> true
|
||||||
|
else -> false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun unbind(holder: Holder) {
|
override fun unbind(holder: Holder) {
|
||||||
|
|
|
@ -28,6 +28,7 @@ import im.vector.app.R
|
||||||
import im.vector.app.core.glide.GlideApp
|
import im.vector.app.core.glide.GlideApp
|
||||||
import im.vector.app.features.home.room.detail.timeline.helper.ContentUploadStateTrackerBinder
|
import im.vector.app.features.home.room.detail.timeline.helper.ContentUploadStateTrackerBinder
|
||||||
import im.vector.app.features.media.ImageContentRenderer
|
import im.vector.app.features.media.ImageContentRenderer
|
||||||
|
import org.matrix.android.sdk.api.session.room.send.SendState
|
||||||
|
|
||||||
@EpoxyModelClass(layout = R.layout.item_timeline_event_base)
|
@EpoxyModelClass(layout = R.layout.item_timeline_event_base)
|
||||||
abstract class MessageImageVideoItem : AbsMessageItem<MessageImageVideoItem.Holder>() {
|
abstract class MessageImageVideoItem : AbsMessageItem<MessageImageVideoItem.Holder>() {
|
||||||
|
@ -62,7 +63,12 @@ abstract class MessageImageVideoItem : AbsMessageItem<MessageImageVideoItem.Hold
|
||||||
renderSendState(holder.imageView, null, holder.failedToSendIndicator)
|
renderSendState(holder.imageView, null, holder.failedToSendIndicator)
|
||||||
holder.playContentView.visibility = if (playable) View.VISIBLE else View.GONE
|
holder.playContentView.visibility = if (playable) View.VISIBLE else View.GONE
|
||||||
|
|
||||||
holder.eventSendingIndicator.isVisible = attributes.informationData.sendState.isInProgress()
|
holder.eventSendingIndicator.isVisible = when (attributes.informationData.sendState) {
|
||||||
|
SendState.UNSENT,
|
||||||
|
SendState.ENCRYPTING,
|
||||||
|
SendState.SENDING -> true
|
||||||
|
else -> false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun unbind(holder: Holder) {
|
override fun unbind(holder: Holder) {
|
||||||
|
|
Loading…
Reference in New Issue