Deprecate Rx adapters without explicit initial value
Similarly how we did with Flow adapter already.
Relnote: Rx adapters without explicit initial value are deprecated. Using null is not always the best default, for example when you have a List it is better to start with emptyList() or any other reasonable default
Fixes: 161348384
Test: existing tests are passing
Change-Id: I00025b20be5441dc64edf3077c2e63800e1abf77
diff --git a/ui/ui-rxjava2/api/0.1.0-dev15.txt b/ui/ui-rxjava2/api/0.1.0-dev15.txt
index a24f6bb..412263d 100644
--- a/ui/ui-rxjava2/api/0.1.0-dev15.txt
+++ b/ui/ui-rxjava2/api/0.1.0-dev15.txt
@@ -2,13 +2,13 @@
package androidx.ui.rxjava2 {
public final class RxJava2AdapterKt {
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Observable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Flowable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Single<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Maybe<T>, R? initial);
method @androidx.compose.Composable public static androidx.compose.State<java.lang.Boolean> subscribeAsState(io.reactivex.Completable);
}
diff --git a/ui/ui-rxjava2/api/current.txt b/ui/ui-rxjava2/api/current.txt
index a24f6bb..412263d 100644
--- a/ui/ui-rxjava2/api/current.txt
+++ b/ui/ui-rxjava2/api/current.txt
@@ -2,13 +2,13 @@
package androidx.ui.rxjava2 {
public final class RxJava2AdapterKt {
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Observable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Flowable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Single<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Maybe<T>, R? initial);
method @androidx.compose.Composable public static androidx.compose.State<java.lang.Boolean> subscribeAsState(io.reactivex.Completable);
}
diff --git a/ui/ui-rxjava2/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-rxjava2/api/public_plus_experimental_0.1.0-dev15.txt
index a24f6bb..412263d 100644
--- a/ui/ui-rxjava2/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-rxjava2/api/public_plus_experimental_0.1.0-dev15.txt
@@ -2,13 +2,13 @@
package androidx.ui.rxjava2 {
public final class RxJava2AdapterKt {
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Observable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Flowable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Single<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Maybe<T>, R? initial);
method @androidx.compose.Composable public static androidx.compose.State<java.lang.Boolean> subscribeAsState(io.reactivex.Completable);
}
diff --git a/ui/ui-rxjava2/api/public_plus_experimental_current.txt b/ui/ui-rxjava2/api/public_plus_experimental_current.txt
index a24f6bb..412263d 100644
--- a/ui/ui-rxjava2/api/public_plus_experimental_current.txt
+++ b/ui/ui-rxjava2/api/public_plus_experimental_current.txt
@@ -2,13 +2,13 @@
package androidx.ui.rxjava2 {
public final class RxJava2AdapterKt {
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Observable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Flowable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Single<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Maybe<T>, R? initial);
method @androidx.compose.Composable public static androidx.compose.State<java.lang.Boolean> subscribeAsState(io.reactivex.Completable);
}
diff --git a/ui/ui-rxjava2/api/restricted_0.1.0-dev15.txt b/ui/ui-rxjava2/api/restricted_0.1.0-dev15.txt
index a24f6bb..412263d 100644
--- a/ui/ui-rxjava2/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-rxjava2/api/restricted_0.1.0-dev15.txt
@@ -2,13 +2,13 @@
package androidx.ui.rxjava2 {
public final class RxJava2AdapterKt {
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Observable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Flowable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Single<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Maybe<T>, R? initial);
method @androidx.compose.Composable public static androidx.compose.State<java.lang.Boolean> subscribeAsState(io.reactivex.Completable);
}
diff --git a/ui/ui-rxjava2/api/restricted_current.txt b/ui/ui-rxjava2/api/restricted_current.txt
index a24f6bb..412263d 100644
--- a/ui/ui-rxjava2/api/restricted_current.txt
+++ b/ui/ui-rxjava2/api/restricted_current.txt
@@ -2,13 +2,13 @@
package androidx.ui.rxjava2 {
public final class RxJava2AdapterKt {
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Observable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Observable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Flowable<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Flowable<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Single<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Single<T>, R? initial);
- method @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
+ method @Deprecated @androidx.compose.Composable public static inline <T> androidx.compose.State<T> subscribeAsState(io.reactivex.Maybe<T>);
method @androidx.compose.Composable public static <R, T extends R> androidx.compose.State<R> subscribeAsState(io.reactivex.Maybe<T>, R? initial);
method @androidx.compose.Composable public static androidx.compose.State<java.lang.Boolean> subscribeAsState(io.reactivex.Completable);
}
diff --git a/ui/ui-rxjava2/samples/src/main/java/androidx/ui/rxjava2/samples/Samples.kt b/ui/ui-rxjava2/samples/src/main/java/androidx/ui/rxjava2/samples/Samples.kt
index c95ce4b..3cca6366 100644
--- a/ui/ui-rxjava2/samples/src/main/java/androidx/ui/rxjava2/samples/Samples.kt
+++ b/ui/ui-rxjava2/samples/src/main/java/androidx/ui/rxjava2/samples/Samples.kt
@@ -30,13 +30,6 @@
@Sampled
@Composable
fun ObservableSample(observable: Observable<String>) {
- val value: String? by observable.subscribeAsState()
- Text("Value is $value")
-}
-
-@Sampled
-@Composable
-fun ObservableWithInitialSample(observable: Observable<String>) {
val value: String by observable.subscribeAsState("initial")
Text("Value is $value")
}
@@ -44,13 +37,6 @@
@Sampled
@Composable
fun FlowableSample(flowable: Flowable<String>) {
- val value: String? by flowable.subscribeAsState()
- Text("Value is $value")
-}
-
-@Sampled
-@Composable
-fun FlowableWithInitialSample(flowable: Flowable<String>) {
val value: String by flowable.subscribeAsState("initial")
Text("Value is $value")
}
@@ -58,13 +44,6 @@
@Sampled
@Composable
fun SingleSample(single: Single<String>) {
- val value: String? by single.subscribeAsState()
- Text("Value is $value")
-}
-
-@Sampled
-@Composable
-fun SingleWithInitialSample(single: Single<String>) {
val value: String by single.subscribeAsState("initial")
Text("Value is $value")
}
@@ -72,13 +51,6 @@
@Sampled
@Composable
fun MaybeSample(maybe: Maybe<String>) {
- val value: String? by maybe.subscribeAsState()
- Text("Value is $value")
-}
-
-@Sampled
-@Composable
-fun MaybeWithInitialSample(maybe: Maybe<String>) {
val value: String by maybe.subscribeAsState("initial")
Text("Value is $value")
}
diff --git a/ui/ui-rxjava2/src/androidTest/java/androidx/ui/rxjava2/RxJava2AdapterTest.kt b/ui/ui-rxjava2/src/androidTest/java/androidx/ui/rxjava2/RxJava2AdapterTest.kt
index 22c608b1..ea1cfbe5 100644
--- a/ui/ui-rxjava2/src/androidTest/java/androidx/ui/rxjava2/RxJava2AdapterTest.kt
+++ b/ui/ui-rxjava2/src/androidTest/java/androidx/ui/rxjava2/RxJava2AdapterTest.kt
@@ -64,7 +64,7 @@
val stream = factory()
var realValue: String? = "to-be-updated"
rule.setContent {
- realValue = stream.subscribeAsState().value
+ realValue = stream.subscribeAsState(null).value
}
assertThat(realValue).isNull()
@@ -76,7 +76,7 @@
stream.onNext("value")
var realValue: String? = null
rule.setContent {
- realValue = stream.subscribeAsState().value
+ realValue = stream.subscribeAsState(null).value
}
assertThat(realValue).isEqualTo("value")
@@ -88,7 +88,7 @@
var realValue: String? = null
rule.setContent {
- realValue = stream.subscribeAsState().value
+ realValue = stream.subscribeAsState(null).value
}
runOnIdle {
@@ -108,7 +108,7 @@
stream.onNext("value")
var realValue: String? = null
rule.setContent {
- realValue = stream.subscribeAsState().value
+ realValue = stream.subscribeAsState(null).value
}
runOnIdle {
@@ -127,7 +127,7 @@
var realValue: String? = "to-be-updated"
rule.setContent {
if (emit) {
- realValue = stream.subscribeAsState().value
+ realValue = stream.subscribeAsState(null).value
}
}
@@ -145,7 +145,7 @@
@Test
fun testObservableWithInitialValue() {
val stream = factory()
- var realValue = "to-be-updated"
+ var realValue: String? = "to-be-updated"
rule.setContent {
realValue = stream.subscribeAsState("value").value
}
@@ -160,7 +160,7 @@
var realValue: String? = null
rule.setContent {
- realValue = stream.subscribeAsState().value
+ realValue = stream.subscribeAsState(null).value
if (realValue != null) {
latch.countDown()
}
@@ -182,10 +182,7 @@
fun onNext(value: String)
@Composable
- fun subscribeAsState(): State<String?>
-
- @Composable
- fun subscribeAsState(initial: String): State<String>
+ fun subscribeAsState(initial: String?): State<String?>
fun supportMultipleValues(): Boolean
}
@@ -199,10 +196,7 @@
override fun onNext(value: String) = subject.onNext(value)
@Composable
- override fun subscribeAsState(): State<String?> = subject.subscribeAsState()
-
- @Composable
- override fun subscribeAsState(initial: String) = subject.subscribeAsState(initial)
+ override fun subscribeAsState(initial: String?) = subject.subscribeAsState(initial)
override fun supportMultipleValues(): Boolean = true
}
@@ -220,10 +214,7 @@
override fun onNext(value: String) = subject.onNext(value)
@Composable
- override fun subscribeAsState(): State<String?> = flowable.subscribeAsState()
-
- @Composable
- override fun subscribeAsState(initial: String) = flowable.subscribeAsState(initial)
+ override fun subscribeAsState(initial: String?) = flowable.subscribeAsState(initial)
override fun supportMultipleValues(): Boolean = true
}
@@ -261,10 +252,7 @@
}
@Composable
- override fun subscribeAsState(): State<String?> = single.subscribeAsState()
-
- @Composable
- override fun subscribeAsState(initial: String) = single.subscribeAsState(initial)
+ override fun subscribeAsState(initial: String?) = single.subscribeAsState(initial)
override fun supportMultipleValues(): Boolean = false
}
@@ -302,10 +290,7 @@
}
@Composable
- override fun subscribeAsState(): State<String?> = maybe.subscribeAsState()
-
- @Composable
- override fun subscribeAsState(initial: String) = maybe.subscribeAsState(initial)
+ override fun subscribeAsState(initial: String?) = maybe.subscribeAsState(initial)
override fun supportMultipleValues(): Boolean = false
}
diff --git a/ui/ui-rxjava2/src/main/java/androidx/ui/rxjava2/RxJava2Adapter.kt b/ui/ui-rxjava2/src/main/java/androidx/ui/rxjava2/RxJava2Adapter.kt
index d5443f5..6005c01 100644
--- a/ui/ui-rxjava2/src/main/java/androidx/ui/rxjava2/RxJava2Adapter.kt
+++ b/ui/ui-rxjava2/src/main/java/androidx/ui/rxjava2/RxJava2Adapter.kt
@@ -38,9 +38,12 @@
* Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
* used. To handle the error in a more meaningful way you can use operators like
* [Observable.onErrorReturn] or [Observable.onErrorResumeNext].
- *
- * @sample androidx.ui.rxjava2.samples.ObservableSample
*/
+@Deprecated(
+ "Use subscribeAsState with an explicit initial value instead. Using null is not always the " +
+ "best default, for example when you have a List it is better to start with emptyList()",
+ ReplaceWith("subscribeAsState(null)")
+)
@Suppress("NOTHING_TO_INLINE")
@Composable
inline fun <T : Any> Observable<T>.subscribeAsState(): State<T?> = subscribeAsState(null)
@@ -56,7 +59,10 @@
* used. To handle the error in a more meaningful way you can use operators like
* [Observable.onErrorReturn] or [Observable.onErrorResumeNext].
*
- * @sample androidx.ui.rxjava2.samples.ObservableWithInitialSample
+ * @sample androidx.ui.rxjava2.samples.ObservableSample
+ *
+ * @param initial The initial value for the returned [State] which will be asynchronously updated
+ * with the real one once we receive it from the stream
*/
@Composable
fun <R, T : R> Observable<T>.subscribeAsState(initial: R): State<R> =
@@ -72,9 +78,12 @@
* Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
* used. To handle the error in a more meaningful way you can use operators like
* [Flowable.onErrorReturn] or [Flowable.onErrorResumeNext].
- *
- * @sample androidx.ui.rxjava2.samples.FlowableSample
*/
+@Deprecated(
+ "Use subscribeAsState with an explicit initial value instead. Using null is not always the " +
+ "best default, for example when you have a List it is better to start with emptyList()",
+ ReplaceWith("subscribeAsState(null)")
+)
@Suppress("NOTHING_TO_INLINE")
@Composable
inline fun <T : Any> Flowable<T>.subscribeAsState(): State<T?> = subscribeAsState(null)
@@ -90,7 +99,10 @@
* used. To handle the error in a more meaningful way you can use operators like
* [Flowable.onErrorReturn] or [Flowable.onErrorResumeNext].
*
- * @sample androidx.ui.rxjava2.samples.FlowableWithInitialSample
+ * @sample androidx.ui.rxjava2.samples.FlowableSample
+ *
+ * @param initial The initial value for the returned [State] which will be asynchronously updated
+ * with the real one once we receive it from the stream
*/
@Composable
fun <R, T : R> Flowable<T>.subscribeAsState(initial: R): State<R> =
@@ -106,9 +118,12 @@
* Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
* used. To handle the error in a more meaningful way you can use operators like
* [Single.onErrorReturn] or [Single.onErrorResumeNext].
- *
- * @sample androidx.ui.rxjava2.samples.SingleSample
*/
+@Deprecated(
+ "Use subscribeAsState with an explicit initial value instead. Using null is not always the " +
+ "best default, for example when you have a List it is better to start with emptyList()",
+ ReplaceWith("subscribeAsState(null)")
+)
@Suppress("NOTHING_TO_INLINE")
@Composable
inline fun <T : Any> Single<T>.subscribeAsState(): State<T?> = subscribeAsState(null)
@@ -124,7 +139,10 @@
* used. To handle the error in a more meaningful way you can use operators like
* [Single.onErrorReturn] or [Single.onErrorResumeNext].
*
- * @sample androidx.ui.rxjava2.samples.SingleWithInitialSample
+ * @sample androidx.ui.rxjava2.samples.SingleSample
+ *
+ * @param initial The initial value for the returned [State] which will be asynchronously updated
+ * with the real one once we receive it from the stream
*/
@Composable
fun <R, T : R> Single<T>.subscribeAsState(initial: R): State<R> =
@@ -140,9 +158,12 @@
* Note that errors are not handled and the default [RxJavaPlugins.onError] logic will be
* used. To handle the error in a more meaningful way you can use operators like
* [Maybe.onErrorComplete], [Maybe.onErrorReturn] or [Maybe.onErrorResumeNext].
- *
- * @sample androidx.ui.rxjava2.samples.MaybeSample
*/
+@Deprecated(
+ "Use subscribeAsState with an explicit initial value instead. Using null is not always the " +
+ "best default, for example when you have a List it is better to start with emptyList()",
+ ReplaceWith("subscribeAsState(null)")
+)
@Suppress("NOTHING_TO_INLINE")
@Composable
inline fun <T : Any> Maybe<T>.subscribeAsState(): State<T?> = subscribeAsState(null)
@@ -158,7 +179,10 @@
* used. To handle the error in a more meaningful way you can use operators like
* [Maybe.onErrorComplete], [Maybe.onErrorReturn] or [Maybe.onErrorResumeNext].
*
- * @sample androidx.ui.rxjava2.samples.MaybeWithInitialSample
+ * @sample androidx.ui.rxjava2.samples.MaybeSample
+ *
+ * @param initial The initial value for the returned [State] which will be asynchronously updated
+ * with the real one once we receive it from the stream
*/
@Composable
fun <R, T : R> Maybe<T>.subscribeAsState(initial: R): State<R> =