diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index c5c0ff3b..d7c08c9c 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,17 +4,16 @@
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index c2ba2907..6fd97387 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -232,6 +232,8 @@ dependencies {
implementation("androidx.work:work-runtime:2.9.0")
implementation("androidx.work:work-runtime-ktx:2.9.0")
implementation("com.github.Blatzar:NiceHttp:0.4.11") // HTTP Lib
+
+ implementation(project(":library"))
}
tasks.register("androidSourcesJar", Jar::class) {
diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt
index 273e267b..df49a516 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt
@@ -743,8 +743,6 @@ fun base64Encode(array: ByteArray): String {
}
}
-class ErrorLoadingException(message: String? = null) : Exception(message)
-
fun MainAPI.fixUrlNull(url: String?): String? {
if (url.isNullOrEmpty()) {
return null
diff --git a/app/src/main/java/com/lagradost/cloudstream3/mvvm/Lifecycle.kt b/app/src/main/java/com/lagradost/cloudstream3/mvvm/Lifecycle.kt
new file mode 100644
index 00000000..3df5197c
--- /dev/null
+++ b/app/src/main/java/com/lagradost/cloudstream3/mvvm/Lifecycle.kt
@@ -0,0 +1,16 @@
+package com.lagradost.cloudstream3.mvvm
+
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.LiveData
+
+/** NOTE: Only one observer at a time per value */
+fun LifecycleOwner.observe(liveData: LiveData, action: (t: T) -> Unit) {
+ liveData.removeObservers(this)
+ liveData.observe(this) { it?.let { t -> action(t) } }
+}
+
+/** NOTE: Only one observer at a time per value */
+fun LifecycleOwner.observeNullable(liveData: LiveData, action: (t: T) -> Unit) {
+ liveData.removeObservers(this)
+ liveData.observe(this) { action(it) }
+}
diff --git a/build.gradle.kts b/build.gradle.kts
index 06af44d0..8a48b427 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -26,6 +26,6 @@ plugins {
id("com.google.devtools.ksp") version "1.9.22-1.0.16" apply false
}
-tasks.register("clean") {
- delete(rootProject.layout.buildDirectory)
-}
+//tasks.register("clean") {
+// delete(rootProject.layout.buildDirectory)
+//}
diff --git a/library/build.gradle.kts b/library/build.gradle.kts
new file mode 100644
index 00000000..c66db5e1
--- /dev/null
+++ b/library/build.gradle.kts
@@ -0,0 +1,58 @@
+plugins {
+ kotlin("multiplatform")
+ id("maven-publish")
+ id("com.android.library")
+}
+
+kotlin {
+ androidTarget()
+ jvm()
+
+ sourceSets {
+ commonMain.dependencies {
+ implementation("com.github.Blatzar:NiceHttp:0.4.11") // HTTP Lib
+ implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.13.1") /* JSON Parser
+ ^ Don't Bump Jackson above 2.13.1 , Crashes on Android TV's and FireSticks that have Min API
+ Level 25 or Less. */
+ implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
+ }
+ }
+}
+
+repositories {
+ mavenLocal()
+ maven("https://jitpack.io")
+}
+
+tasks.withType {
+ kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8.toString()
+}
+
+android {
+ compileSdk = 34
+ sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
+
+ defaultConfig {
+ minSdk = 21
+ targetSdk = 33
+ }
+
+ // If this is the same com.lagradost.cloudstream3.R stops working
+ namespace = "com.lagradost.api"
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+ }
+}
+
+//publishing {
+// publications {
+// create("maven") {
+// groupId = "com.lagradost"
+// artifactId = "api"
+// version = "0.1.0"
+// from(components["java"])
+// }
+// }
+//}
diff --git a/library/src/androidMain/AndroidManifest.xml b/library/src/androidMain/AndroidManifest.xml
new file mode 100644
index 00000000..568741e5
--- /dev/null
+++ b/library/src/androidMain/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/library/src/androidMain/kotlin/com/lagradost/api/BuildConfig.kt b/library/src/androidMain/kotlin/com/lagradost/api/BuildConfig.kt
new file mode 100644
index 00000000..eda0eab5
--- /dev/null
+++ b/library/src/androidMain/kotlin/com/lagradost/api/BuildConfig.kt
@@ -0,0 +1,7 @@
+package com.lagradost.api
+
+actual class BuildConfig {
+ actual companion object {
+ actual val DEBUG = true
+ }
+}
\ No newline at end of file
diff --git a/library/src/androidMain/kotlin/com/lagradost/api/Log.kt b/library/src/androidMain/kotlin/com/lagradost/api/Log.kt
new file mode 100644
index 00000000..12524411
--- /dev/null
+++ b/library/src/androidMain/kotlin/com/lagradost/api/Log.kt
@@ -0,0 +1,21 @@
+package com.lagradost.api
+
+import android.util.Log
+
+actual object Log {
+ actual fun d(tag: String, message: String) {
+ Log.d(tag, message)
+ }
+
+ actual fun i(tag: String, message: String) {
+ Log.i(tag, message)
+ }
+
+ actual fun w(tag: String, message: String) {
+ Log.w(tag, message)
+ }
+
+ actual fun e(tag: String, message: String) {
+ Log.e(tag, message)
+ }
+}
\ No newline at end of file
diff --git a/library/src/commonMain/kotlin/com/lagradost/api/BuildConfig.kt b/library/src/commonMain/kotlin/com/lagradost/api/BuildConfig.kt
new file mode 100644
index 00000000..5f4b1d92
--- /dev/null
+++ b/library/src/commonMain/kotlin/com/lagradost/api/BuildConfig.kt
@@ -0,0 +1,7 @@
+package com.lagradost.api
+
+expect class BuildConfig {
+ companion object {
+ val DEBUG: Boolean
+ }
+}
\ No newline at end of file
diff --git a/library/src/commonMain/kotlin/com/lagradost/api/Log.kt b/library/src/commonMain/kotlin/com/lagradost/api/Log.kt
new file mode 100644
index 00000000..4b8e6329
--- /dev/null
+++ b/library/src/commonMain/kotlin/com/lagradost/api/Log.kt
@@ -0,0 +1,8 @@
+package com.lagradost.api
+
+expect object Log {
+ fun d(tag: String, message: String)
+ fun i(tag: String, message: String)
+ fun w(tag: String, message: String)
+ fun e(tag: String, message: String)
+}
\ No newline at end of file
diff --git a/library/src/commonMain/kotlin/com/lagradost/cloudstream3/MainApi.kt b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/MainApi.kt
new file mode 100644
index 00000000..87ee4815
--- /dev/null
+++ b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/MainApi.kt
@@ -0,0 +1,3 @@
+package com.lagradost.cloudstream3
+
+class ErrorLoadingException(message: String? = null) : Exception(message)
\ No newline at end of file
diff --git a/app/src/main/java/com/lagradost/cloudstream3/mvvm/ArchComponentExt.kt b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/mvvm/ArchComponentExt.kt
similarity index 86%
rename from app/src/main/java/com/lagradost/cloudstream3/mvvm/ArchComponentExt.kt
rename to library/src/commonMain/kotlin/com/lagradost/cloudstream3/mvvm/ArchComponentExt.kt
index 817d7db3..d3b4999a 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/mvvm/ArchComponentExt.kt
+++ b/library/src/commonMain/kotlin/com/lagradost/cloudstream3/mvvm/ArchComponentExt.kt
@@ -1,10 +1,7 @@
package com.lagradost.cloudstream3.mvvm
-import android.util.Log
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.LiveData
-import com.bumptech.glide.load.HttpException
-import com.lagradost.cloudstream3.BuildConfig
+import com.lagradost.api.BuildConfig
+import com.lagradost.api.Log
import com.lagradost.cloudstream3.ErrorLoadingException
import kotlinx.coroutines.*
import java.io.InterruptedIOException
@@ -49,18 +46,6 @@ inline fun debugWarning(assert: () -> Boolean, message: () -> String) {
}
}
-/** NOTE: Only one observer at a time per value */
-fun LifecycleOwner.observe(liveData: LiveData, action: (t: T) -> Unit) {
- liveData.removeObservers(this)
- liveData.observe(this) { it?.let { t -> action(t) } }
-}
-
-/** NOTE: Only one observer at a time per value */
-fun LifecycleOwner.observeNullable(liveData: LiveData, action: (t: T) -> Unit) {
- liveData.removeObservers(this)
- liveData.observe(this) { action(it) }
-}
-
sealed class Resource {
data class Success(val value: T) : Resource()
data class Failure(
@@ -158,14 +143,14 @@ fun throwAbleToResource(
"Connection Timeout\nPlease try again later."
)
}
- is HttpException -> {
- Resource.Failure(
- false,
- throwable.statusCode,
- null,
- throwable.message ?: "HttpException"
- )
- }
+// is HttpException -> {
+// Resource.Failure(
+// false,
+// throwable.statusCode,
+// null,
+// throwable.message ?: "HttpException"
+// )
+// }
is UnknownHostException -> {
Resource.Failure(true, null, null, "Cannot connect to server, try again later.\n${throwable.message}")
}
diff --git a/library/src/jvmMain/kotlin/com/lagradost/api/BuildConfig.kt b/library/src/jvmMain/kotlin/com/lagradost/api/BuildConfig.kt
new file mode 100644
index 00000000..eda0eab5
--- /dev/null
+++ b/library/src/jvmMain/kotlin/com/lagradost/api/BuildConfig.kt
@@ -0,0 +1,7 @@
+package com.lagradost.api
+
+actual class BuildConfig {
+ actual companion object {
+ actual val DEBUG = true
+ }
+}
\ No newline at end of file
diff --git a/library/src/jvmMain/kotlin/com/lagradost/api/Log.kt b/library/src/jvmMain/kotlin/com/lagradost/api/Log.kt
new file mode 100644
index 00000000..e9a0e6b4
--- /dev/null
+++ b/library/src/jvmMain/kotlin/com/lagradost/api/Log.kt
@@ -0,0 +1,19 @@
+package com.lagradost.api
+
+actual object Log {
+ actual fun d(tag: String, message: String) {
+ println("DEBUG $tag: $message")
+ }
+
+ actual fun i(tag: String, message: String) {
+ println("INFO $tag: $message")
+ }
+
+ actual fun w(tag: String, message: String) {
+ println("WARNING $tag: $message")
+ }
+
+ actual fun e(tag: String, message: String) {
+ println("ERROR $tag: $message")
+ }
+}
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 17070047..eabd9f0e 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,3 +1,4 @@
rootProject.name = "CloudStream"
-include(":app")
\ No newline at end of file
+include(":app")
+include(":library")
\ No newline at end of file