2021-09-02 20:04:43 +00:00
|
|
|
package org.thoughtcrime.securesms.mediasend.v2
|
|
|
|
|
|
|
|
import android.net.Uri
|
2022-06-03 22:07:29 +00:00
|
|
|
import org.thoughtcrime.securesms.conversation.MessageSendType
|
2021-10-01 18:18:14 +00:00
|
|
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
2021-09-02 20:04:43 +00:00
|
|
|
import org.thoughtcrime.securesms.mediasend.Media
|
|
|
|
import org.thoughtcrime.securesms.mediasend.MediaSendConstants
|
|
|
|
import org.thoughtcrime.securesms.mms.SentMediaQuality
|
|
|
|
import org.thoughtcrime.securesms.recipients.Recipient
|
|
|
|
|
|
|
|
data class MediaSelectionState(
|
2022-06-03 22:07:29 +00:00
|
|
|
val sendType: MessageSendType,
|
2021-09-02 20:04:43 +00:00
|
|
|
val selectedMedia: List<Media> = listOf(),
|
|
|
|
val focusedMedia: Media? = null,
|
|
|
|
val recipient: Recipient? = null,
|
2021-10-01 18:18:14 +00:00
|
|
|
val quality: SentMediaQuality = SignalStore.settings().sentMediaQuality,
|
2021-09-02 20:04:43 +00:00
|
|
|
val message: CharSequence? = null,
|
|
|
|
val viewOnceToggleState: ViewOnceToggleState = ViewOnceToggleState.INFINITE,
|
|
|
|
val isTouchEnabled: Boolean = true,
|
|
|
|
val isSent: Boolean = false,
|
|
|
|
val isPreUploadEnabled: Boolean = false,
|
|
|
|
val isMeteredConnection: Boolean = false,
|
|
|
|
val editorStateMap: Map<Uri, Any> = mapOf(),
|
2022-03-30 13:20:08 +00:00
|
|
|
val cameraFirstCapture: Media? = null,
|
|
|
|
val isStory: Boolean
|
2021-09-02 20:04:43 +00:00
|
|
|
) {
|
|
|
|
|
2022-06-03 22:07:29 +00:00
|
|
|
val maxSelection = if (sendType.usesSmsTransport) {
|
2021-09-02 20:04:43 +00:00
|
|
|
MediaSendConstants.MAX_SMS
|
|
|
|
} else {
|
|
|
|
MediaSendConstants.MAX_PUSH
|
|
|
|
}
|
|
|
|
|
2021-12-17 22:03:41 +00:00
|
|
|
val canSend = !isSent && selectedMedia.isNotEmpty()
|
|
|
|
|
2021-09-02 20:04:43 +00:00
|
|
|
enum class ViewOnceToggleState(val code: Int) {
|
|
|
|
INFINITE(0),
|
|
|
|
ONCE(1);
|
|
|
|
|
|
|
|
fun next(): ViewOnceToggleState {
|
|
|
|
return when (this) {
|
|
|
|
INFINITE -> ONCE
|
|
|
|
ONCE -> INFINITE
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
fun fromCode(code: Int): ViewOnceToggleState {
|
|
|
|
return when (code) {
|
|
|
|
1 -> ONCE
|
|
|
|
else -> INFINITE
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|