Signal-Android/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerState.kt

37 wiersze
1.2 KiB
Kotlin

package org.thoughtcrime.securesms.stories.viewer
import android.net.Uri
import org.thoughtcrime.securesms.blurhash.BlurHash
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.stories.StoryTextPostModel
data class StoryViewerState(
val pages: List<RecipientId> = emptyList(),
val previousPage: Int = -1,
val page: Int = -1,
val crossfadeSource: CrossfadeSource,
val crossfadeTarget: CrossfadeTarget? = null,
val loadState: LoadState = LoadState(),
val skipCrossfade: Boolean = false,
val noPosts: Boolean = false
) {
sealed class CrossfadeSource {
object None : CrossfadeSource()
class ImageUri(val imageUri: Uri, val imageBlur: BlurHash?) : CrossfadeSource()
class TextModel(val storyTextPostModel: StoryTextPostModel) : CrossfadeSource()
}
sealed class CrossfadeTarget {
object None : CrossfadeTarget()
data class Record(val messageRecord: MmsMessageRecord) : CrossfadeTarget()
}
data class LoadState(
val isContentReady: Boolean = false,
val isCrossfaderReady: Boolean = false
) {
fun isReady(): Boolean = isContentReady && isCrossfaderReady
}
}