mirror of
https://github.com/Suwayomi/TachideskJUI.git
synced 2025-12-10 14:52:03 +01:00
Stableize domain classes
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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),
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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?,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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?,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user