Signal-Android/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionState.kt

57 wiersze
1.6 KiB
Kotlin

package org.thoughtcrime.securesms.mediasend.v2
import android.net.Uri
import org.thoughtcrime.securesms.conversation.MessageSendType
import org.thoughtcrime.securesms.keyvalue.SignalStore
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(
val sendType: MessageSendType,
val selectedMedia: List<Media> = listOf(),
val focusedMedia: Media? = null,
val recipient: Recipient? = null,
val quality: SentMediaQuality = SignalStore.settings().sentMediaQuality,
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(),
val cameraFirstCapture: Media? = null,
val isStory: Boolean
) {
val maxSelection = if (sendType.usesSmsTransport) {
MediaSendConstants.MAX_SMS
} else {
MediaSendConstants.MAX_PUSH
}
val canSend = !isSent && selectedMedia.isNotEmpty()
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
}
}
}
}
}