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")