Convert source modules to Kotlin Multiplatform (#9172)

Use KMP in source modules

Use KMP in source-api

Expect LocalSource

(cherry picked from commit 1abf01c4a030b089e6300cb284cc93f7ed323a22)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/AppModule.kt
#	source-api/build.gradle.kts
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/PagePreviewSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/FollowsSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/LoginSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/MetadataSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/NamespaceSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/RandomMangaSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/UrlImportableSource.kt
This commit is contained in:
Andreas
2023-03-05 16:16:19 +01:00
committed by Jobobby04
parent 0d3bbe4271
commit 8ad53c45e0
64 changed files with 95 additions and 54 deletions
+26 -17
View File
@@ -1,10 +1,34 @@
plugins {
id("com.android.library")
kotlin("android")
kotlin("multiplatform")
kotlin("plugin.serialization")
id("com.android.library")
id("com.github.ben-manes.versions")
}
kotlin {
android()
sourceSets {
val commonMain by getting {
dependencies {
api(kotlinx.serialization.json)
api(libs.injekt.core)
api(libs.rxjava)
api(libs.jsoup)
// SY -->
api(project(":i18n"))
api(kotlinx.reflect)
// SY <--
}
}
val androidMain by getting {
dependencies {
implementation(project(":core"))
api(libs.preferencektx)
}
}
}
}
android {
namespace = "eu.kanade.tachiyomi.source"
@@ -12,18 +36,3 @@ android {
consumerProguardFile("consumer-proguard.pro")
}
}
dependencies {
implementation(project(":core"))
api(kotlinx.serialization.json)
api(libs.injekt.core)
api(libs.rxjava)
api(libs.preferencektx)
api(libs.jsoup)
// SY -->
implementation(project(":i18n"))
implementation(kotlinx.reflect)
// SY <--
}
@@ -0,0 +1,3 @@
package eu.kanade.tachiyomi.source
actual typealias PreferenceScreen = androidx.preference.PreferenceScreen
@@ -0,0 +1,6 @@
package eu.kanade.tachiyomi.util
import rx.Observable
import tachiyomi.core.util.lang.awaitSingle
actual suspend fun <T> Observable<T>.awaitSingle(): T = awaitSingle()
@@ -1,7 +1,5 @@
package eu.kanade.tachiyomi.source
import androidx.preference.PreferenceScreen
interface ConfigurableSource : Source {
fun setupPreferenceScreen(screen: PreferenceScreen)
@@ -0,0 +1,3 @@
package eu.kanade.tachiyomi.source
expect class PreferenceScreen
@@ -3,8 +3,8 @@ package eu.kanade.tachiyomi.source
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.util.awaitSingle
import rx.Observable
import tachiyomi.core.util.lang.awaitSingle
/**
* A basic interface for creating a source. It could be an online source, a local source, etc...
@@ -0,0 +1,5 @@
package eu.kanade.tachiyomi.util
import rx.Observable
expect suspend fun <T> Observable<T>.awaitSingle(): T