diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts index 6d80981..527731a 100644 --- a/androidApp/build.gradle.kts +++ b/androidApp/build.gradle.kts @@ -210,5 +210,5 @@ dependencies { // TODO: When updating this library, check if the todo in RepositoryImpl.startNetwork can be resolved // TODO: Include this library once this is merged https://github.com/ln-12/multiplatform-connectivity-status/pull/4 // implementation("com.github.ln-12:multiplatform-connectivity-status:1.1.0") - implementation(project(":connectionstatus")) + implementation(files("../shared/libs/multiplatform-connectivity-status.aar")) } \ No newline at end of file diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt index 50a857b..dbd036f 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/MyApp.kt @@ -22,7 +22,7 @@ import bou.amine.apps.readerforselfossv2.repository.Repository import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.ftinc.scoop.Scoop -import com.github.ln12.library.ConnectivityStatus +import com.github.`ln-12`.library.ConnectivityStatus import com.mikepenz.materialdrawer.util.AbstractDrawerImageLoader import com.mikepenz.materialdrawer.util.DrawerImageLoader import com.russhwolf.settings.Settings diff --git a/connectionstatus/.gitignore b/connectionstatus/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/connectionstatus/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/connectionstatus/build.gradle.kts b/connectionstatus/build.gradle.kts deleted file mode 100644 index 045698e..0000000 --- a/connectionstatus/build.gradle.kts +++ /dev/null @@ -1,65 +0,0 @@ -plugins { - id("com.android.library") - kotlin("multiplatform") -} - -group = "com.github.ln-12" -version = "1.1.0" - -repositories { - google() - mavenCentral() -} - -kotlin { - android { - compilations.all { - kotlinOptions.jvmTarget = "1.8" - } - - publishLibraryVariants("release", "debug") - } - ios() - - sourceSets { - val commonMain by getting { - dependencies { - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0") - } - } - val commonTest by getting { - dependencies { - implementation(kotlin("test-common")) - implementation(kotlin("test-annotations-common")) - } - } - - val androidMain by getting - val androidTest by getting { - dependencies { - implementation(kotlin("test-junit")) - implementation("junit:junit:4.13.2") - } - } - - val iosMain by getting - val iosTest by getting - } -} - -android { - compileSdk = 31 - sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") - defaultConfig { - minSdk = 21 - targetSdk = 31 - } -} - -// metadata is currently not supported for iOS -// https://youtrack.jetbrains.com/issue/KT-44459#focus=Comments-27-4645829.0-0 -kotlin.metadata { - compilations.matching { it.name == "iosMain" }.all { - compileKotlinTaskProvider.configure { enabled = false } - } -} \ No newline at end of file diff --git a/connectionstatus/src/androidMain/AndroidManifest.xml b/connectionstatus/src/androidMain/AndroidManifest.xml deleted file mode 100644 index f3a3bcb..0000000 --- a/connectionstatus/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/connectionstatus/src/androidMain/kotlin/com/github/ln12/library/ConnectivityStatus.kt b/connectionstatus/src/androidMain/kotlin/com/github/ln12/library/ConnectivityStatus.kt deleted file mode 100644 index 027abed..0000000 --- a/connectionstatus/src/androidMain/kotlin/com/github/ln12/library/ConnectivityStatus.kt +++ /dev/null @@ -1,85 +0,0 @@ -package com.github.ln12.library - -import android.content.Context -import android.net.ConnectivityManager -import android.net.Network -import android.net.NetworkCapabilities -import android.net.NetworkRequest -import android.os.Build -import android.util.Log -import kotlinx.coroutines.flow.MutableStateFlow - -// From library com.github.ln-12:multiplatform-connectivity-status:1.1.0 -// https://github.com/ln-12/multiplatform-connectivity-status -// Copyright 2021 Lorenzo Neumann -// Edited by davidoskky as here: https://github.com/ln-12/multiplatform-connectivity-status/pull/4 -actual class ConnectivityStatus(private val context: Context) { - actual val isNetworkConnected = MutableStateFlow(false) - - private var connectivityManager: ConnectivityManager? = null - private val networkCallback = object : ConnectivityManager.NetworkCallback() { - override fun onAvailable(network: Network) { - Log.d("Connectivity status", "Connected") - isNetworkConnected.value = true - } - - override fun onLost(network: Network) { - Log.d("Connectivity status", "Disconnected") - isNetworkConnected.value = false - } - } - - actual fun start() { - try { - if (connectivityManager == null) { - connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - // API 24 and above - connectivityManager!!.registerDefaultNetworkCallback(networkCallback) - - val currentNetwork = connectivityManager!!.activeNetwork - - if(currentNetwork == null) { - isNetworkConnected.value = false - - Log.d("Connectivity status", "Disconnected") - } - } else { - // API 23 and below - val networkRequest = NetworkRequest.Builder().apply { - addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) - } - }.build() - - connectivityManager!!.registerNetworkCallback(networkRequest, networkCallback) - - val currentNetwork = connectivityManager!!.activeNetworkInfo - - if(currentNetwork == null || ( - currentNetwork.type != ConnectivityManager.TYPE_ETHERNET && - currentNetwork.type != ConnectivityManager.TYPE_WIFI && - currentNetwork.type != ConnectivityManager.TYPE_MOBILE - )) { - isNetworkConnected.value = false - - Log.d("Connectivity status", "Disconnected") - } - } - - Log.d("Connectivity status", "Started") - } catch (e: Exception) { - Log.d("Connectivity status", "Failed to start: ${e.message.toString()}") - e.printStackTrace() - isNetworkConnected.value = false - } - } - - actual fun stop() { - connectivityManager?.unregisterNetworkCallback(networkCallback) - Log.d("Connectivity status", "Stopped") - } -} \ No newline at end of file diff --git a/connectionstatus/src/commonMain/kotlin/com/github/ln12/library/ConnectivityStatus.kt b/connectionstatus/src/commonMain/kotlin/com/github/ln12/library/ConnectivityStatus.kt deleted file mode 100644 index 3b25c82..0000000 --- a/connectionstatus/src/commonMain/kotlin/com/github/ln12/library/ConnectivityStatus.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.github.ln12.library - -import kotlinx.coroutines.flow.MutableStateFlow - -// From library com.github.ln-12:multiplatform-connectivity-status:1.1.0 -// https://github.com/ln-12/multiplatform-connectivity-status -// Copyright 2021 Lorenzo Neumann -expect class ConnectivityStatus { - val isNetworkConnected: MutableStateFlow - fun start() - fun stop() -} \ No newline at end of file diff --git a/connectionstatus/src/iosMain/kotlin/com/github/ln12/library/ConnectivityStatus.kt b/connectionstatus/src/iosMain/kotlin/com/github/ln12/library/ConnectivityStatus.kt deleted file mode 100644 index e3c8970..0000000 --- a/connectionstatus/src/iosMain/kotlin/com/github/ln12/library/ConnectivityStatus.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.github.ln12.library - -import kotlinx.coroutines.flow.MutableStateFlow -import cocoapods.Reachability.* -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.flow.collect -import kotlinx.coroutines.launch -import platform.Foundation.NSLog -import platform.darwin.dispatch_async -import platform.darwin.dispatch_get_main_queue -import kotlin.native.concurrent.freeze - - -// From library com.github.ln-12:multiplatform-connectivity-status:1.1.0 -// https://github.com/ln-12/multiplatform-connectivity-status -// Copyright 2021 Lorenzo Neumann -actual class ConnectivityStatus { - actual val isNetworkConnected = MutableStateFlow(false) - - private var reachability: Reachability? = null - - // Swift can't directly use a MutableStateFlow, so the status - // is exposed via a lambda/closure - fun getStatus(success: (Boolean) -> Unit) { - MainScope().launch { - isNetworkConnected.collect { status -> - success(status) - } - } - } - - actual fun start() { - dispatch_async(dispatch_get_main_queue()) { - reachability = Reachability.reachabilityForInternetConnection() - - val reachableCallback = { reach: Reachability? -> - dispatch_async(dispatch_get_main_queue(), { - NSLog("Connected") - - isNetworkConnected.value = true - }.freeze()) - }.freeze() - reachability?.reachableBlock = reachableCallback - - val unreachableCallback = { reach: Reachability? -> - dispatch_async(dispatch_get_main_queue(), { - NSLog("Disconnected") - - isNetworkConnected.value = false - }.freeze()) - }.freeze() - reachability?.unreachableBlock = unreachableCallback - - reachability?.startNotifier() - - dispatch_async(dispatch_get_main_queue(), { - isNetworkConnected.value = reachability?.isReachable() ?: false - - NSLog("Initial reachability: ${reachability?.isReachable()}") - }.freeze()) - } - } - - actual fun stop() { - reachability?.stopNotifier() - } -} diff --git a/settings.gradle.kts b/settings.gradle.kts index 9c56c94..0b32ec1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -8,5 +8,4 @@ pluginManagement { rootProject.name = "ReaderForSelfossV2" include(":androidApp") -include(":shared") -include(":connectionstatus") \ No newline at end of file +include(":shared") \ No newline at end of file diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index ca82dbd..ad4c8a8 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -40,7 +40,7 @@ kotlin { // Network information // TODO: Include this library once this is merged https://github.com/ln-12/multiplatform-connectivity-status/pull/4 //implementation("com.github.ln-12:multiplatform-connectivity-status:1.1.0") - implementation(project(":connectionstatus")) + implementation(files("libs/multiplatform-connectivity-status.aar")) } } val commonTest by getting { diff --git a/shared/libs/multiplatform-connectivity-status.aar b/shared/libs/multiplatform-connectivity-status.aar new file mode 100644 index 0000000..2af7712 Binary files /dev/null and b/shared/libs/multiplatform-connectivity-status.aar differ diff --git a/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt b/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt index d3876bf..44fc676 100644 --- a/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt +++ b/shared/src/commonMain/kotlin/bou/amine/apps/readerforselfossv2/repository/RepositoryImpl.kt @@ -5,7 +5,7 @@ import bou.amine.apps.readerforselfossv2.rest.SelfossModel import bou.amine.apps.readerforselfossv2.service.ApiDetailsService import bou.amine.apps.readerforselfossv2.utils.DateUtils import bou.amine.apps.readerforselfossv2.utils.ItemType -import com.github.ln12.library.ConnectivityStatus +import com.github.`ln-12`.library.ConnectivityStatus import com.russhwolf.settings.Settings import io.github.aakira.napier.Napier import kotlinx.coroutines.CoroutineScope