Skip to content

Commit 0223983

Browse files
committed
Merge branch 'rework-generics' into main
2 parents f7720fa + 91fa922 commit 0223983

File tree

3 files changed

+31
-17
lines changed

3 files changed

+31
-17
lines changed

core/src/commonMain/kotlin/app/meetacy/vm/flow/CFlowWrappers.kt

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,69 @@
1+
@file:Suppress("FunctionName")
2+
13
package app.meetacy.vm.flow
24

35
import kotlinx.coroutines.CoroutineScope
46
import kotlinx.coroutines.Dispatchers
57
import kotlinx.coroutines.SupervisorJob
68
import kotlinx.coroutines.cancel
9+
import kotlinx.coroutines.channels.BufferOverflow
710
import kotlinx.coroutines.flow.Flow
811
import kotlinx.coroutines.flow.MutableSharedFlow
912
import kotlinx.coroutines.flow.MutableStateFlow
1013
import kotlinx.coroutines.flow.SharedFlow
1114
import kotlinx.coroutines.flow.StateFlow
1215
import kotlinx.coroutines.flow.launchIn
1316
import kotlinx.coroutines.flow.onEach
14-
import kotlin.jvm.JvmName
1517

16-
public class CStateFlow<out T : Any>(private val origin: StateFlow<T>) : StateFlow<T> by origin {
18+
public class CStateFlow<out T>(private val origin: StateFlow<T>) : StateFlow<T> by origin {
1719
public fun subscribe(block: (T) -> Unit): Disposable = flowSubscribe(block)
1820
}
1921

20-
public class CSharedFlow<out T : Any?>(private val origin: SharedFlow<T>) : SharedFlow<T> by origin {
22+
public class CSharedFlow<out T>(private val origin: SharedFlow<T>) :
23+
SharedFlow<T> by origin {
2124
public fun subscribe(block: (T) -> Unit): Disposable = flowSubscribe(block)
2225
}
2326

24-
public class CFlow<out T : Any>(private val origin: Flow<T>) : Flow<T> by origin {
27+
public class CFlow<out T>(private val origin: Flow<T>) : Flow<T> by origin {
2528
public fun subscribe(block: (T) -> Unit): Disposable = flowSubscribe(block)
2629
}
2730

28-
public class CMutableStateFlow<T : Any>(private val origin: MutableStateFlow<T>) :
31+
public class CMutableStateFlow<T>(private val origin: MutableStateFlow<T>) :
2932
MutableStateFlow<T> by origin {
3033
public fun subscribe(block: (T) -> Unit): Disposable = flowSubscribe(block)
3134
}
3235

33-
public class CMutableSharedFlow<T : Any>(private val origin: MutableSharedFlow<T>) :
36+
public class CMutableSharedFlow<T>(private val origin: MutableSharedFlow<T>) :
3437
MutableSharedFlow<T> by origin {
3538
public fun subscribe(block: (T) -> Unit): Disposable = flowSubscribe(block)
3639
}
3740

38-
public fun <T : Any> Flow<T>.cFlow(): CFlow<T> = CFlow(this)
39-
40-
public fun <T : Any> StateFlow<T>.cStateFlow(): CStateFlow<T> = CStateFlow(this)
41+
public fun <T> Flow<T>.cFlow(): CFlow<T> = CFlow(this)
4142

42-
public fun <T : Any> SharedFlow<T>.cSharedFlow(): CSharedFlow<T> = CSharedFlow(this)
43+
public fun <T> StateFlow<T>.cStateFlow(): CStateFlow<T> = CStateFlow(this)
4344

44-
@JvmName("cSharedFlowOptional")
45-
public fun <T : Any?> SharedFlow<T>.cSharedFlow(): CSharedFlow<T?> = CSharedFlow(this)
45+
public fun <T> SharedFlow<T>.cSharedFlow(): CSharedFlow<T> = CSharedFlow(this)
4646

47-
public fun <T : Any> MutableStateFlow<T>.cMutableStateFlow(): CMutableStateFlow<T> =
47+
public fun <T> MutableStateFlow<T>.cMutableStateFlow(): CMutableStateFlow<T> =
4848
CMutableStateFlow(this)
4949

50-
public fun <T : Any> CMutableSharedFlow<T>.cMutableSharedFlow(): CMutableSharedFlow<T> =
50+
public fun <T> MutableSharedFlow<T>.cMutableSharedFlow(): CMutableSharedFlow<T> =
5151
CMutableSharedFlow(this)
5252

53+
54+
public fun <T> CMutableStateFlow(value: T): CMutableStateFlow<T> =
55+
MutableStateFlow(value).cMutableStateFlow()
56+
57+
public fun <T> CMutableSharedFlow(
58+
replay: Int = 0,
59+
extraBufferCapacity: Int = 0,
60+
onBufferOverflow: BufferOverflow = BufferOverflow.SUSPEND
61+
): CMutableSharedFlow<T> = MutableSharedFlow<T>(
62+
replay = replay,
63+
extraBufferCapacity = extraBufferCapacity,
64+
onBufferOverflow = onBufferOverflow
65+
).cMutableSharedFlow()
66+
5367
private fun <T> Flow<T>.flowSubscribe(block: (T) -> Unit): Disposable =
5468
CoroutineScope(SupervisorJob() + Dispatchers.Main)
5569
.also { onEach(block).launchIn(it) }

core/src/commonMain/kotlin/app/meetacy/vm/flow/StateAndReceiveExt.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import kotlinx.coroutines.flow.SharingStarted
77
import kotlinx.coroutines.flow.receiveAsFlow
88
import kotlinx.coroutines.flow.stateIn
99

10-
public fun <T : Any> Flow<T>.cStateIn(
10+
public fun <T> Flow<T>.cStateIn(
1111
scope: CoroutineScope,
1212
started: SharingStarted = SharingStarted.Eagerly,
1313
initialValue: T
1414
): CStateFlow<T> = stateIn(scope, started, initialValue).cStateFlow()
1515

16-
public fun <T : Any> ReceiveChannel<T>.receiveAsCFlow(): CFlow<T> = receiveAsFlow().cFlow()
16+
public fun <T> ReceiveChannel<T>.receiveAsCFlow(): CFlow<T> = receiveAsFlow().cFlow()

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ androidGradle = "7.4.0"
55
androidLifecycleVersion = "2.6.1"
66
kotlinxCoroutines = "1.7.3"
77

8-
mvm = "0.0.3"
8+
mvm = "0.0.4"
99

1010
[libraries]
1111

0 commit comments

Comments
 (0)