From 43fe06206a3a84201c2a1f1d05b7499ef2e290b9 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 9 Dec 2022 11:09:32 +0600 Subject: [PATCH] add safe wrapper --- safe_wrapper/build.gradle | 7 +++++++ safe_wrapper/src/commonMain/kotlin/SafeWrapper.kt | 13 +++++++++++++ safe_wrapper/src/main/AndroidManifest.xml | 1 + settings.gradle | 1 + 4 files changed, 22 insertions(+) create mode 100644 safe_wrapper/build.gradle create mode 100644 safe_wrapper/src/commonMain/kotlin/SafeWrapper.kt create mode 100644 safe_wrapper/src/main/AndroidManifest.xml 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",