Skip to content
This repository was archived by the owner on Sep 8, 2025. It is now read-only.

Commit 8f52123

Browse files
committed
#294 added embed-configuration-gradle-plugin and fixes
1 parent 6423524 commit 8f52123

File tree

12 files changed

+73
-66
lines changed

12 files changed

+73
-66
lines changed

gradle.properties

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ org.gradle.parallel=true
44

55
kotlin.code.style=official
66

7-
android.useAndroidX=true
7+
kotlin.native.enableDependencyPropagation=false
8+
kotlin.mpp.enableGranularSourceSetsMetadata=true
9+
kotlin.mpp.enableCompatibilityMetadataVariant=true
810

9-
# Workaround for Bintray treating .sha512 files as artifacts
10-
# https://github.com/gradle/gradle/issues/11412
11-
systemProp.org.gradle.internal.publish.checksums.insecure=true
11+
android.useAndroidX=true
1212

1313
mobile.multiplatform.useIosShortcut=false
1414
mobile.multiplatform.iosTargetWarning=false

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ mokoFieldsVersion = "0.8.0"
2020
mokoUnitsVersion = "0.6.0"
2121
mokoMediaVersion = "0.9.0"
2222
mokoPermissionsVersion = "0.10.1"
23-
mokoGraphicsVersion = "0.7.0"
23+
mokoGraphicsVersion = "0.8.0"
2424
mokoParcelizeVersion = "0.7.1"
2525
klockVersion = "2.2.0"
2626
autoServiceVersion = "1.0-rc6"

plugin/kotlin-native-plugin/build.gradle.kts

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,18 @@ plugins {
66
id("org.jetbrains.kotlin.jvm")
77
id("org.gradle.maven-publish")
88
id("kotlin-kapt")
9-
}
10-
11-
val embedImplementationConfig = "embedImplementation"
12-
configurations {
13-
val embedImplementation = create(embedImplementationConfig)
14-
implementation.get().extendsFrom(embedImplementation)
9+
id("embed-configuration-convention")
1510
}
1611

1712
dependencies {
18-
embedImplementationConfig(project(":kotlin-common-plugin"))
13+
"embedImplementation"(projects.kotlinCommonPlugin)
1914

2015
compileOnly("org.jetbrains.kotlin:kotlin-compiler")
2116

2217
compileOnly(libs.autoService)
2318
kapt(libs.autoService)
2419
}
2520

26-
tasks.jar {
27-
from({
28-
val embedConfiguration = configurations.getByName(embedImplementationConfig)
29-
embedConfiguration.map { if(it.isDirectory) it else zipTree(it) }
30-
})
31-
}
32-
3321
publishing {
3422
publications {
3523
register("pluginMaven", MavenPublication::class) {

plugin/kotlin-plugin/build.gradle.kts

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,18 @@ plugins {
66
id("org.jetbrains.kotlin.jvm")
77
id("org.gradle.maven-publish")
88
id("kotlin-kapt")
9-
}
10-
11-
val embedImplementationConfig = "embedImplementation"
12-
configurations {
13-
val embedImplementation = create(embedImplementationConfig)
14-
implementation.get().extendsFrom(embedImplementation)
9+
id("embed-configuration-convention")
1510
}
1611

1712
dependencies {
18-
embedImplementationConfig(projects.kotlinCommonPlugin)
13+
"embedImplementation"(projects.kotlinCommonPlugin)
1914

2015
compileOnly("org.jetbrains.kotlin:kotlin-compiler-embeddable")
2116

2217
compileOnly(libs.autoService)
2318
kapt(libs.autoService)
2419
}
2520

26-
tasks.jar {
27-
from({
28-
val embedConfiguration = configurations.getByName(embedImplementationConfig)
29-
embedConfiguration.map { if(it.isDirectory) it else zipTree(it) }
30-
})
31-
}
32-
3321
publishing {
3422
publications {
3523
register("pluginMaven", MavenPublication::class) {

plugin/settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* Copyright 2020 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
33
*/
4-
4+
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
55
enableFeaturePreview("VERSION_CATALOGS")
66

77
pluginManagement {

sample/mpp-library/build.gradle.kts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,21 @@ kotlin {
2222
dependencies {
2323
commonMainImplementation(libs.coroutines)
2424

25-
commonMainImplementation(libs.mokoResources)
26-
commonMainImplementation(libs.mokoMvvmCore)
27-
commonMainImplementation(libs.mokoUnits)
28-
commonMainImplementation(libs.mokoGraphics)
29-
commonMainImplementation(libs.mokoWidgets)
30-
commonMainImplementation(libs.mokoWidgetsBottomSheet)
31-
commonMainImplementation(libs.mokoWidgetsCollection)
32-
commonMainImplementation(libs.mokoWidgetsDateTimePicker)
33-
commonMainImplementation(libs.mokoWidgetsImageNetwork)
34-
commonMainImplementation(libs.mokoWidgetsMedia)
35-
commonMainImplementation(libs.mokoWidgetsPermissions)
36-
commonMainImplementation(libs.mokoWidgetsSms)
25+
commonMainApi(libs.mokoMedia)
26+
commonMainApi(libs.mokoPermissions)
27+
commonMainApi(libs.mokoResources)
28+
commonMainApi(libs.mokoMvvmCore)
29+
commonMainApi(libs.mokoUnits)
30+
commonMainApi(libs.mokoGraphics)
31+
32+
commonMainApi(projects.widgets)
33+
commonMainApi(projects.widgetsBottomsheet)
34+
commonMainApi(projects.widgetsCollection)
35+
commonMainApi(projects.widgetsDatetimePicker)
36+
commonMainApi(projects.widgetsImageNetwork)
37+
commonMainApi(projects.widgetsMedia)
38+
commonMainApi(projects.widgetsPermissions)
39+
commonMainApi(projects.widgetsSms)
3740

3841
"androidMainImplementation"(libs.recyclerView)
3942
"androidMainImplementation"(libs.appCompat)

sample/mpp-library/src/commonMain/kotlin/com/icerockdev/library/sample/StateSample.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
package com.icerockdev.library.sample
66

7-
import dev.icerock.moko.mvvm.State
7+
import dev.icerock.moko.mvvm.ResourceState
88
import dev.icerock.moko.mvvm.livedata.LiveData
99
import dev.icerock.moko.mvvm.livedata.MutableLiveData
1010
import dev.icerock.moko.mvvm.livedata.map
@@ -100,24 +100,24 @@ open class StateScreen(
100100
}
101101

102102
interface StateViewModelContract {
103-
val state: LiveData<State<String, String>>
103+
val state: LiveData<ResourceState<String, String>>
104104

105105
fun onChangeStatePressed()
106106
}
107107

108108
class StateViewModel : ViewModel(), StateViewModelContract {
109-
private val _state: MutableLiveData<State<String, String>> =
110-
MutableLiveData(initialValue = State.Empty())
111-
override val state: LiveData<State<String, String>> = _state
109+
private val _state: MutableLiveData<ResourceState<String, String>> =
110+
MutableLiveData(initialValue = ResourceState.Empty())
111+
override val state: LiveData<ResourceState<String, String>> = _state
112112

113113
override fun onChangeStatePressed() {
114114
when (state.value) {
115-
is State.Empty -> _state.value = State.Loading()
116-
is State.Loading -> {
117-
_state.value = State.Data(data = "hello!")
115+
is ResourceState.Empty -> _state.value = ResourceState.Loading()
116+
is ResourceState.Loading -> {
117+
_state.value = ResourceState.Success(data = "hello!")
118118
}
119-
is State.Data -> _state.value = State.Error(error = "this is error")
120-
is State.Error -> _state.value = State.Empty()
119+
is ResourceState.Success -> _state.value = ResourceState.Failed(error = "this is error")
120+
is ResourceState.Failed -> _state.value = ResourceState.Empty()
121121
}
122122
}
123123
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
plugins {
6+
id("org.jetbrains.kotlin.jvm")
7+
}
8+
9+
val embedImplementationConfig = "embedImplementation"
10+
11+
configurations {
12+
val embedImplementation = create(embedImplementationConfig)
13+
implementation.get().extendsFrom(embedImplementation)
14+
}
15+
16+
tasks.jar {
17+
from({
18+
val embedConfiguration = configurations.getByName(embedImplementationConfig)
19+
embedConfiguration.map { file ->
20+
if (file.isDirectory) file else zipTree(file).matching {
21+
exclude("META-INF/versions/**")
22+
}
23+
}
24+
})
25+
}

widgets-media/src/iosMain/kotlin/dev/icerock/moko/widgets/media/MediaControllerExt.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ package dev.icerock.moko.widgets.media
77
import dev.icerock.moko.media.picker.MediaPickerController
88
import dev.icerock.moko.permissions.PermissionsController
99
import dev.icerock.moko.widgets.core.screen.Screen
10-
import dev.icerock.moko.media.picker.ios.MediaPickerControllerProtocol
10+
import dev.icerock.moko.media.picker.ios.MediaPickerController as IosMediaPickerController
1111

1212
actual fun Screen<*>.createMediaPickerController(permissionsController: PermissionsController): MediaPickerController {
13-
return MediaPickerControllerProtocol(
13+
return IosMediaPickerController(
1414
permissionsController = permissionsController,
1515
getViewController = { this.viewController }
1616
)

widgets-permissions/src/iosMain/kotlin/dev/icerock/moko/widgets/permissions/PermissionsControllerExt.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ package dev.icerock.moko.widgets.permissions
66

77
import dev.icerock.moko.permissions.PermissionsController
88
import dev.icerock.moko.widgets.core.screen.Screen
9-
import dev.icerock.moko.permissions.ios
9+
import dev.icerock.moko.permissions.ios.PermissionsController as IosPermissionsController
1010

11-
actual fun Screen<*>.createPermissionsController(): PermissionsControllerProtocol {
12-
return PermissionsController()
11+
actual fun Screen<*>.createPermissionsController(): PermissionsController {
12+
return IosPermissionsController()
1313
}
1414

1515
actual fun PermissionsController.bind(screen: Screen<*>) {

0 commit comments

Comments
 (0)