Fix transfer control showing stale data or not responding.
This commit is contained in:
parent
fc856dd500
commit
16232e2f9f
@ -90,13 +90,22 @@ class TransferControlView @JvmOverloads constructor(context: Context, attrs: Att
|
||||
val newRender = TransferControls.deriveRenderState(newState)
|
||||
state = newState
|
||||
|
||||
if (oldRender != newRender) {
|
||||
verboseLog { "render $oldRender -> $newRender slides=[${slidesAsLogString(newState.slides)}]" }
|
||||
if (oldRender == newRender) {
|
||||
return
|
||||
}
|
||||
|
||||
verboseLog { "render $oldRender -> $newRender slides=[${slidesAsLogString(newState.slides)}]" }
|
||||
|
||||
if (oldRender is TransferControlsRenderState.InProgress && oldRender.isProgressOnlyDifference(newRender)) {
|
||||
progressUpdateDebouncer.publish {
|
||||
renderState = newRender
|
||||
if (newRender !is TransferControlsRenderState.Gone) {
|
||||
visibility = VISIBLE
|
||||
}
|
||||
visibility = VISIBLE
|
||||
}
|
||||
} else {
|
||||
progressUpdateDebouncer.clear()
|
||||
renderState = newRender
|
||||
if (newRender !is TransferControlsRenderState.Gone) {
|
||||
visibility = VISIBLE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -319,7 +319,11 @@ sealed interface TransferControlsRenderState {
|
||||
val showPlayButton: Boolean,
|
||||
val cancelable: Boolean,
|
||||
val label: TransferControls.ProgressLabel?
|
||||
) : TransferControlsRenderState
|
||||
) : TransferControlsRenderState {
|
||||
fun isProgressOnlyDifference(other: TransferControlsRenderState): Boolean {
|
||||
return other is InProgress && copy(progress = other.progress, label = other.label) == other
|
||||
}
|
||||
}
|
||||
|
||||
data class Retry(
|
||||
val isUpload: Boolean
|
||||
|
||||
Loading…
Reference in New Issue
Block a user