kopia lustrzana https://github.com/ryukoposting/Signal-Android
37 wiersze
1.2 KiB
Kotlin
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
|
|
}
|
|
}
|