diff --git a/.idea/copyright/IceRock.xml b/.idea/copyright/IceRock.xml
new file mode 100644
index 0000000..0aa66dc
--- /dev/null
+++ b/.idea/copyright/IceRock.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
new file mode 100644
index 0000000..ed93011
--- /dev/null
+++ b/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index ad55478..353bdd8 100755
--- a/README.md
+++ b/README.md
@@ -44,7 +44,7 @@ allprojects {
project build.gradle
```groovy
dependencies {
- commonMainApi("dev.icerock.moko:errors:0.5.1")
+ commonMainApi("dev.icerock.moko:errors:0.6.0")
}
```
diff --git a/build.gradle.kts b/build.gradle.kts
index dde05d6..02eb1ab 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -6,17 +6,19 @@ buildscript {
repositories {
mavenCentral()
google()
-
gradlePluginPortal()
}
dependencies {
- classpath("dev.icerock.moko:resources-generator:0.16.0")
-
- classpath(":errors-build-logic")
+ classpath(libs.kotlinGradlePlugin)
+ classpath(libs.androidGradlePlugin)
+ classpath(libs.mokoGradlePlugin)
+ classpath(libs.mokoResourcesGradlePlugin)
}
}
+apply(plugin = "dev.icerock.moko.gradle.publication.nexus")
+
allprojects {
allprojects {
diff --git a/errors-build-logic/build.gradle.kts b/errors-build-logic/build.gradle.kts
deleted file mode 100644
index 09ba70e..0000000
--- a/errors-build-logic/build.gradle.kts
+++ /dev/null
@@ -1,17 +0,0 @@
-plugins {
- `kotlin-dsl`
-}
-
-repositories {
- mavenCentral()
- google()
-
- gradlePluginPortal()
-}
-
-dependencies {
- api("dev.icerock:mobile-multiplatform:0.12.0")
- api("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31")
- api("com.android.tools.build:gradle:4.2.1")
- api("io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.15.0")
-}
diff --git a/errors-build-logic/src/main/kotlin/android-app-convention.gradle.kts b/errors-build-logic/src/main/kotlin/android-app-convention.gradle.kts
deleted file mode 100644
index 2859874..0000000
--- a/errors-build-logic/src/main/kotlin/android-app-convention.gradle.kts
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
- */
-
-plugins {
- id("com.android.application")
- id("android-base-convention")
- id("kotlin-android")
-}
-
-android {
- dexOptions {
- javaMaxHeapSize = "2g"
- }
-
- buildTypes {
- getByName("release") {
- isMinifyEnabled = true
- proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
- }
- getByName("debug") {
- isDebuggable = true
- applicationIdSuffix = ".debug"
- }
- }
-
- packagingOptions {
- exclude("META-INF/*.kotlin_module")
- exclude("META-INF/AL2.0")
- exclude("META-INF/LGPL2.1")
- }
-}
diff --git a/errors-build-logic/src/main/kotlin/android-base-convention.gradle.kts b/errors-build-logic/src/main/kotlin/android-base-convention.gradle.kts
deleted file mode 100644
index 7f67285..0000000
--- a/errors-build-logic/src/main/kotlin/android-base-convention.gradle.kts
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
- */
-
-import com.android.build.gradle.BaseExtension
-
-configure {
- compileSdkVersion(30)
-
- defaultConfig {
- minSdkVersion(16)
- targetSdkVersion(30)
- }
-}
diff --git a/errors-build-logic/src/main/kotlin/android-library-convention.gradle.kts b/errors-build-logic/src/main/kotlin/android-library-convention.gradle.kts
deleted file mode 100644
index c435401..0000000
--- a/errors-build-logic/src/main/kotlin/android-library-convention.gradle.kts
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
- */
-
-plugins {
- id("com.android.library")
- id("kotlin-android")
- id("android-base-convention")
-}
-
-android {
- sourceSets.all { java.srcDir("src/$name/kotlin") }
-}
diff --git a/errors-build-logic/src/main/kotlin/android-publication-convention.gradle.kts b/errors-build-logic/src/main/kotlin/android-publication-convention.gradle.kts
deleted file mode 100644
index b4dae9e..0000000
--- a/errors-build-logic/src/main/kotlin/android-publication-convention.gradle.kts
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
- */
-
-plugins {
- id("publication-convention")
-}
-
-afterEvaluate {
- publishing.publications {
- create("release", MavenPublication::class.java) {
- from(components.getByName("release"))
- }
- }
-}
diff --git a/errors-build-logic/src/main/kotlin/detekt-convention.gradle.kts b/errors-build-logic/src/main/kotlin/detekt-convention.gradle.kts
deleted file mode 100644
index 68343a8..0000000
--- a/errors-build-logic/src/main/kotlin/detekt-convention.gradle.kts
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
- */
-
-plugins {
- id("io.gitlab.arturbosch.detekt")
-}
-
-detekt {
- input.setFrom("src/commonMain/kotlin", "src/androidMain/kotlin", "src/iosMain/kotlin", "src/main/kotlin")
-}
-
-dependencies {
- "detektPlugins"("io.gitlab.arturbosch.detekt:detekt-formatting:1.15.0")
-}
diff --git a/errors-build-logic/src/main/kotlin/javadoc-stub-convention.gradle.kts b/errors-build-logic/src/main/kotlin/javadoc-stub-convention.gradle.kts
deleted file mode 100644
index a1a2691..0000000
--- a/errors-build-logic/src/main/kotlin/javadoc-stub-convention.gradle.kts
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
- */
-
-plugins {
- id("org.gradle.maven-publish")
-}
-
-val javadocJar by tasks.registering(Jar::class) {
- archiveClassifier.set("javadoc")
-}
-
-publishing.publications.withType {
- // Stub javadoc.jar artifact
- artifact(javadocJar.get())
-}
diff --git a/errors-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts b/errors-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts
deleted file mode 100644
index f203934..0000000
--- a/errors-build-logic/src/main/kotlin/multiplatform-library-convention.gradle.kts
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
- */
-
-plugins {
- id("com.android.library")
- id("org.jetbrains.kotlin.multiplatform")
- id("android-base-convention")
- id("dev.icerock.mobile.multiplatform.android-manifest")
-}
-
-kotlin {
- android {
- publishLibraryVariants("release", "debug")
- }
- ios()
-}
diff --git a/errors-build-logic/src/main/kotlin/publication-convention.gradle.kts b/errors-build-logic/src/main/kotlin/publication-convention.gradle.kts
deleted file mode 100644
index b3a2f6b..0000000
--- a/errors-build-logic/src/main/kotlin/publication-convention.gradle.kts
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
- */
-
-import java.util.Base64
-
-plugins {
- id("javadoc-stub-convention")
- id("org.gradle.maven-publish")
- id("signing")
-}
-
-publishing {
- repositories.maven("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") {
- name = "OSSRH"
-
- credentials {
- username = System.getenv("OSSRH_USER")
- password = System.getenv("OSSRH_KEY")
- }
- }
-
- publications.withType {
- // Provide artifacts information requited by Maven Central
- pom {
- name.set("MOKO errors")
- description.set("Automated exceptions handler for mobile (android & ios) Kotlin Multiplatform development.")
- url.set("https://github.com/icerockdev/moko-errors")
- licenses {
- license {
- name.set("Apache-2.0")
- distribution.set("repo")
- url.set("https://github.com/icerockdev/moko-errors/blob/master/LICENSE.md")
- }
- }
-
- developers {
- developer {
- id.set("Tetraquark")
- name.set("Vladislav Areshkin")
- email.set("vareshkin@icerockdev.com")
- }
- developer {
- id.set("Alex009")
- name.set("Aleksey Mikhailov")
- email.set("aleksey.mikhailov@icerockdev.com")
- }
- }
-
- scm {
- connection.set("scm:git:ssh://github.com/icerockdev/moko-errors.git")
- developerConnection.set("scm:git:ssh://github.com/icerockdev/moko-errors.git")
- url.set("https://github.com/icerockdev/moko-errors")
- }
- }
- }
-}
-
-
-signing {
- val signingKeyId: String? = System.getenv("SIGNING_KEY_ID")
- val signingPassword: String? = System.getenv("SIGNING_PASSWORD")
- val signingKey: String? = System.getenv("SIGNING_KEY")?.let { base64Key ->
- String(Base64.getDecoder().decode(base64Key))
- }
- if (signingKeyId != null) {
- useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword)
- sign(publishing.publications)
- }
-}
diff --git a/errors/build.gradle.kts b/errors/build.gradle.kts
index 59eab3b..236ea7e 100644
--- a/errors/build.gradle.kts
+++ b/errors/build.gradle.kts
@@ -3,11 +3,12 @@
*/
plugins {
- id("multiplatform-library-convention")
+ id("dev.icerock.moko.gradle.multiplatform.mobile")
id("kotlin-parcelize")
id("dev.icerock.mobile.multiplatform-resources")
- id("detekt-convention")
- id("publication-convention")
+ id("dev.icerock.moko.gradle.detekt")
+ id("dev.icerock.moko.gradle.publication")
+ id("dev.icerock.moko.gradle.stub.javadoc")
}
group = "dev.icerock.moko"
@@ -16,8 +17,8 @@ version = libs.versions.mokoErrorsVersion.get()
dependencies {
commonMainImplementation(libs.coroutines)
- "androidMainImplementation"(libs.appCompat)
- "androidMainImplementation"(libs.material)
+ androidMainImplementation(libs.appCompat)
+ androidMainImplementation(libs.material)
commonMainImplementation(libs.mokoMvvmCore)
commonMainApi(libs.mokoResources)
diff --git a/errors/src/androidMain/kotlin/dev/icerock/moko/errors/presenters/AlertDialogFragment.kt b/errors/src/androidMain/kotlin/dev/icerock/moko/errors/presenters/AlertDialogFragment.kt
index 2f0bb17..a060158 100644
--- a/errors/src/androidMain/kotlin/dev/icerock/moko/errors/presenters/AlertDialogFragment.kt
+++ b/errors/src/androidMain/kotlin/dev/icerock/moko/errors/presenters/AlertDialogFragment.kt
@@ -10,13 +10,12 @@ import android.os.Parcelable
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import dev.icerock.moko.errors.R
-import kotlinx.android.parcel.Parcelize
-import java.lang.IllegalStateException
+import kotlinx.parcelize.Parcelize
class AlertDialogFragment : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
- val settings: DialogSettings = arguments?.getParcelable(ARGS_KEY)
+ val settings: DialogSettings = arguments?.getParcelable(ARGS_KEY)
?: DialogSettings(
title = getString(R.string.moko_errors_presenters_alertDialogTitle),
positiveButtonText = getString(R.string.moko_errors_presenters_alertPositiveButton),
diff --git a/errors/src/commonMain/kotlin/dev/icerock/moko/errors/handler/PresenterExceptionHandler.kt b/errors/src/commonMain/kotlin/dev/icerock/moko/errors/handler/PresenterExceptionHandler.kt
index 8b26d20..31647e5 100644
--- a/errors/src/commonMain/kotlin/dev/icerock/moko/errors/handler/PresenterExceptionHandler.kt
+++ b/errors/src/commonMain/kotlin/dev/icerock/moko/errors/handler/PresenterExceptionHandler.kt
@@ -13,10 +13,9 @@ internal class PresenterExceptionHandler(
private val errorPresenter: ErrorPresenter,
private val errorEventsDispatcher: EventsDispatcher>,
private val onCatch: ((Throwable) -> Unit)? = null
-) : ExceptionHandlerBinder by ExceptionHandlerBinderImpl(
- errorPresenter,
- errorEventsDispatcher
-), ExceptionHandler {
+) : ExceptionHandlerBinder by ExceptionHandlerBinderImpl(errorPresenter, errorEventsDispatcher),
+ ExceptionHandler {
+
override fun handle(block: suspend () -> R): ExceptionHandlerContext {
return ExceptionHandlerContext(exceptionMapper, errorEventsDispatcher, onCatch, block)
}
diff --git a/errors/src/commonMain/kotlin/dev/icerock/moko/errors/mappers/ExceptionMappersStorage.kt b/errors/src/commonMain/kotlin/dev/icerock/moko/errors/mappers/ExceptionMappersStorage.kt
index 0af0a6a..4c7fd8c 100644
--- a/errors/src/commonMain/kotlin/dev/icerock/moko/errors/mappers/ExceptionMappersStorage.kt
+++ b/errors/src/commonMain/kotlin/dev/icerock/moko/errors/mappers/ExceptionMappersStorage.kt
@@ -36,7 +36,8 @@ object ExceptionMappersStorage {
if (!mappersMap.containsKey(resultClass)) {
mappersMap[resultClass] = mutableMapOf()
}
- mappersMap.get(resultClass)?.put(exceptionClass, mapper as ThrowableMapper)
+ @Suppress("UNCHECKED_CAST")
+ mappersMap[resultClass]?.put(exceptionClass, mapper as ThrowableMapper)
return this
}
@@ -50,7 +51,7 @@ object ExceptionMappersStorage {
if (!conditionMappers.containsKey(resultClass)) {
conditionMappers[resultClass] = mutableListOf()
}
- conditionMappers.get(resultClass)?.add(conditionPair)
+ conditionMappers[resultClass]?.add(conditionPair)
return this
}
@@ -93,10 +94,11 @@ object ExceptionMappersStorage {
throwable: E,
exceptionClass: KClass
): ((E) -> T)? {
- val mapper = conditionMappers.get(resultClass)
+ @Suppress("UNCHECKED_CAST")
+ val mapper = conditionMappers[resultClass]
?.find { it.condition(throwable) }
?.mapper as? ((E) -> T)
- ?: mappersMap.get(resultClass)?.get(exceptionClass) as? ((E) -> T)
+ ?: mappersMap[resultClass]?.get(exceptionClass) as? ((E) -> T)
return if (mapper == null && throwable !is Exception) {
throw throwable
@@ -138,6 +140,7 @@ object ExceptionMappersStorage {
* exception will be thrown.
*/
fun getFallbackValue(clazz: KClass): T {
+ @Suppress("UNCHECKED_CAST")
return fallbackValuesMap[clazz] as? T
?: throw FallbackValueNotFoundException(clazz)
}
@@ -160,15 +163,19 @@ object ExceptionMappersStorage {
}
}
- /**
- * Factory method that creates mappers (Throwable) -> T with a registered fallback value for
- * class [T].
- */
inline fun throwableMapper(): (e: E) -> T {
- return ExceptionMappersStorage.throwableMapper(T::class)
+ return dev.icerock.moko.errors.mappers.throwableMapper()
}
}
+/**
+ * Factory method that creates mappers (Throwable) -> T with a registered fallback value for
+ * class [T].
+ */
+inline fun throwableMapper(): (e: E) -> T {
+ return ExceptionMappersStorage.throwableMapper(T::class)
+}
+
/**
* Factory method that allows getting exception description
*/
diff --git a/gradle.properties b/gradle.properties
index 8346db6..5f1ef8f 100755
--- a/gradle.properties
+++ b/gradle.properties
@@ -8,3 +8,14 @@ kotlin.mpp.enableGranularSourceSetsMetadata=true
kotlin.mpp.enableCompatibilityMetadataVariant=true
android.useAndroidX=true
+
+moko.android.targetSdk=30
+moko.android.compileSdk=30
+moko.android.minSdk=16
+
+moko.publish.name=MOKO errors
+moko.publish.description=Automated exceptions handler for mobile (android & ios) Kotlin Multiplatform development.
+moko.publish.repo.org=icerockdev
+moko.publish.repo.name=moko-errors
+moko.publish.license=Apache-2.0
+moko.publish.developers=Tetraquark|Vladislav Areshkin|vareshkin@icerockdev.com,alex009|Aleksey Mikhailov|Aleksey.Mikhailov@icerockdev.com
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 6bb02c2..e27e206 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,22 +1,35 @@
[versions]
-kotlinVersion = "1.5.20"
+kotlinVersion = "1.6.10"
androidAppCompatVersion = "1.2.0"
materialDesignVersion = "1.4.0"
androidLifecycleVersion = "2.1.0"
androidCoreTestingVersion = "2.1.0"
-coroutinesVersion = "1.5.0-native-mt"
-mokoMvvmVersion = "0.11.0"
-mokoResourcesVersion = "0.16.0"
-mokoErrorsVersion = "0.5.1"
+coroutinesVersion = "1.6.0-native-mt"
+mokoMvvmVersion = "0.12.0"
+mokoResourcesVersion = "0.18.0"
+mokoErrorsVersion = "0.6.0"
[libraries]
+# android
appCompat = { module = "androidx.appcompat:appcompat", version.ref = "androidAppCompatVersion" }
material = { module = "com.google.android.material:material", version.ref = "materialDesignVersion" }
lifecycle = { module = "androidx.lifecycle:lifecycle-extensions", version.ref = "androidLifecycleVersion" }
+
+# kotlinx
coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutinesVersion" }
+
+# moko
mokoMvvmDataBinding = { module = "dev.icerock.moko:mvvm-databinding", version.ref = "mokoMvvmVersion" }
mokoResources = { module = "dev.icerock.moko:resources", version.ref = "mokoResourcesVersion" }
mokoMvvmCore = { module = "dev.icerock.moko:mvvm-core", version.ref = "mokoMvvmVersion" }
mokoMvvmLiveData = { module = "dev.icerock.moko:mvvm-livedata", version.ref = "mokoMvvmVersion" }
+
+# tests
kotlinTestJUnit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlinVersion" }
androidCoreTesting = { module = "androidx.arch.core:core-testing", version.ref = "androidCoreTestingVersion" }
+
+# gradle plugins
+kotlinGradlePlugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlinVersion" }
+androidGradlePlugin = { module = "com.android.tools.build:gradle", version = "7.0.4" }
+mokoResourcesGradlePlugin = { module = "dev.icerock.moko:resources-generator", version.ref = "mokoResourcesVersion" }
+mokoGradlePlugin = { module = "dev.icerock.moko:moko-gradle-plugin", version = "0.1.0" }
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 0f80bbf..41dfb87 100755
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/sample/android-app/build.gradle.kts b/sample/android-app/build.gradle.kts
index 312d433..79c8280 100644
--- a/sample/android-app/build.gradle.kts
+++ b/sample/android-app/build.gradle.kts
@@ -3,8 +3,8 @@
*/
plugins {
- id("android-app-convention")
- id("detekt-convention")
+ id("dev.icerock.moko.gradle.android.application")
+ id("dev.icerock.moko.gradle.detekt")
id("kotlin-kapt")
}
diff --git a/sample/ios-app/Podfile.lock b/sample/ios-app/Podfile.lock
index 04fd3f3..4c4477d 100644
--- a/sample/ios-app/Podfile.lock
+++ b/sample/ios-app/Podfile.lock
@@ -1,5 +1,5 @@
PODS:
- - MultiPlatformLibrary (0.3.2)
+ - MultiPlatformLibrary (0.1.0)
DEPENDENCIES:
- MultiPlatformLibrary (from `../mpp-library`)
@@ -9,8 +9,8 @@ EXTERNAL SOURCES:
:path: "../mpp-library"
SPEC CHECKSUMS:
- MultiPlatformLibrary: 977eec0a79d59711bba1652e58f27ba94abb371d
+ MultiPlatformLibrary: 2a9f43df7bd018c32611a2087c1e2ef74847394c
PODFILE CHECKSUM: e8746dc30e9d53a96c59e8f821148cde03ea8c5b
-COCOAPODS: 1.10.1
+COCOAPODS: 1.11.2
diff --git a/sample/mpp-library/MultiPlatformLibrary.podspec b/sample/mpp-library/MultiPlatformLibrary.podspec
index 6ba0758..0f908b0 100644
--- a/sample/mpp-library/MultiPlatformLibrary.podspec
+++ b/sample/mpp-library/MultiPlatformLibrary.podspec
@@ -1,6 +1,6 @@
Pod::Spec.new do |spec|
spec.name = 'MultiPlatformLibrary'
- spec.version = '0.3.2'
+ spec.version = '0.1.0'
spec.homepage = 'Link to a Kotlin/Native module homepage'
spec.source = { :git => "Not Published", :tag => "Cocoapods/#{spec.name}/#{spec.version}" }
spec.authors = 'IceRock Development'
@@ -11,12 +11,15 @@ Pod::Spec.new do |spec|
spec.libraries = "c++"
spec.module_name = "#{spec.name}_umbrella"
+ spec.ios.deployment_target = '11.0'
+ spec.osx.deployment_target = '10.6'
+
spec.pod_target_xcconfig = {
- 'MPP_LIBRARY_NAME' => 'MultiPlatformLibrary',
- 'GRADLE_TASK[sdk=iphonesimulator*][config=*ebug]' => 'syncMultiPlatformLibraryDebugFrameworkIosX64',
- 'GRADLE_TASK[sdk=iphonesimulator*][config=*elease]' => 'syncMultiPlatformLibraryReleaseFrameworkIosX64',
- 'GRADLE_TASK[sdk=iphoneos*][config=*ebug]' => 'syncMultiPlatformLibraryDebugFrameworkIosArm64',
- 'GRADLE_TASK[sdk=iphoneos*][config=*elease]' => 'syncMultiPlatformLibraryReleaseFrameworkIosArm64'
+ 'KOTLIN_FRAMEWORK_BUILD_TYPE[config=*ebug]' => 'debug',
+ 'KOTLIN_FRAMEWORK_BUILD_TYPE[config=*elease]' => 'release',
+ 'CURENT_SDK[sdk=iphoneos*]' => 'iphoneos',
+ 'CURENT_SDK[sdk=iphonesimulator*]' => 'iphonesimulator',
+ 'CURENT_SDK[sdk=macosx*]' => 'macos'
}
spec.script_phases = [
@@ -25,13 +28,37 @@ Pod::Spec.new do |spec|
:execution_position => :before_compile,
:shell_path => '/bin/sh',
:script => <<-SCRIPT
-MPP_PROJECT_ROOT="$SRCROOT/../../mpp-library"
+if [ "$KOTLIN_FRAMEWORK_BUILD_TYPE" == "debug" ]; then
+ CONFIG="Debug"
+else
+ CONFIG="Release"
+fi
-MPP_OUTPUT_DIR="$MPP_PROJECT_ROOT/build/cocoapods/framework"
-MPP_OUTPUT_NAME="$MPP_OUTPUT_DIR/#{spec.name}.framework"
+if [ "$CURENT_SDK" == "iphoneos" ]; then
+ TARGET="Ios"
+ ARCH="Arm64"
+elif [ "$CURENT_SDK" == "macos" ]; then
+ TARGET="Macos"
+ if [ "$NATIVE_ARCH" == "arm64" ]; then
+ ARCH="Arm64"
+ else
+ ARCH="X64"
+ fi
+else
+ if [ "$NATIVE_ARCH" == "arm64" ]; then
+ TARGET="IosSimulator"
+ ARCH="Arm64"
+ else
+ TARGET="Ios"
+ ARCH="X64"
+ fi
+fi
+
+MPP_PROJECT_ROOT="$SRCROOT/../../mpp-library"
+GRADLE_TASK="syncMultiPlatformLibrary${CONFIG}Framework${TARGET}${ARCH}"
"$MPP_PROJECT_ROOT/../gradlew" -p "$MPP_PROJECT_ROOT" "$GRADLE_TASK"
SCRIPT
}
]
-end
+end
\ No newline at end of file
diff --git a/sample/mpp-library/build.gradle.kts b/sample/mpp-library/build.gradle.kts
index 84dc52c..25cffe1 100644
--- a/sample/mpp-library/build.gradle.kts
+++ b/sample/mpp-library/build.gradle.kts
@@ -4,17 +4,13 @@
plugins {
id("com.android.library")
- id("android-base-convention")
- id("detekt-convention")
+ id("dev.icerock.moko.gradle.android.base")
id("org.jetbrains.kotlin.multiplatform")
+ id("dev.icerock.mobile.multiplatform.targets")
id("dev.icerock.mobile.multiplatform.android-manifest")
id("dev.icerock.mobile.multiplatform-resources")
id("dev.icerock.mobile.multiplatform.ios-framework")
-}
-
-kotlin {
- android()
- ios()
+ id("dev.icerock.moko.gradle.detekt")
}
dependencies {
@@ -25,7 +21,7 @@ dependencies {
commonMainApi(libs.mokoMvvmCore)
commonMainApi(libs.mokoMvvmLiveData)
- "androidMainImplementation"(libs.lifecycle)
+ androidMainImplementation(libs.lifecycle)
}
multiplatformResources {
diff --git a/sample/mpp-library/src/commonMain/kotlin/com/icerockdev/library/SimpleViewModel.kt b/sample/mpp-library/src/commonMain/kotlin/com/icerockdev/library/SimpleViewModel.kt
index b007922..9c110d2 100644
--- a/sample/mpp-library/src/commonMain/kotlin/com/icerockdev/library/SimpleViewModel.kt
+++ b/sample/mpp-library/src/commonMain/kotlin/com/icerockdev/library/SimpleViewModel.kt
@@ -5,7 +5,7 @@
package com.icerockdev.library
import dev.icerock.moko.errors.handler.ExceptionHandler
-import dev.icerock.moko.errors.mappers.ExceptionMappersStorage
+import dev.icerock.moko.errors.mappers.throwableMapper
import dev.icerock.moko.errors.presenters.SelectorErrorPresenter
import dev.icerock.moko.errors.presenters.SnackBarDuration
import dev.icerock.moko.errors.presenters.SnackBarErrorPresenter
@@ -33,7 +33,7 @@ fun createSimpleViewModel(): SimpleViewModel {
else -> toastErrorPresenter
}
},
- exceptionMapper = ExceptionMappersStorage.throwableMapper(),
+ exceptionMapper = throwableMapper(),
onCatch = {
// E.g. here we can log all exceptions that are handled by ExceptionHandler
println("Got exception: $it")
@@ -73,7 +73,7 @@ class SimpleViewModel(
throw CustomException(Random.nextInt(2) * 10)
} else {
exceptionFlag = !exceptionFlag
- throw IllegalArgumentException()
+ throw IllegalArgumentException("some error")
}
}
}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index ee8f680..f981cb5 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,9 +1,7 @@
/*
* Copyright 2020 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
*/
-/*
- * Copyright 2019 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
- */
+
enableFeaturePreview("VERSION_CATALOGS")
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
@@ -11,17 +9,9 @@ dependencyResolutionManagement {
repositories {
mavenCentral()
google()
-
- jcenter {
- content {
- includeGroup("org.jetbrains.kotlinx")
- }
- }
}
}
-includeBuild("errors-build-logic")
-
include(":errors")
include(":sample:android-app")
include(":sample:mpp-library")