diff --git a/safe_wrapper/build.gradle b/safe_wrapper/build.gradle new file mode 100644 index 00000000000..7c54502f100 --- /dev/null +++ b/safe_wrapper/build.gradle @@ -0,0 +1,7 @@ +plugins { + id "org.jetbrains.kotlin.multiplatform" + id "org.jetbrains.kotlin.plugin.serialization" + id "com.android.library" +} + +apply from: "$mppProjectWithSerializationPresetPath" diff --git a/safe_wrapper/src/commonMain/kotlin/SafeWrapper.kt b/safe_wrapper/src/commonMain/kotlin/SafeWrapper.kt new file mode 100644 index 00000000000..f6e911189d5 --- /dev/null +++ b/safe_wrapper/src/commonMain/kotlin/SafeWrapper.kt @@ -0,0 +1,13 @@ +package dev.inmo.micro_utils.safe_wrapper + +interface SafeWrapper { + fun safe (block: T.() -> R): Result = unsafeTarget().runCatching(block) + fun unsafe(block: T.() -> R): R = unsafeTarget().block() + fun unsafeTarget(): T + + class Default(private val t: T) : SafeWrapper { override fun unsafeTarget(): T = t } + + companion object { + operator fun invoke(t: T) = Default(t) + } +} diff --git a/safe_wrapper/src/main/AndroidManifest.xml b/safe_wrapper/src/main/AndroidManifest.xml new file mode 100644 index 00000000000..86e29b98d1c --- /dev/null +++ b/safe_wrapper/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/settings.gradle b/settings.gradle index 069bd208c00..76ab4756747 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,6 +4,7 @@ String[] includes = [ ":common", ":common:compose", ":matrix", + ":safe_wrapper", ":crypto", ":koin", ":selector:common",