PlaguPoster/ratings/selector/src/commonMain/kotlin/models/TimeConfig.kt

36 lines
999 B
Kotlin
Raw Normal View History

2022-09-06 17:56:58 +00:00
package dev.inmo.plaguposter.ratings.selector.models
2023-08-12 17:58:28 +00:00
import korlibs.time.*
2022-09-06 17:56:58 +00:00
import kotlinx.serialization.*
import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
@Serializable
class TimeConfig(
@Serializable(TimeSerializer::class)
val from: Time,
@Serializable(TimeSerializer::class)
val to: Time
) {
@Transient
val range = from .. to
2022-09-06 18:23:14 +00:00
fun isActive(now: Time): Boolean = now in range
2022-09-06 17:56:58 +00:00
object TimeSerializer : KSerializer<Time> {
val format = TimeFormat("HH:mm")
override val descriptor: SerialDescriptor = String.serializer().descriptor
override fun deserialize(decoder: Decoder): Time {
return format.parseTime(decoder.decodeString())
}
override fun serialize(encoder: Encoder, value: Time) {
encoder.encodeString(format.format(value))
}
}
}