Don't mark outgoing media as upload only.

This commit is contained in:
Nicholas Tinsley
2024-02-15 21:26:30 -05:00
committed by GitHub
parent dd9c65012b
commit c713ccf76c
3 changed files with 27 additions and 10 deletions

View File

@@ -20,6 +20,7 @@ import org.greenrobot.eventbus.ThreadMode
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.attachments.Attachment
import org.thoughtcrime.securesms.attachments.DatabaseAttachment
import org.thoughtcrime.securesms.components.RecyclerViewParentTransitionController
import org.thoughtcrime.securesms.database.AttachmentTable
import org.thoughtcrime.securesms.databinding.TransferControlsViewBinding
@@ -108,7 +109,7 @@ class TransferControlView @JvmOverloads constructor(context: Context, attrs: Att
if (currentState.slides.size == 1) {
val slide = currentState.slides.first()
if (slide.hasVideo()) {
if (currentState.isOutgoing) {
if (currentState.isUpload) {
return when (slide.transferState) {
AttachmentTable.TRANSFER_PROGRESS_STARTED -> {
Mode.UPLOADING_SINGLE_ITEM
@@ -146,7 +147,7 @@ class TransferControlView @JvmOverloads constructor(context: Context, attrs: Att
}
}
} else {
return if (currentState.isOutgoing) {
return if (currentState.isUpload) {
when (slide.transferState) {
AttachmentTable.TRANSFER_PROGRESS_FAILED -> {
Mode.RETRY_UPLOADING
@@ -179,7 +180,7 @@ class TransferControlView @JvmOverloads constructor(context: Context, attrs: Att
} else {
when (getTransferState(currentState.slides)) {
AttachmentTable.TRANSFER_PROGRESS_STARTED -> {
return if (currentState.isOutgoing) {
return if (currentState.isUpload) {
Mode.UPLOADING_GALLERY
} else {
Mode.DOWNLOADING_GALLERY
@@ -195,7 +196,7 @@ class TransferControlView @JvmOverloads constructor(context: Context, attrs: Att
}
AttachmentTable.TRANSFER_PROGRESS_FAILED -> {
return if (currentState.isOutgoing) {
return if (currentState.isUpload) {
Mode.RETRY_UPLOADING
} else {
Mode.RETRY_DOWNLOADING
@@ -557,14 +558,14 @@ class TransferControlView @JvmOverloads constructor(context: Context, attrs: Att
}
}
val playableWhileDownloading = allStreamableOrDone
val isOutgoing = slides.any { it.asAttachment().uploadTimestamp == 0L }
val isUpload = slides.any { it.asAttachment().uploadTimestamp == 0L } && slides.all { (it.asAttachment() as? DatabaseAttachment)?.hasData == true }
val result = state.copy(
slides = slides,
networkProgress = networkProgress,
compressionProgress = compressionProgress,
playableWhileDownloading = playableWhileDownloading,
isOutgoing = isOutgoing
isUpload = isUpload
)
verboseLog("New state calculated and being returned for new slides: ${slidesAsListOfTimestamps(slides)}\n$result")
return@updateState result

View File

@@ -21,5 +21,5 @@ data class TransferControlViewState(
val networkProgress: Map<Attachment, TransferControlView.Progress> = HashMap(),
val compressionProgress: Map<Attachment, TransferControlView.Progress> = HashMap(),
val playableWhileDownloading: Boolean = false,
val isOutgoing: Boolean = false
val isUpload: Boolean = false
)