Skip to content

Commit 609ef69

Browse files
authored
Merge pull request #966 from arkivanov/DecomposeSettings-update
Added DecomposeSettings#update function
2 parents 6b6a767 + 26ab741 commit 609ef69

File tree

4 files changed

+16
-0
lines changed

4 files changed

+16
-0
lines changed

decompose/api/android/decompose.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ public final class com/arkivanov/decompose/DecomposeSettings {
8787
public final class com/arkivanov/decompose/DecomposeSettings$Companion {
8888
public final fun getSettings ()Lcom/arkivanov/decompose/DecomposeSettings;
8989
public final fun setSettings (Lcom/arkivanov/decompose/DecomposeSettings;)V
90+
public final fun update (Lkotlin/jvm/functions/Function1;)V
9091
}
9192

9293
public final class com/arkivanov/decompose/DeeplinkUtilsKt {

decompose/api/decompose.klib.api

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,8 @@ final class com.arkivanov.decompose/DecomposeSettings { // com.arkivanov.decompo
501501
final var settings // com.arkivanov.decompose/DecomposeSettings.Companion.settings|{}settings[0]
502502
final fun <get-settings>(): com.arkivanov.decompose/DecomposeSettings // com.arkivanov.decompose/DecomposeSettings.Companion.settings.<get-settings>|<get-settings>(){}[0]
503503
final fun <set-settings>(com.arkivanov.decompose/DecomposeSettings) // com.arkivanov.decompose/DecomposeSettings.Companion.settings.<set-settings>|<set-settings>(com.arkivanov.decompose.DecomposeSettings){}[0]
504+
505+
final fun update(kotlin/Function1<com.arkivanov.decompose/DecomposeSettings, com.arkivanov.decompose/DecomposeSettings>) // com.arkivanov.decompose/DecomposeSettings.Companion.update|update(kotlin.Function1<com.arkivanov.decompose.DecomposeSettings,com.arkivanov.decompose.DecomposeSettings>){}[0]
504506
}
505507
}
506508

decompose/api/jvm/decompose.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ public final class com/arkivanov/decompose/DecomposeSettings {
8787
public final class com/arkivanov/decompose/DecomposeSettings$Companion {
8888
public final fun getSettings ()Lcom/arkivanov/decompose/DecomposeSettings;
8989
public final fun setSettings (Lcom/arkivanov/decompose/DecomposeSettings;)V
90+
public final fun update (Lkotlin/jvm/functions/Function1;)V
9091
}
9192

9293
public final class com/arkivanov/decompose/DefaultComponentContext : com/arkivanov/decompose/ComponentContext {

decompose/src/commonMain/kotlin/com/arkivanov/decompose/DecomposeSettings.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,19 @@ data class DecomposeSettings(
1717
) {
1818

1919
companion object {
20+
private val lock = Lock()
21+
2022
@Volatile
2123
var settings: DecomposeSettings = DecomposeSettings()
24+
25+
/**
26+
* Atomically updates the global [DecomposeSettings].
27+
*/
28+
@ExperimentalDecomposeApi
29+
fun update(function: (DecomposeSettings) -> DecomposeSettings) {
30+
lock.synchronized {
31+
settings = function(settings)
32+
}
33+
}
2234
}
2335
}

0 commit comments

Comments
 (0)