From f4314618bcb851e286e8b478d1f2e0e550a72e90 Mon Sep 17 00:00:00 2001 From: Merseyside Date: Mon, 13 Dec 2021 15:04:49 +0700 Subject: [PATCH 1/5] Reimport logger --- .../merseyLib/archy/android/presentation/di/KoinScopedExt.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/archy-android/src/main/java/com/merseyside/merseyLib/archy/android/presentation/di/KoinScopedExt.kt b/archy-android/src/main/java/com/merseyside/merseyLib/archy/android/presentation/di/KoinScopedExt.kt index 19966ea..87bba7f 100644 --- a/archy-android/src/main/java/com/merseyside/merseyLib/archy/android/presentation/di/KoinScopedExt.kt +++ b/archy-android/src/main/java/com/merseyside/merseyLib/archy/android/presentation/di/KoinScopedExt.kt @@ -6,7 +6,6 @@ import com.merseyside.merseyLib.archy.core.presentation.model.StateViewModel.Com import com.merseyside.merseyLib.utils.core.SavedState import com.merseyside.utils.ext.getSerialize import com.merseyside.utils.ext.isNotNullAndEmpty -import com.merseyside.utils.ext.log import kotlinx.serialization.builtins.MapSerializer import kotlinx.serialization.builtins.serializer import org.koin.core.definition.Definition From a2d074d9d414afe5dde90addb8279c70c53858a0 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Mon, 13 Dec 2021 22:49:12 +0300 Subject: [PATCH 2/5] added restore state at fragment, restore state at recyclers, mene fir lifeSearch dont pull if this commit is last --- .../presentation/fragment/BaseVMFragment.kt | 18 ++++++++++++++++++ .../core/presentation/model/BaseViewModel.kt | 17 ++++++++++++++--- settings.gradle.kts | 2 +- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/archy-android/src/main/java/com/merseyside/merseyLib/archy/android/presentation/fragment/BaseVMFragment.kt b/archy-android/src/main/java/com/merseyside/merseyLib/archy/android/presentation/fragment/BaseVMFragment.kt index aad5afc..79a0494 100644 --- a/archy-android/src/main/java/com/merseyside/merseyLib/archy/android/presentation/fragment/BaseVMFragment.kt +++ b/archy-android/src/main/java/com/merseyside/merseyLib/archy/android/presentation/fragment/BaseVMFragment.kt @@ -10,6 +10,7 @@ import com.merseyside.merseyLib.archy.core.presentation.model.BaseViewModel import com.merseyside.merseyLib.archy.core.presentation.model.StateViewModel import com.merseyside.merseyLib.archy.core.presentation.model.StateViewModel.Companion.INSTANCE_STATE_KEY import com.merseyside.merseyLib.utils.core.SavedState +import com.merseyside.utils.ext.getSerialize import com.merseyside.utils.ext.putSerialize import com.merseyside.utils.reflection.ReflectionUtils import com.merseyside.utils.requestPermissions @@ -109,6 +110,22 @@ abstract class BaseVMFragment } } + override fun onViewStateRestored(savedInstanceState: Bundle?) { + val savedState = SavedState().apply { + savedInstanceState?.getSerialize( + INSTANCE_STATE_KEY, MapSerializer(String.serializer(), String.serializer()) + )?.let { + addAll( + it + ) + } + } + if (viewModel is StateViewModel) { + (viewModel as StateViewModel).onRestoreState(savedState) + } + super.onViewStateRestored(savedInstanceState) + } + override fun updateLanguage(context: Context) { super.updateLanguage(context) //viewModel.updateLanguage(context) @@ -160,3 +177,4 @@ abstract class BaseVMFragment ).kotlin as KClass } } + diff --git a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/presentation/model/BaseViewModel.kt b/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/presentation/model/BaseViewModel.kt index 3b0eda9..8827529 100644 --- a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/presentation/model/BaseViewModel.kt +++ b/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/presentation/model/BaseViewModel.kt @@ -14,8 +14,12 @@ abstract class BaseViewModel protected constructor() : ViewModel() { val isInProgress: LiveData = mutProgress protected var progress: Boolean - get() { return mutProgress.value } - set(value) { mutProgress.value = value } + get() { + return mutProgress.value + } + set(value) { + mutProgress.value = value + } private val mutProgressText = MutableSingleEvent(null) val progressText: LiveData = mutProgressText @@ -32,6 +36,9 @@ abstract class BaseViewModel protected constructor() : ViewModel() { private val mutGrantPermissionLiveEvent = MutableSingleEvent, Int>?>(null) val grantPermissionLiveEvent: LiveData, Int>?> = mutGrantPermissionLiveEvent + private val mutQueryRestoreEvent = MutableSingleEvent(null) + val queryRestoreEvent: LiveData = mutQueryRestoreEvent + data class TextMessage( val isError: Boolean = false, var msg: String = "", @@ -182,7 +189,11 @@ abstract class BaseViewModel protected constructor() : ViewModel() { ) } - open fun onBack() : Boolean { + fun restoreQuery(query: String) { + mutQueryRestoreEvent.value = query + } + + open fun onBack(): Boolean { return true } } \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 9c077e8..2f53f09 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -16,7 +16,7 @@ dependencyResolutionManagement { val androidLibs by creating { from("$group:catalog-version-android:$catalogVersions") - version("merseyLib", "1.7.1") + version("merseyLib", "1.7.3") } val common by creating { From cd3cc46bab04168cda210d56a229d382b5eceeda Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 16 Dec 2021 13:48:57 +0300 Subject: [PATCH 3/5] dialogs fixed, parcel fixed dont merge at this commit --- settings.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index 2f53f09..d61a0c6 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -16,7 +16,7 @@ dependencyResolutionManagement { val androidLibs by creating { from("$group:catalog-version-android:$catalogVersions") - version("merseyLib", "1.7.3") + version("merseyLib", "1.7.4") } val common by creating { From 138b0d803331ff9e9e5c551cc8489b91e362ee03 Mon Sep 17 00:00:00 2001 From: Merseyside Date: Fri, 17 Dec 2021 19:06:59 +0700 Subject: [PATCH 4/5] Remove domain logic --- .../domain/coroutines/BaseCoroutineUseCase.kt | 45 ------------ .../coroutines/CoroutineNoResultUseCase.kt | 36 ---------- .../domain/coroutines/CoroutineUseCase.kt | 33 --------- .../core/domain/coroutines/Extensions.kt | 68 ------------------- .../core/domain/coroutines/FlowUseCase.kt | 55 --------------- .../core/domain/coroutines/dispatchers.kt | 7 -- .../coroutines/exception/DebounceException.kt | 5 -- .../coroutines/exception/NoParamsException.kt | 3 - .../utils/core/coroutines/CompositeJob.kt | 17 ----- 9 files changed, 269 deletions(-) delete mode 100644 archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/BaseCoroutineUseCase.kt delete mode 100644 archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/CoroutineNoResultUseCase.kt delete mode 100644 archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/CoroutineUseCase.kt delete mode 100644 archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/Extensions.kt delete mode 100644 archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/FlowUseCase.kt delete mode 100644 archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/dispatchers.kt delete mode 100644 archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/exception/DebounceException.kt delete mode 100644 archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/exception/NoParamsException.kt delete mode 100644 utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/coroutines/CompositeJob.kt diff --git a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/BaseCoroutineUseCase.kt b/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/BaseCoroutineUseCase.kt deleted file mode 100644 index f1e1a55..0000000 --- a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/BaseCoroutineUseCase.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.merseyside.merseyLib.archy.core.domain.coroutines - -import kotlinx.coroutines.* - -abstract class BaseCoroutineUseCase { - - protected val mainScope: CoroutineScope by lazy { CoroutineScope(applicationContext) } - - private val asyncJob = SupervisorJob() - private val scope = CoroutineScope(asyncJob) - - var job: Job? = null - set(value) { - field?.let { - if (it.isActive) { - it.cancel() - } - } - - field = value - } - - val isActive: Boolean - get() { - return job?.isActive ?: false - } - - protected abstract suspend fun executeOnBackground(params: Params?): T - - protected suspend fun doWorkAsync(params: Params?): Deferred = coroutineScope { - async(asyncJob) { - executeOnBackground(params) - }.also { job = it } - } - - fun cancel(cause: CancellationException? = null): Boolean { - return job?.let { - it.cancel(cause) - job = null - true - } ?: false - } - - suspend operator fun invoke(params: Params? = null) = executeOnBackground(params) -} \ No newline at end of file diff --git a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/CoroutineNoResultUseCase.kt b/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/CoroutineNoResultUseCase.kt deleted file mode 100644 index ae1d524..0000000 --- a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/CoroutineNoResultUseCase.kt +++ /dev/null @@ -1,36 +0,0 @@ -package com.merseyside.merseyLib.archy.core.domain.coroutines - -import com.merseyside.merseyLib.archy.core.domain.coroutines.exception.NoParamsException -import com.merseyside.merseyLib.kotlin.Logger -import kotlinx.coroutines.CancellationException -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.launch - -abstract class CoroutineNoResultUseCase : BaseCoroutineUseCase() { - - fun execute( - coroutineScope: CoroutineScope = mainScope, - onPreExecute: () -> Unit = {}, - onComplete: () -> Unit = {}, - onError: (Throwable) -> Unit = {}, - onPostExecute: () -> Unit = {}, - params: Params? = null - ) = coroutineScope.launch { - onPreExecute() - - try { - val deferred = doWorkAsync(params) - deferred.await() - onComplete.invoke() - } catch (exception: CancellationException) { - Logger.log(this@CoroutineNoResultUseCase, "The coroutine had canceled") - } catch (exception: NoParamsException) { - throw exception - } catch (throwable: Throwable) { - Logger.logErr(throwable) - onError(throwable) - } - - onPostExecute() - } -} \ No newline at end of file diff --git a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/CoroutineUseCase.kt b/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/CoroutineUseCase.kt deleted file mode 100644 index ad3b0c5..0000000 --- a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/CoroutineUseCase.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.merseyside.merseyLib.archy.core.domain.coroutines - -import com.merseyside.merseyLib.archy.core.domain.coroutines.exception.NoParamsException -import com.merseyside.merseyLib.kotlin.Logger -import kotlinx.coroutines.* - -abstract class CoroutineUseCase : BaseCoroutineUseCase() { - - fun execute( - coroutineScope: CoroutineScope = mainScope, - onPreExecute: () -> Unit = {}, - onComplete: (T) -> Unit = {}, - onError: (Throwable) -> Unit = {}, - onPostExecute: () -> Unit = {}, - params: Params? = null - ) = coroutineScope.launch { - onPreExecute() - try { - val deferred = doWorkAsync(params) - onComplete(deferred.await()) - } catch (exception: CancellationException) { - Logger.logErr(this@CoroutineUseCase, "The coroutine had canceled") - } catch (exception: NoParamsException) { - throw exception - } catch (throwable: Throwable) { - Logger.logErr(throwable) - onError(throwable) - throwable.printStackTrace() - } - - onPostExecute() - } -} \ No newline at end of file diff --git a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/Extensions.kt b/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/Extensions.kt deleted file mode 100644 index 6de3e0b..0000000 --- a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/Extensions.kt +++ /dev/null @@ -1,68 +0,0 @@ -package com.merseyside.merseyLib.archy.core.domain.coroutines - -import com.merseyside.merseyLib.archy.core.domain.coroutines.exception.NoParamsException -import com.merseyside.merseyLib.kotlin.Logger -import kotlinx.coroutines.* - -suspend fun debounce( - waitMs: Long = 300L, - destinationFunction: suspend () -> Unit -) { - delay(waitMs) - destinationFunction.invoke() -} - -inline fun requireParams( - params: Params?, - block: Params.() -> Result -): Result { - return if (params != null) { - block(params) - } else throw NoParamsException() -} - -fun CoroutineScope.zipUseCases( - c1: BaseCoroutineUseCase, - c2: BaseCoroutineUseCase, - p1: P1? = null, - p2: P2? = null, - onError: (error: Throwable) -> Unit = {}, - onComplete: (R1, R2) -> Unit = { _, _ -> }, -): Job { - return launch { - val deffered1 = async { c1(p1) } - val deffered2 = async { c2(p2) } - - try { - onComplete(deffered1.await(), deffered2.await()) - } catch (throwable: Throwable) { - onError(throwable) - Logger.logErr(throwable) - } - } -} - -fun CoroutineScope.zipUseCases( - c1: BaseCoroutineUseCase, - c2: BaseCoroutineUseCase, - c3: BaseCoroutineUseCase, - p1: P1? = null, - p2: P2? = null, - p3: P3? = null, - onError: (error: Throwable) -> Unit = {}, - onComplete: (R1, R2, R3) -> Unit = { _, _, _ -> }, -): Job { - return launch { - val deffered1 = async { c1(p1) } - val deffered2 = async { c2(p2) } - val deffered3 = async { c3(p3) } - - try { - onComplete(deffered1.await(), deffered2.await(), deffered3.await()) - } catch (throwable: Throwable) { - onError(throwable) - Logger.logErr(throwable) - } - } -} - diff --git a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/FlowUseCase.kt b/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/FlowUseCase.kt deleted file mode 100644 index 13caa5f..0000000 --- a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/FlowUseCase.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.merseyside.merseyLib.archy.core.domain.coroutines - -import com.merseyside.merseyLib.kotlin.Logger -import kotlinx.coroutines.* -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.collect -import kotlinx.coroutines.flow.flowOn -import kotlin.coroutines.CoroutineContext - -abstract class FlowUseCase : CoroutineScope by CoroutineScope(applicationContext) { - var job: Job? = null - var backgroundContext: CoroutineContext = computationContext - - @ExperimentalCoroutinesApi - protected abstract fun executeOnBackground(params: Params?): Flow - - @OptIn(ExperimentalCoroutinesApi::class) - fun observe( - coroutineScope: CoroutineScope = this, - params: Params? = null, - onEmit: (T) -> Unit, - onError: (Throwable) -> Unit = {} - ): Job { - val flow = executeOnBackground(params) - .flowOn(backgroundContext) - - job?.let { - cancel() - } - - return coroutineScope.launch { - try { - flow.collect { data -> - onEmit.invoke(data) - } - } catch (e: CancellationException) { - Logger.log(this@FlowUseCase, "Coroutine had canceled") - } - catch (e: Throwable) { - Logger.log(e) - onError.invoke(e) - } - }.also { job = it } - } - - fun cancel() { - job?.cancel() - job = null - } - - @OptIn(ExperimentalCoroutinesApi::class) - operator fun invoke(params: Params? = null): Flow { - return executeOnBackground(params) - } -} \ No newline at end of file diff --git a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/dispatchers.kt b/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/dispatchers.kt deleted file mode 100644 index cb93f94..0000000 --- a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/dispatchers.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.merseyside.merseyLib.archy.core.domain.coroutines - -import kotlinx.coroutines.CoroutineDispatcher -import kotlinx.coroutines.Dispatchers - -val computationContext: CoroutineDispatcher = Dispatchers.Default -val applicationContext: CoroutineDispatcher = Dispatchers.Main \ No newline at end of file diff --git a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/exception/DebounceException.kt b/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/exception/DebounceException.kt deleted file mode 100644 index c131306..0000000 --- a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/exception/DebounceException.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.merseyside.merseyLib.archy.core.domain.coroutines.exception - -import kotlinx.coroutines.CancellationException - -class DebounceException(msg: String) : CancellationException(msg) \ No newline at end of file diff --git a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/exception/NoParamsException.kt b/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/exception/NoParamsException.kt deleted file mode 100644 index a339b92..0000000 --- a/archy-core/src/commonMain/kotlin/com/merseyside/merseyLib/archy/core/domain/coroutines/exception/NoParamsException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.merseyside.merseyLib.archy.core.domain.coroutines.exception - -class NoParamsException(msg: String = "Params can not be empty!"): Exception(msg) \ No newline at end of file diff --git a/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/coroutines/CompositeJob.kt b/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/coroutines/CompositeJob.kt deleted file mode 100644 index 34d3c53..0000000 --- a/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/coroutines/CompositeJob.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.merseyside.merseyLib.utils.core.coroutines - -import kotlinx.coroutines.Job - -class CompositeJob { - - private val jobs = mutableListOf() - - fun add(vararg job: Job) { - jobs.addAll(job) - } - - fun cancel() { - jobs.forEach { it.cancel() } - jobs.clear() - } -} \ No newline at end of file From b13a353b656b186b43c0affc76ec04642fdfaf4b Mon Sep 17 00:00:00 2001 From: Ivan Sablin Date: Wed, 29 Dec 2021 16:50:59 +0700 Subject: [PATCH 5/5] ++ver 1.4.5 Move some logic to kotlin-ext lib --- buildSrc/src/main/kotlin/Modules.kt | 1 + .../kotlin/extensions/GradleExtensions.kt | 3 +++ .../src/main/kotlin/publication/Metadata.kt | 2 +- gradle.properties | 1 + settings.gradle.kts | 14 +++++++---- utils-core/build.gradle.kts | 6 ++++- .../merseyLib/utils/core/ext/ByteArrayExt.kt | 13 ---------- .../merseyLib/utils/core/ext/StringExt.kt | 12 ---------- .../merseyLib/utils/core/ext/ByteArrayExt.kt | 5 ---- .../merseyLib/utils/core/ext/CollectionExt.kt | 12 ---------- .../merseyLib/utils/core/ext/NumberExt.kt | 14 ----------- .../merseyLib/utils/core/ext/StringExt.kt | 24 ------------------- .../merseyLib/utils/core/ext/ByteArrayExt.kt | 9 ------- .../merseyLib/utils/core/ext/StringExt.kt | 9 ------- 14 files changed, 21 insertions(+), 104 deletions(-) delete mode 100644 utils-core/src/androidMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt delete mode 100644 utils-core/src/androidMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt delete mode 100644 utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt delete mode 100644 utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/CollectionExt.kt delete mode 100644 utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/NumberExt.kt delete mode 100644 utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt delete mode 100644 utils-core/src/iosMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt delete mode 100644 utils-core/src/iosMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt diff --git a/buildSrc/src/main/kotlin/Modules.kt b/buildSrc/src/main/kotlin/Modules.kt index 092eb2b..3c64b29 100644 --- a/buildSrc/src/main/kotlin/Modules.kt +++ b/buildSrc/src/main/kotlin/Modules.kt @@ -15,6 +15,7 @@ object Modules { object MerseyLibs { val archy = ":archy-core" val utils = ":utils-core" + val kotlinExt = ":kotlin-ext" } val mppLibrary = ":mpp-library" diff --git a/buildSrc/src/main/kotlin/extensions/GradleExtensions.kt b/buildSrc/src/main/kotlin/extensions/GradleExtensions.kt index a81c296..ccaaa04 100644 --- a/buildSrc/src/main/kotlin/extensions/GradleExtensions.kt +++ b/buildSrc/src/main/kotlin/extensions/GradleExtensions.kt @@ -24,6 +24,9 @@ fun Project.isLocalDependencies(): Boolean = fun Project.isLocalAndroidDependencies(): Boolean = findTypedProperty("build.localAndroidDependencies") +fun Project.isLocalKotlinExtLibrary(): Boolean = + findTypedProperty("build.localKotlinExtLibrary") + inline fun Any.toProvider(): Provider { return when (this) { is Provider<*> -> this as Provider diff --git a/buildSrc/src/main/kotlin/publication/Metadata.kt b/buildSrc/src/main/kotlin/publication/Metadata.kt index f83c09b..2bee9ac 100644 --- a/buildSrc/src/main/kotlin/publication/Metadata.kt +++ b/buildSrc/src/main/kotlin/publication/Metadata.kt @@ -1,4 +1,4 @@ object Metadata { const val groupId = "io.github.merseyside" - const val version = "1.4.4" + const val version = "1.4.5" } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 0861c6f..ef22610 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,6 +22,7 @@ kotlin.code.style=official build.localDependencies=false build.localAndroidDependencies=false +build.localKotlinExtLibrary=false #Enable commonizer kotlin.mpp.enableGranularSourceSetsMetadata=true diff --git a/settings.gradle.kts b/settings.gradle.kts index d61a0c6..cb888cd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,13 +1,16 @@ enableFeaturePreview("VERSION_CATALOGS") enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") +private val isLocalAndroidDependencies = false +private val isLocalKotlinExtLibrary = false + dependencyResolutionManagement { repositories { mavenCentral() mavenLocal() } - val catalogVersions = "1.2.1" + val catalogVersions = "1.2.2" val group = "io.github.merseyside" versionCatalogs { val multiplatformLibs by creating { @@ -16,7 +19,6 @@ dependencyResolutionManagement { val androidLibs by creating { from("$group:catalog-version-android:$catalogVersions") - version("merseyLib", "1.7.4") } val common by creating { @@ -29,8 +31,6 @@ include(":archy-core") include(":utils-core") include(":archy-android") -private val isLocalAndroidDependencies = false - if (isLocalAndroidDependencies) { include(":utils") @@ -51,4 +51,10 @@ if (isLocalAndroidDependencies) { } +if (isLocalKotlinExtLibrary) { + include(":kotlin-ext") + project(":kotlin-ext").projectDir = + File(rootDir.parent, "mersey-kotlin-ext/kotlin-ext") +} + rootProject.name = "kmm-support-library" diff --git a/utils-core/build.gradle.kts b/utils-core/build.gradle.kts index 260b113..0bbf37c 100644 --- a/utils-core/build.gradle.kts +++ b/utils-core/build.gradle.kts @@ -42,7 +42,11 @@ val merseyLibs = listOf( ) dependencies { - commonMainApi(common.merseyLib.kotlin.ext) + if (isLocalKotlinExtLibrary()) { + commonMainApi(project(Modules.MultiPlatform.MerseyLibs.kotlinExt)) + } else { + commonMainApi(common.merseyLib.kotlin.ext) + } commonMainImplementation(multiplatformLibs.bundles.moko.mvvm) mppLibs.forEach { commonMainImplementation(it) } diff --git a/utils-core/src/androidMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt b/utils-core/src/androidMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt deleted file mode 100644 index 956b3f1..0000000 --- a/utils-core/src/androidMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt +++ /dev/null @@ -1,13 +0,0 @@ -@file:JvmName("AndroidByteArrayExt") -package com.merseyside.merseyLib.utils.core.ext - -import android.util.Base64 - -actual fun ByteArray.encodeBase64(): ByteArray { - return Base64.encode(this, Base64.DEFAULT) -} - -actual fun ByteArray.decodeBase64(): ByteArray { - return Base64.decode(this, Base64.DEFAULT) -} - diff --git a/utils-core/src/androidMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt b/utils-core/src/androidMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt deleted file mode 100644 index 7664f9c..0000000 --- a/utils-core/src/androidMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt +++ /dev/null @@ -1,12 +0,0 @@ -@file:JvmName("AndroidStringExt") -package com.merseyside.merseyLib.utils.core.ext - -import android.util.Base64 - -actual fun String.encodeBase64(): String { - return Base64.encodeToString(toByteArray(), Base64.DEFAULT) -} - -actual fun String.decodeBase64(): ByteArray { - return Base64.decode(this, Base64.DEFAULT) -} \ No newline at end of file diff --git a/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt b/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt deleted file mode 100644 index d05e522..0000000 --- a/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.merseyside.merseyLib.utils.core.ext - -expect fun ByteArray.encodeBase64(): ByteArray - -expect fun ByteArray.decodeBase64(): ByteArray \ No newline at end of file diff --git a/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/CollectionExt.kt b/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/CollectionExt.kt deleted file mode 100644 index bc0736c..0000000 --- a/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/CollectionExt.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.merseyside.merseyLib.utils.core.ext - -fun List.merge(vararg lists: List): List { - if (lists.isEmpty()) throw IllegalArgumentException("Pass at least one list!") - val list: MutableList = ArrayList(this) - - lists.forEach { - list.addAll(it) - } - - return list -} \ No newline at end of file diff --git a/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/NumberExt.kt b/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/NumberExt.kt deleted file mode 100644 index 6075687..0000000 --- a/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/NumberExt.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.merseyside.merseyLib.utils.core.ext - -import com.merseyside.merseyLib.kotlin.extensions.isNotZero -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.contract - -@OptIn(ExperimentalContracts::class) -fun Long?.isNotNullAndZero(): Boolean { - contract { - returns(true) implies (this@isNotNullAndZero != null) - } - - return this != null && this.isNotZero() -} \ No newline at end of file diff --git a/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt b/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt deleted file mode 100644 index 670cdec..0000000 --- a/utils-core/src/commonMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.merseyside.merseyLib.utils.core.ext - -import com.merseyside.merseyLib.kotlin.extensions.camelToSnakeCase -import com.merseyside.merseyLib.kotlin.extensions.isNotNullAndEmpty - -fun String?.isNotNullAndEmpty(block: String.() -> T): T? { - return if (isNotNullAndEmpty()) { - this.block() - } else { - null - } -} - -fun String.camelToUpperSnakeCase(): String { - return this.camelToSnakeCase().uppercase() -} - -fun String.decodeBase64String(): String { - return decodeBase64().toString() -} - -expect fun String.encodeBase64(): String - -expect fun String.decodeBase64(): ByteArray \ No newline at end of file diff --git a/utils-core/src/iosMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt b/utils-core/src/iosMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt deleted file mode 100644 index 7083bac..0000000 --- a/utils-core/src/iosMain/kotlin/com/merseyside/merseyLib/utils/core/ext/ByteArrayExt.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.merseyside.merseyLib.utils.core.ext - -actual fun ByteArray.encodeBase64(): ByteArray { - return byteArrayOf() -} - -actual fun ByteArray.decodeBase64(): ByteArray { - return byteArrayOf() -} \ No newline at end of file diff --git a/utils-core/src/iosMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt b/utils-core/src/iosMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt deleted file mode 100644 index 801be29..0000000 --- a/utils-core/src/iosMain/kotlin/com/merseyside/merseyLib/utils/core/ext/StringExt.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.merseyside.merseyLib.utils.core.ext - -actual fun String.encodeBase64(): String { - return "" -} - -actual fun String.decodeBase64(): ByteArray { - return byteArrayOf() -} \ No newline at end of file