All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.tools.ozone.moderation.SubjectStatusView.kt Maven / Gradle / Ivy

The newest version!
@file:Suppress("DEPRECATION")

package tools.ozone.moderation

import com.atproto.admin.RepoRef
import com.atproto.repo.StrongRef
import kotlin.Boolean
import kotlin.Long
import kotlin.String
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.Cid
import sh.christian.ozone.api.Did
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 SubjectStatusViewSubjectUnion {
  public class AdminRepoRefSerializer : KSerializer by valueClassSerializer(
    serialName = "com.atproto.admin.defs#repoRef",
    constructor = ::AdminRepoRef,
    valueProvider = AdminRepoRef::value,
    valueSerializerProvider = { RepoRef.serializer() },
  )

  @Serializable(with = AdminRepoRefSerializer::class)
  @JvmInline
  @SerialName("com.atproto.admin.defs#repoRef")
  public value class AdminRepoRef(
    public val `value`: RepoRef,
  ) : SubjectStatusViewSubjectUnion

  public class RepoStrongRefSerializer : KSerializer by valueClassSerializer(
    serialName = "com.atproto.repo.strongRef",
    constructor = ::RepoStrongRef,
    valueProvider = RepoStrongRef::value,
    valueSerializerProvider = { StrongRef.serializer() },
  )

  @Serializable(with = RepoStrongRefSerializer::class)
  @JvmInline
  @SerialName("com.atproto.repo.strongRef")
  public value class RepoStrongRef(
    public val `value`: StrongRef,
  ) : SubjectStatusViewSubjectUnion
}

@Serializable
public sealed interface SubjectStatusViewHostingUnion {
  public class AccountHostingSerializer : KSerializer by valueClassSerializer(
    serialName = "tools.ozone.moderation.defs#accountHosting",
    constructor = ::AccountHosting,
    valueProvider = AccountHosting::value,
    valueSerializerProvider = { tools.ozone.moderation.AccountHosting.serializer() },
  )

  @Serializable(with = AccountHostingSerializer::class)
  @JvmInline
  @SerialName("tools.ozone.moderation.defs#accountHosting")
  public value class AccountHosting(
    public val `value`: tools.ozone.moderation.AccountHosting,
  ) : SubjectStatusViewHostingUnion

  public class RecordHostingSerializer : KSerializer by valueClassSerializer(
    serialName = "tools.ozone.moderation.defs#recordHosting",
    constructor = ::RecordHosting,
    valueProvider = RecordHosting::value,
    valueSerializerProvider = { tools.ozone.moderation.RecordHosting.serializer() },
  )

  @Serializable(with = RecordHostingSerializer::class)
  @JvmInline
  @SerialName("tools.ozone.moderation.defs#recordHosting")
  public value class RecordHosting(
    public val `value`: tools.ozone.moderation.RecordHosting,
  ) : SubjectStatusViewHostingUnion
}

/**
 * @param updatedAt Timestamp referencing when the last update was made to the moderation status of
 * the subject
 * @param createdAt Timestamp referencing the first moderation status impacting event was emitted on
 * the subject
 * @param comment Sticky comment on the subject.
 * @param lastAppealedAt Timestamp referencing when the author of the subject appealed a moderation
 * action
 * @param appealed True indicates that the a previously taken moderator action was appealed against,
 * by the author of the content. False indicates last appeal was resolved by moderators.
 */
@Serializable
public data class SubjectStatusView(
  public val id: Long,
  public val subject: SubjectStatusViewSubjectUnion,
  public val hosting: SubjectStatusViewHostingUnion? = null,
  public val subjectBlobCids: ReadOnlyList = persistentListOf(),
  public val subjectRepoHandle: String? = null,
  /**
   * Timestamp referencing when the last update was made to the moderation status of the subject
   */
  public val updatedAt: Timestamp,
  /**
   * Timestamp referencing the first moderation status impacting event was emitted on the subject
   */
  public val createdAt: Timestamp,
  public val reviewState: Token,
  /**
   * Sticky comment on the subject.
   */
  public val comment: String? = null,
  public val muteUntil: Timestamp? = null,
  public val muteReportingUntil: Timestamp? = null,
  public val lastReviewedBy: Did? = null,
  public val lastReviewedAt: Timestamp? = null,
  public val lastReportedAt: Timestamp? = null,
  /**
   * Timestamp referencing when the author of the subject appealed a moderation action
   */
  public val lastAppealedAt: Timestamp? = null,
  public val takendown: Boolean? = null,
  /**
   * True indicates that the a previously taken moderator action was appealed against, by the author
   * of the content. False indicates last appeal was resolved by moderators.
   */
  public val appealed: Boolean? = null,
  public val suspendUntil: Timestamp? = null,
  public val tags: ReadOnlyList = persistentListOf(),
)




© 2015 - 2024 Weber Informatics LLC | Privacy Policy