From 6bfcf28da9ba118840ef57243129209f26bc7595 Mon Sep 17 00:00:00 2001 From: Syer10 Date: Mon, 31 Oct 2022 16:41:06 -0400 Subject: [PATCH] Stableize domain classes --- domain/build.gradle.kts | 3 +++ .../kotlin/ca/gosyer/jui/domain/category/model/Category.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/chapter/model/Chapter.kt | 5 ++++- .../ca/gosyer/jui/domain/download/model/DownloadChapter.kt | 2 ++ .../ca/gosyer/jui/domain/download/model/DownloadState.kt | 2 ++ .../ca/gosyer/jui/domain/download/model/DownloadStatus.kt | 2 ++ .../ca/gosyer/jui/domain/download/model/DownloaderStatus.kt | 2 ++ .../ca/gosyer/jui/domain/extension/model/Extension.kt | 2 ++ .../ca/gosyer/jui/domain/library/model/DisplayMode.kt | 6 +++++- .../ca/gosyer/jui/domain/library/model/FilterState.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/library/model/JobStatus.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/library/model/Sort.kt | 2 ++ .../ca/gosyer/jui/domain/library/model/UpdateStatus.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/manga/model/Manga.kt | 5 +++++ .../ca/gosyer/jui/domain/reader/model/DefaultReaderMode.kt | 3 +++ .../kotlin/ca/gosyer/jui/domain/reader/model/Direction.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/reader/model/ImageScale.kt | 2 ++ .../ca/gosyer/jui/domain/reader/model/NavigationMode.kt | 2 ++ .../ca/gosyer/jui/domain/reader/model/TappingInvertMode.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/server/model/Auth.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/server/model/Proxy.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/settings/model/About.kt | 4 ++++ .../kotlin/ca/gosyer/jui/domain/source/model/MangaPage.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/source/model/Source.kt | 2 ++ .../source/model/sourcepreference/CheckBoxPreference.kt | 2 ++ .../source/model/sourcepreference/EditTextPreference.kt | 3 +++ .../domain/source/model/sourcepreference/ListPreference.kt | 3 +++ .../model/sourcepreference/MultiSelectListPreference.kt | 3 +++ .../source/model/sourcepreference/SourcePreference.kt | 3 +++ .../source/model/sourcepreference/SwitchPreference.kt | 2 ++ .../domain/source/model/sourcepreference/TwoStateProps.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/ui/model/StartScreen.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/ui/model/ThemeMode.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/ui/model/WindowSettings.kt | 2 ++ .../ca/gosyer/jui/domain/updates/model/GithubRelease.kt | 2 ++ .../ca/gosyer/jui/domain/updates/model/MangaAndChapter.kt | 2 ++ .../kotlin/ca/gosyer/jui/domain/updates/model/Updates.kt | 2 ++ .../kotlin/ca/gosyer/jui/uicore/components/DropDownMenu.kt | 2 ++ 38 files changed, 92 insertions(+), 2 deletions(-) diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts index 0a86e02c..4c8b3ebe 100644 --- a/domain/build.gradle.kts +++ b/domain/build.gradle.kts @@ -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) } diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/category/model/Category.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/category/model/Category.kt index 730bd239..b251f55b 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/category/model/Category.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/category/model/Category.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/chapter/model/Chapter.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/chapter/model/Chapter.kt index 4916f9e2..a8bd58c8 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/chapter/model/Chapter.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/chapter/model/Chapter.kt @@ -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 ) diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadChapter.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadChapter.kt index b7e8be75..549051ee 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadChapter.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadChapter.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadState.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadState.kt index 687b6645..e9d94b91 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadState.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadState.kt @@ -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), diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadStatus.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadStatus.kt index 9babe6a2..817ce44c 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadStatus.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloadStatus.kt @@ -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 diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloaderStatus.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloaderStatus.kt index 713d7752..6f201d34 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloaderStatus.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/download/model/DownloaderStatus.kt @@ -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 diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/extension/model/Extension.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/extension/model/Extension.kt index 54312e84..9b47d9d0 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/extension/model/Extension.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/extension/model/Extension.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/DisplayMode.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/DisplayMode.kt index be994832..b8026829 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/DisplayMode.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/DisplayMode.kt @@ -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() + } } } diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/FilterState.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/FilterState.kt index ac6340c3..ffd5b3b1 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/FilterState.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/FilterState.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/JobStatus.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/JobStatus.kt index 62562f48..e3a4b800 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/JobStatus.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/JobStatus.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/Sort.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/Sort.kt index 89391a53..12098794 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/Sort.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/Sort.kt @@ -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), diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/UpdateStatus.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/UpdateStatus.kt index f8be7b06..05e96458 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/UpdateStatus.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/library/model/UpdateStatus.kt @@ -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>, val running: Boolean diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/manga/model/Manga.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/manga/model/Manga.kt index e37a39c9..500991c2 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/manga/model/Manga.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/manga/model/Manga.kt @@ -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), diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/DefaultReaderMode.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/DefaultReaderMode.kt index 85ec3a02..a839559e 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/DefaultReaderMode.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/DefaultReaderMode.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/Direction.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/Direction.kt index 727084da..9780514e 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/Direction.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/Direction.kt @@ -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), diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/ImageScale.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/ImageScale.kt index f2ccd228..8aed53be 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/ImageScale.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/ImageScale.kt @@ -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), diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/NavigationMode.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/NavigationMode.kt index 440ff3a5..f5919cc4 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/NavigationMode.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/NavigationMode.kt @@ -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), diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/TappingInvertMode.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/TappingInvertMode.kt index 7918dc74..4912ce72 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/TappingInvertMode.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/reader/model/TappingInvertMode.kt @@ -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), diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/server/model/Auth.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/server/model/Auth.kt index 4b8bf08d..7a1c7fef 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/server/model/Auth.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/server/model/Auth.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/server/model/Proxy.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/server/model/Proxy.kt index 02c920cf..b63c800a 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/server/model/Proxy.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/server/model/Proxy.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/settings/model/About.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/settings/model/About.kt index 25f43e3c..87a58eab 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/settings/model/About.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/settings/model/About.kt @@ -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 diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/MangaPage.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/MangaPage.kt index e58810b1..40f46005 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/MangaPage.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/MangaPage.kt @@ -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, val hasNextPage: Boolean diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/Source.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/Source.kt index 3f5285ea..cb7377d8 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/Source.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/Source.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/CheckBoxPreference.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/CheckBoxPreference.kt index 621832a6..c7d40c91 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/CheckBoxPreference.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/CheckBoxPreference.kt @@ -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() diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/EditTextPreference.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/EditTextPreference.kt index 7f5fc964..b9ed63d5 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/EditTextPreference.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/EditTextPreference.kt @@ -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?, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/ListPreference.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/ListPreference.kt index f5e25c6d..f83413bd 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/ListPreference.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/ListPreference.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/MultiSelectListPreference.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/MultiSelectListPreference.kt index a465f1f1..aca73dc4 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/MultiSelectListPreference.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/MultiSelectListPreference.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/SourcePreference.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/SourcePreference.kt index ba31221b..87b58456 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/SourcePreference.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/SourcePreference.kt @@ -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 { val key: String val title: String? diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/SwitchPreference.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/SwitchPreference.kt index b2751cd7..00e27ecd 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/SwitchPreference.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/SwitchPreference.kt @@ -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() diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/TwoStateProps.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/TwoStateProps.kt index aa58b5eb..066ad90b 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/TwoStateProps.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/source/model/sourcepreference/TwoStateProps.kt @@ -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?, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/StartScreen.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/StartScreen.kt index ceb5450c..659ec304 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/StartScreen.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/StartScreen.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/ThemeMode.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/ThemeMode.kt index 2861ba32..1e5c0526 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/ThemeMode.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/ThemeMode.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/WindowSettings.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/WindowSettings.kt index d3db2e48..a1444f91 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/WindowSettings.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/ui/model/WindowSettings.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/GithubRelease.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/GithubRelease.kt index 250a0f58..c776bf37 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/GithubRelease.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/GithubRelease.kt @@ -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, diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/MangaAndChapter.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/MangaAndChapter.kt index 19873634..14fa4373 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/MangaAndChapter.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/MangaAndChapter.kt @@ -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 diff --git a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/Updates.kt b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/Updates.kt index 9c0ab5b7..9930d289 100644 --- a/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/Updates.kt +++ b/domain/src/commonMain/kotlin/ca/gosyer/jui/domain/updates/model/Updates.kt @@ -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, val hasNextPage: Boolean diff --git a/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropDownMenu.kt b/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropDownMenu.kt index 3df65f05..aef9ac6b 100644 --- a/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropDownMenu.kt +++ b/ui-core/src/commonMain/kotlin/ca/gosyer/jui/uicore/components/DropDownMenu.kt @@ -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