Stableize domain classes

This commit is contained in:
Syer10
2022-10-31 16:41:06 -04:00
parent d27dc90050
commit 6bfcf28da9
38 changed files with 92 additions and 2 deletions

View File

@@ -1,3 +1,5 @@
import org.jetbrains.compose.compose
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
id(libs.plugins.kotlin.multiplatform.get().pluginId)
@@ -52,6 +54,7 @@ kotlin {
api(libs.ktorfit.lib)
api(libs.okio)
api(libs.dateTime)
api(compose("org.jetbrains.compose.runtime:runtime"))
api(projects.core)
api(projects.i18n)
}

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.category.model
import androidx.compose.runtime.Immutable
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class Category(
val id: Long,
val order: Int,

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.chapter.model
import androidx.compose.runtime.Immutable
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class Chapter(
val url: String,
val name: String,
@@ -29,6 +31,7 @@ data class Chapter(
)
@Serializable
@Immutable
data class ChapterMeta(
var juiPageOffset: Int = 0
val juiPageOffset: Int = 0
)

View File

@@ -6,11 +6,13 @@
package ca.gosyer.jui.domain.download.model
import androidx.compose.runtime.Immutable
import ca.gosyer.jui.domain.chapter.model.Chapter
import ca.gosyer.jui.domain.manga.model.Manga
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class DownloadChapter(
val chapterIndex: Int,
val mangaId: Long,

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.download.model
import androidx.compose.runtime.Stable
import kotlinx.serialization.Serializable
@Serializable
@Stable
enum class DownloadState(val state: Int) {
Queued(0),
Downloading(1),

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.download.model
import androidx.compose.runtime.Immutable
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class DownloadStatus(
val status: DownloaderStatus,
val queue: List<DownloadChapter>

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.download.model
import androidx.compose.runtime.Stable
import kotlinx.serialization.Serializable
@Serializable
@Stable
enum class DownloaderStatus {
Started,
Stopped

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.extension.model
import androidx.compose.runtime.Immutable
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class Extension(
val name: String,
val pkgName: String,

View File

@@ -6,12 +6,14 @@
package ca.gosyer.jui.domain.library.model
import androidx.compose.runtime.Stable
import ca.gosyer.jui.i18n.MR
import dev.icerock.moko.resources.StringResource
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
@Serializable
@Stable
enum class DisplayMode(@Transient val res: StringResource) {
CompactGrid(MR.strings.display_compact),
ComfortableGrid(MR.strings.display_comfortable),
@@ -19,6 +21,8 @@ enum class DisplayMode(@Transient val res: StringResource) {
List(MR.strings.display_list);
companion object {
val values = values().asList()
val values by lazy {
values().asList()
}
}
}

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.library.model
import androidx.compose.runtime.Stable
import kotlinx.serialization.Serializable
@Serializable
@Stable
enum class FilterState {
IGNORED,
INCLUDED,

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.library.model
import androidx.compose.runtime.Stable
import kotlinx.serialization.Serializable
@Serializable
@Stable
enum class JobStatus {
PENDING,
RUNNING,

View File

@@ -6,12 +6,14 @@
package ca.gosyer.jui.domain.library.model
import androidx.compose.runtime.Stable
import ca.gosyer.jui.i18n.MR
import dev.icerock.moko.resources.StringResource
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
@Serializable
@Stable
enum class Sort(@Transient val res: StringResource) {
ALPHABETICAL(MR.strings.sort_alphabetical),

View File

@@ -6,10 +6,12 @@
package ca.gosyer.jui.domain.library.model
import androidx.compose.runtime.Immutable
import ca.gosyer.jui.domain.manga.model.Manga
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class UpdateStatus(
val statusMap: Map<JobStatus, List<Manga>>,
val running: Boolean

View File

@@ -6,6 +6,8 @@
package ca.gosyer.jui.domain.manga.model
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.Stable
import ca.gosyer.jui.domain.source.model.Source
import ca.gosyer.jui.i18n.MR
import dev.icerock.moko.resources.StringResource
@@ -13,6 +15,7 @@ import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
@Serializable
@Immutable
data class Manga(
val id: Long,
val sourceId: Long,
@@ -36,6 +39,7 @@ data class Manga(
)
@Serializable
@Immutable
data class MangaMeta(
val juiReaderMode: String = DEFAULT_READER_MODE
) {
@@ -45,6 +49,7 @@ data class MangaMeta(
}
@Serializable
@Stable
enum class MangaStatus(@Transient val res: StringResource) {
UNKNOWN(MR.strings.status_unknown),
ONGOING(MR.strings.status_ongoing),

View File

@@ -6,6 +6,9 @@
package ca.gosyer.jui.domain.reader.model
import androidx.compose.runtime.Stable
@Stable
enum class DefaultReaderMode(
val res: String,
val continuous: Boolean,

View File

@@ -6,12 +6,14 @@
package ca.gosyer.jui.domain.reader.model
import androidx.compose.runtime.Stable
import ca.gosyer.jui.i18n.MR
import dev.icerock.moko.resources.StringResource
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
@Serializable
@Stable
enum class Direction(@Transient val res: StringResource) {
Down(MR.strings.dir_down),
Left(MR.strings.dir_rtl),

View File

@@ -6,12 +6,14 @@
package ca.gosyer.jui.domain.reader.model
import androidx.compose.runtime.Stable
import ca.gosyer.jui.i18n.MR
import dev.icerock.moko.resources.StringResource
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
@Serializable
@Stable
enum class ImageScale(@Transient val res: StringResource) {
FitScreen(MR.strings.scale_fit_screen),
Stretch(MR.strings.scale_stretch),

View File

@@ -6,12 +6,14 @@
package ca.gosyer.jui.domain.reader.model
import androidx.compose.runtime.Stable
import ca.gosyer.jui.i18n.MR
import dev.icerock.moko.resources.StringResource
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
@Serializable
@Stable
enum class NavigationMode(@Transient val res: StringResource) {
LNavigation(MR.strings.nav_l_shaped),
KindlishNavigation(MR.strings.nav_kindle_ish),

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.reader.model
import androidx.compose.runtime.Stable
import kotlinx.serialization.Serializable
@Serializable
@Stable
enum class TappingInvertMode(val shouldInvertHorizontal: Boolean = false, val shouldInvertVertical: Boolean = false) {
NONE,
HORIZONTAL(shouldInvertHorizontal = true),

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.server.model
import androidx.compose.runtime.Stable
import kotlinx.serialization.Serializable
@Serializable
@Stable
enum class Auth {
NONE,
BASIC,

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.server.model
import androidx.compose.runtime.Stable
import kotlinx.serialization.Serializable
@Serializable
@Stable
enum class Proxy {
NO_PROXY,
HTTP_PROXY,

View File

@@ -6,9 +6,12 @@
package ca.gosyer.jui.domain.settings.model
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.Stable
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class About(
val name: String,
val version: String,
@@ -20,6 +23,7 @@ data class About(
)
@Serializable
@Stable
enum class AboutBuildType {
Preview,
Stable

View File

@@ -6,10 +6,12 @@
package ca.gosyer.jui.domain.source.model
import androidx.compose.runtime.Stable
import ca.gosyer.jui.domain.manga.model.Manga
import kotlinx.serialization.Serializable
@Serializable
@Stable
data class MangaPage(
val mangaList: List<Manga>,
val hasNextPage: Boolean

View File

@@ -6,10 +6,12 @@
package ca.gosyer.jui.domain.source.model
import androidx.compose.runtime.Stable
import kotlinx.serialization.Serializable
import ca.gosyer.jui.core.io.Serializable as JvmSerializable
@Serializable
@Stable
data class Source(
val id: Long,
val name: String,

View File

@@ -6,11 +6,13 @@
package ca.gosyer.jui.domain.source.model.sourcepreference
import androidx.compose.runtime.Immutable
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
@SerialName("CheckBoxPreference")
@Immutable
data class CheckBoxPreference(
override val props: TwoStateProps
) : SourcePreference()

View File

@@ -6,15 +6,18 @@
package ca.gosyer.jui.domain.source.model.sourcepreference
import androidx.compose.runtime.Immutable
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
@SerialName("EditTextPreference")
@Immutable
data class EditTextPreference(
override val props: EditTextProps
) : SourcePreference() {
@Serializable
@Immutable
data class EditTextProps(
override val key: String,
override val title: String?,

View File

@@ -6,13 +6,16 @@
package ca.gosyer.jui.domain.source.model.sourcepreference
import androidx.compose.runtime.Immutable
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
@SerialName("ListPreference")
@Immutable
data class ListPreference(override val props: ListProps) : SourcePreference() {
@Serializable
@Immutable
data class ListProps(
override val key: String,
override val title: String,

View File

@@ -6,13 +6,16 @@
package ca.gosyer.jui.domain.source.model.sourcepreference
import androidx.compose.runtime.Immutable
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
@SerialName("MultiSelectListPreference")
@Immutable
data class MultiSelectListPreference(override val props: MultiSelectListProps) : SourcePreference() {
@Serializable
@Immutable
data class MultiSelectListProps(
override val key: String,
override val title: String,

View File

@@ -6,13 +6,16 @@
package ca.gosyer.jui.domain.source.model.sourcepreference
import androidx.compose.runtime.Immutable
import kotlinx.serialization.Serializable
@Serializable
@Immutable
sealed class SourcePreference {
abstract val props: Props<*>
}
@Immutable
interface Props<T> {
val key: String
val title: String?

View File

@@ -6,11 +6,13 @@
package ca.gosyer.jui.domain.source.model.sourcepreference
import androidx.compose.runtime.Immutable
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
@SerialName("SwitchPreferenceCompat")
@Immutable
data class SwitchPreference(
override val props: TwoStateProps
) : SourcePreference()

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.source.model.sourcepreference
import androidx.compose.runtime.Immutable
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class TwoStateProps(
override val key: String,
override val title: String?,

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.ui.model
import androidx.compose.runtime.Stable
import kotlinx.serialization.Serializable
@Serializable
@Stable
enum class StartScreen {
Library,
Updates,

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.ui.model
import androidx.compose.runtime.Stable
import kotlinx.serialization.Serializable
@Serializable
@Stable
enum class ThemeMode {
System,
Light,

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.ui.model
import androidx.compose.runtime.Immutable
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class WindowSettings(
val x: Int? = null,
val y: Int? = null,

View File

@@ -6,10 +6,12 @@
package ca.gosyer.jui.domain.updates.model
import androidx.compose.runtime.Immutable
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class GithubRelease(
@SerialName("tag_name") val version: String,
@SerialName("body") val info: String,

View File

@@ -6,11 +6,13 @@
package ca.gosyer.jui.domain.updates.model
import androidx.compose.runtime.Immutable
import ca.gosyer.jui.domain.chapter.model.Chapter
import ca.gosyer.jui.domain.manga.model.Manga
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class MangaAndChapter(
val manga: Manga,
val chapter: Chapter

View File

@@ -6,9 +6,11 @@
package ca.gosyer.jui.domain.updates.model
import androidx.compose.runtime.Immutable
import kotlinx.serialization.Serializable
@Serializable
@Immutable
data class Updates(
val page: List<MangaAndChapter>,
val hasNextPage: Boolean

View File

@@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.RowScope
import androidx.compose.material.MenuDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.Stable
import androidx.compose.runtime.remember
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
@@ -22,6 +23,7 @@ import androidx.compose.ui.unit.dp
/**
* Policy on setting [WindowManager.LayoutParams.FLAG_SECURE] on a window.
*/
@Stable
enum class SecureFlagPolicy {
/**
* Inherit [WindowManager.LayoutParams.FLAG_SECURE] from the parent window and pass it on the