commonMain.app.bsky.feed.threadgate.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bluesky-jvm Show documentation
Show all versions of bluesky-jvm Show documentation
Bluesky Social API bindings for Kotlin.
The newest version!
@file:Suppress("DEPRECATION")
package app.bsky.feed
import kotlin.Suppress
import kotlin.jvm.JvmInline
import kotlinx.collections.immutable.persistentListOf
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import sh.christian.ozone.api.AtUri
import sh.christian.ozone.api.model.ReadOnlyList
import sh.christian.ozone.api.model.Timestamp
import sh.christian.ozone.api.runtime.valueClassSerializer
@Serializable
public sealed interface ThreadgateAllowUnion {
public class MentionRuleSerializer : KSerializer by valueClassSerializer(
serialName = "app.bsky.feed.threadgate#mentionRule",
constructor = ::MentionRule,
valueProvider = MentionRule::value,
valueSerializerProvider = { ThreadgateMentionRule.serializer() },
)
@Serializable(with = MentionRuleSerializer::class)
@JvmInline
@SerialName("app.bsky.feed.threadgate#mentionRule")
public value class MentionRule(
public val `value`: ThreadgateMentionRule,
) : ThreadgateAllowUnion
public class FollowingRuleSerializer : KSerializer by valueClassSerializer(
serialName = "app.bsky.feed.threadgate#followingRule",
constructor = ::FollowingRule,
valueProvider = FollowingRule::value,
valueSerializerProvider = { ThreadgateFollowingRule.serializer() },
)
@Serializable(with = FollowingRuleSerializer::class)
@JvmInline
@SerialName("app.bsky.feed.threadgate#followingRule")
public value class FollowingRule(
public val `value`: ThreadgateFollowingRule,
) : ThreadgateAllowUnion
public class ListRuleSerializer : KSerializer by valueClassSerializer(
serialName = "app.bsky.feed.threadgate#listRule",
constructor = ::ListRule,
valueProvider = ListRule::value,
valueSerializerProvider = { ThreadgateListRule.serializer() },
)
@Serializable(with = ListRuleSerializer::class)
@JvmInline
@SerialName("app.bsky.feed.threadgate#listRule")
public value class ListRule(
public val `value`: ThreadgateListRule,
) : ThreadgateAllowUnion
}
/**
* @param post Reference (AT-URI) to the post record.
* @param hiddenReplies List of hidden reply URIs.
*/
@Serializable
public data class Threadgate(
/**
* Reference (AT-URI) to the post record.
*/
public val post: AtUri,
public val allow: ReadOnlyList = persistentListOf(),
public val createdAt: Timestamp,
/**
* List of hidden reply URIs.
*/
public val hiddenReplies: ReadOnlyList = persistentListOf(),
) {
init {
require(allow.count() <= 5) {
"allow.count() must be <= 5, but was ${allow.count()}"
}
require(hiddenReplies.count() <= 50) {
"hiddenReplies.count() must be <= 50, but was ${hiddenReplies.count()}"
}
}
}