From d82f860321c1702a9473f228bf6e4268b0838979 Mon Sep 17 00:00:00 2001 From: "serhii.denysov" Date: Fri, 13 Sep 2024 18:16:50 +0100 Subject: [PATCH 1/7] MVICore RxJava3 update implemented --- binder/build.gradle.kts | 2 +- .../src/main/java/com/badoo/binder/Binder.kt | 39 +++++----- .../main/java/com/badoo/binder/Connection.kt | 20 ++--- .../com/badoo/binder/connector/Connector.kt | 4 +- .../binder/connector/NotNullConnector.kt | 8 +- .../com/badoo/binder/lifecycle/Lifecycle.kt | 2 +- .../badoo/binder/lifecycle/ManualLifecycle.kt | 2 +- .../internal/FromObservableSource.kt | 2 +- .../com/badoo/binder/middleware/Consumer.kt | 4 +- .../binder/middleware/base/Middleware.kt | 4 +- .../middleware/base/StandaloneMiddleware.kt | 4 +- .../config/ConsumerMiddlewareFactory.kt | 2 +- .../config/MiddlewareConfiguration.kt | 4 +- .../test/java/com/badoo/binder/BinderTest.kt | 8 +- .../java/com/badoo/binder/LifecycleTest.kt | 6 +- .../java/com/badoo/binder/TestConsumer.kt | 6 +- gradle/libs.versions.toml | 16 ++-- mvicore-android/build.gradle.kts | 2 +- .../AndroidMainThreadFeatureScheduler.kt | 4 +- .../lifecycle/BaseAndroidBinderLifecycle.kt | 4 +- .../lifecycle/LifecycleExtensionsTest.kt | 10 +-- mvicore-debugdrawer/build.gradle.kts | 2 +- .../debugdrawer/MviCoreControlsModule.kt | 2 +- .../mvicore-demo-app/build.gradle.kts | 2 +- .../main/java/com/badoo/mvicoredemo/App.kt | 17 ++--- .../di/appscope/module/MviCoreModule.kt | 2 +- .../di/usersessionscope/UserManager.kt | 2 +- .../ui/common/ObservableSourceActivity.kt | 6 +- .../ui/lifecycle/LifecycleDemoActivity.kt | 4 +- .../badoo/mvicoredemo/ui/main/MainActivity.kt | 2 +- .../ui/main/analytics/FakeAnalyticsTracker.kt | 2 +- .../mvicoredemo/ui/main/news/NewsListener.kt | 2 +- .../badoo/mvicoredemo/utils/RxExtensions.kt | 17 ++--- .../mvicore-demo-catapi/build.gradle.kts | 4 +- .../src/main/java/com/badoo/catapi/CatApi.kt | 8 +- .../mvicore-demo-feature2/build.gradle.kts | 2 +- .../java/com/badoo/feature2/Extensions.kt | 4 +- .../main/java/com/badoo/feature2/Feature2.kt | 4 +- .../com/badoo/mvicore/ModelWatcherTest.kt | 14 ++-- .../java/com/badoo/mvicore/util/helpers.kt | 2 +- mvicore-plugin/idea/build.gradle.kts | 2 +- .../plugin/MviPluginToolWindowFactory.kt | 7 +- .../badoo/mvicore/plugin/SocketObservable.kt | 4 +- .../badoo/mvicore/plugin/action/RunAction.kt | 6 +- .../plugin/utils/MainThreadScheduler.kt | 2 +- mvicore-plugin/middleware/build.gradle.kts | 2 +- .../mvicore/middleware/DefaultPluginStore.kt | 20 ++--- .../middleware/IdeaPluginMiddleware.kt | 2 +- .../mvicore/middleware/gc/QueueWatcher.kt | 2 +- .../middleware/socket/PluginSocketThread.kt | 6 +- mvicore/build.gradle.kts | 2 +- .../consumer/middleware/LoggingMiddleware.kt | 2 +- .../consumer/middleware/PlaybackMiddleware.kt | 4 +- .../consumer/playback/MemoryRecordStore.kt | 74 +++++++++++-------- .../java/com/badoo/mvicore/element/Actor.kt | 2 +- .../com/badoo/mvicore/element/Bootstrapper.kt | 2 +- .../java/com/badoo/mvicore/element/Store.kt | 4 +- .../java/com/badoo/mvicore/extension/Rx.kt | 10 +-- .../com/badoo/mvicore/feature/AsyncFeature.kt | 2 +- .../mvicore/feature/AsyncFeatureSchedulers.kt | 2 +- .../badoo/mvicore/feature/BaseAsyncFeature.kt | 24 +++--- .../com/badoo/mvicore/feature/BaseFeature.kt | 20 ++--- .../java/com/badoo/mvicore/feature/Feature.kt | 4 +- .../badoo/mvicore/feature/FeatureScheduler.kt | 2 +- .../mvicore/feature/FeatureSchedulers.kt | 8 +- .../badoo/mvicore/feature/ReducerFeature.kt | 4 +- .../java/com/badoo/mvicore/TestExtensions.kt | 4 +- .../test/java/com/badoo/mvicore/TestHelper.kt | 10 +-- .../mvicore/bootstrapper/BootstrapperTest.kt | 6 +- .../mvicore/feature/AsyncBaseFeatureTest.kt | 14 ++-- .../feature/BaseFeaturePostProcessorTest.kt | 2 +- .../feature/BaseFeatureWithSchedulerTest.kt | 14 ++-- .../BaseFeatureWithoutSchedulerTest.kt | 10 +-- .../feature/TrampolineFeatureSchedulerTest.kt | 6 +- .../newspublishing/NewsPublishingTest.kt | 6 +- .../com/badoo/mvicore/utils/RxErrorRule.kt | 4 +- 76 files changed, 281 insertions(+), 265 deletions(-) diff --git a/binder/build.gradle.kts b/binder/build.gradle.kts index 8fde34fc..67f9f681 100644 --- a/binder/build.gradle.kts +++ b/binder/build.gradle.kts @@ -16,7 +16,7 @@ tasks.withType { } dependencies { - api(libs.rxjava2) + api(libs.rxjava3) implementation(libs.rxkotlin) implementation(libs.kotlin.stdlib) diff --git a/binder/src/main/java/com/badoo/binder/Binder.kt b/binder/src/main/java/com/badoo/binder/Binder.kt index ca78539c..dc39527b 100644 --- a/binder/src/main/java/com/badoo/binder/Binder.kt +++ b/binder/src/main/java/com/badoo/binder/Binder.kt @@ -5,14 +5,14 @@ import com.badoo.binder.lifecycle.Lifecycle.Event.BEGIN import com.badoo.binder.lifecycle.Lifecycle.Event.END import com.badoo.binder.middleware.base.Middleware import com.badoo.binder.middleware.wrapWithMiddleware -import io.reactivex.Observable -import io.reactivex.Observable.wrap -import io.reactivex.ObservableSource -import io.reactivex.Scheduler -import io.reactivex.disposables.CompositeDisposable -import io.reactivex.disposables.Disposable -import io.reactivex.functions.Consumer -import io.reactivex.rxkotlin.plusAssign +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Observable.wrap +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.core.Scheduler +import io.reactivex.rxjava3.disposables.CompositeDisposable +import io.reactivex.rxjava3.disposables.Disposable +import io.reactivex.rxjava3.functions.Consumer +import io.reactivex.rxjava3.kotlin.plusAssign class Binder( private val lifecycle: Lifecycle? = null, @@ -56,27 +56,32 @@ class Binder( subscribeWithLifecycle(connection, middleware) } } + else -> subscribe(connection, middleware) } } - private fun subscribeWithLifecycle( + private fun subscribeWithLifecycle( connection: Connection, middleware: Middleware? ) { - connectionDisposables += wrap(connection.from) - .subscribeWithMiddleware(connection, middleware) + connection.from?.let { + connectionDisposables += wrap(it) + .subscribeWithMiddleware(connection, middleware) + } } - private fun subscribe( + private fun subscribe( connection: Connection, middleware: Middleware? ) { - disposables += wrap(connection.from) - .subscribeWithMiddleware(connection, middleware) + connection.from?.let { + disposables += wrap(it) + .subscribeWithMiddleware(connection, middleware) + } } - private fun Observable.subscribeWithMiddleware( + private fun Observable.subscribeWithMiddleware( connection: Connection, middleware: Middleware? ): Disposable = @@ -97,7 +102,7 @@ class Binder( } } - private fun Observable.applyTransformer( + private fun Observable.applyTransformer( connection: Connection ): Observable = connection.connector?.let { @@ -153,7 +158,7 @@ class Binder( disposables.clear() } - private fun Observable.optionalObserveOn(scheduler: Scheduler?) = + private fun Observable.optionalObserveOn(scheduler: Scheduler?) = if (scheduler != null) { observeOn(scheduler) } else { diff --git a/binder/src/main/java/com/badoo/binder/Connection.kt b/binder/src/main/java/com/badoo/binder/Connection.kt index 2d62f698..138cba7e 100644 --- a/binder/src/main/java/com/badoo/binder/Connection.kt +++ b/binder/src/main/java/com/badoo/binder/Connection.kt @@ -2,11 +2,11 @@ package com.badoo.binder import com.badoo.binder.connector.Connector import com.badoo.binder.connector.NotNullConnector -import io.reactivex.ObservableSource -import io.reactivex.Scheduler -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.core.Scheduler +import io.reactivex.rxjava3.functions.Consumer -data class Connection( +data class Connection( val from: ObservableSource? = null, val to: Consumer, val connector: Connector? = null, @@ -24,36 +24,36 @@ data class Connection( "<${name ?: ANONYMOUS}> (${from ?: "?"} --> $to${connector?.let { " using $it" } ?: ""})" } -infix fun Pair, Consumer>.using(transformer: (Out) -> In?): Connection = +infix fun Pair, Consumer>.using(transformer: (Out) -> In?): Connection = using(NotNullConnector(transformer)) -infix fun Pair, Consumer>.using(connector: Connector): Connection = +infix fun Pair, Consumer>.using(connector: Connector): Connection = Connection( from = first, to = second, connector = connector ) -infix fun Pair, Consumer>.named(name: String): Connection = +infix fun Pair, Consumer>.named(name: String): Connection = Connection( from = first, to = second, name = name ) -infix fun Pair, Consumer>.observeOn(scheduler: Scheduler): Connection = +infix fun Pair, Consumer>.observeOn(scheduler: Scheduler): Connection = Connection( from = first, to = second, observeScheduler = scheduler ) -infix fun Connection.named(name: String) = +infix fun Connection.named(name: String) = copy( name = name ) -infix fun Connection.observeOn(scheduler: Scheduler) = +infix fun Connection.observeOn(scheduler: Scheduler) = copy( observeScheduler = scheduler ) diff --git a/binder/src/main/java/com/badoo/binder/connector/Connector.kt b/binder/src/main/java/com/badoo/binder/connector/Connector.kt index 684c8c1b..4fc6227e 100644 --- a/binder/src/main/java/com/badoo/binder/connector/Connector.kt +++ b/binder/src/main/java/com/badoo/binder/connector/Connector.kt @@ -1,5 +1,5 @@ package com.badoo.binder.connector -import io.reactivex.ObservableSource +import io.reactivex.rxjava3.core.ObservableSource -interface Connector: (ObservableSource) -> ObservableSource +interface Connector: (ObservableSource) -> ObservableSource diff --git a/binder/src/main/java/com/badoo/binder/connector/NotNullConnector.kt b/binder/src/main/java/com/badoo/binder/connector/NotNullConnector.kt index 07cccc70..e9932583 100644 --- a/binder/src/main/java/com/badoo/binder/connector/NotNullConnector.kt +++ b/binder/src/main/java/com/badoo/binder/connector/NotNullConnector.kt @@ -1,10 +1,10 @@ package com.badoo.binder.connector -import io.reactivex.Observable -import io.reactivex.Observable.wrap -import io.reactivex.ObservableSource +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Observable.wrap +import io.reactivex.rxjava3.core.ObservableSource -internal class NotNullConnector(private val mapper: (Out) -> In?): Connector { +internal class NotNullConnector(private val mapper: (Out) -> In?): Connector { override fun invoke(element: ObservableSource): ObservableSource = wrap(element) .flatMap { diff --git a/binder/src/main/java/com/badoo/binder/lifecycle/Lifecycle.kt b/binder/src/main/java/com/badoo/binder/lifecycle/Lifecycle.kt index 17f5f607..ff50a74b 100644 --- a/binder/src/main/java/com/badoo/binder/lifecycle/Lifecycle.kt +++ b/binder/src/main/java/com/badoo/binder/lifecycle/Lifecycle.kt @@ -1,7 +1,7 @@ package com.badoo.binder.lifecycle import com.badoo.binder.lifecycle.internal.FromObservableSource -import io.reactivex.ObservableSource +import io.reactivex.rxjava3.core.ObservableSource interface Lifecycle : ObservableSource { diff --git a/binder/src/main/java/com/badoo/binder/lifecycle/ManualLifecycle.kt b/binder/src/main/java/com/badoo/binder/lifecycle/ManualLifecycle.kt index c37dc992..2fb99f1f 100644 --- a/binder/src/main/java/com/badoo/binder/lifecycle/ManualLifecycle.kt +++ b/binder/src/main/java/com/badoo/binder/lifecycle/ManualLifecycle.kt @@ -3,7 +3,7 @@ package com.badoo.binder.lifecycle import com.badoo.binder.lifecycle.Lifecycle.Event import com.badoo.binder.lifecycle.Lifecycle.Event.BEGIN import com.badoo.binder.lifecycle.Lifecycle.Event.END -import io.reactivex.subjects.BehaviorSubject +import io.reactivex.rxjava3.subjects.BehaviorSubject class ManualLifecycle(private val subject : BehaviorSubject = BehaviorSubject.create()) : Lifecycle by Lifecycle.wrap(subject) { diff --git a/binder/src/main/java/com/badoo/binder/lifecycle/internal/FromObservableSource.kt b/binder/src/main/java/com/badoo/binder/lifecycle/internal/FromObservableSource.kt index 92bc3799..6a2ae360 100644 --- a/binder/src/main/java/com/badoo/binder/lifecycle/internal/FromObservableSource.kt +++ b/binder/src/main/java/com/badoo/binder/lifecycle/internal/FromObservableSource.kt @@ -1,7 +1,7 @@ package com.badoo.binder.lifecycle.internal import com.badoo.binder.lifecycle.Lifecycle -import io.reactivex.ObservableSource +import io.reactivex.rxjava3.core.ObservableSource internal class FromObservableSource( source: ObservableSource diff --git a/binder/src/main/java/com/badoo/binder/middleware/Consumer.kt b/binder/src/main/java/com/badoo/binder/middleware/Consumer.kt index 41a06c89..05116788 100644 --- a/binder/src/main/java/com/badoo/binder/middleware/Consumer.kt +++ b/binder/src/main/java/com/badoo/binder/middleware/Consumer.kt @@ -4,7 +4,7 @@ import com.badoo.binder.middleware.base.Middleware import com.badoo.binder.middleware.base.StandaloneMiddleware import com.badoo.binder.middleware.config.Middlewares import com.badoo.binder.middleware.config.NonWrappable -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.functions.Consumer /** * Wraps a Consumer with Middlewares. The list of Middlewares that will be applied is resolved @@ -19,7 +19,7 @@ import io.reactivex.functions.Consumer * @param postfix Passed on to [ConsumerMiddleware], in most cases you shouldn't need to override this. * @param wrapperOf Passed on to [ConsumerMiddleware], in most cases you shouldn't need to override this. */ -fun Consumer.wrapWithMiddleware( +fun Consumer.wrapWithMiddleware( standalone: Boolean = true, name: String? = null, postfix: String? = null, diff --git a/binder/src/main/java/com/badoo/binder/middleware/base/Middleware.kt b/binder/src/main/java/com/badoo/binder/middleware/base/Middleware.kt index a8ba0f26..c0747b54 100644 --- a/binder/src/main/java/com/badoo/binder/middleware/base/Middleware.kt +++ b/binder/src/main/java/com/badoo/binder/middleware/base/Middleware.kt @@ -1,9 +1,9 @@ package com.badoo.binder.middleware.base import com.badoo.binder.Connection -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.functions.Consumer -abstract class Middleware( +abstract class Middleware( protected val wrapped: Consumer ): Consumer { diff --git a/binder/src/main/java/com/badoo/binder/middleware/base/StandaloneMiddleware.kt b/binder/src/main/java/com/badoo/binder/middleware/base/StandaloneMiddleware.kt index 68f91668..4b5c589c 100644 --- a/binder/src/main/java/com/badoo/binder/middleware/base/StandaloneMiddleware.kt +++ b/binder/src/main/java/com/badoo/binder/middleware/base/StandaloneMiddleware.kt @@ -1,9 +1,9 @@ package com.badoo.binder.middleware.base import com.badoo.binder.Connection -import io.reactivex.disposables.Disposable +import io.reactivex.rxjava3.disposables.Disposable -internal class StandaloneMiddleware( +internal class StandaloneMiddleware( private val wrappedMiddleware: Middleware, name: String? = null, postfix: String? = null diff --git a/binder/src/main/java/com/badoo/binder/middleware/config/ConsumerMiddlewareFactory.kt b/binder/src/main/java/com/badoo/binder/middleware/config/ConsumerMiddlewareFactory.kt index 22b5269c..26c1fe85 100644 --- a/binder/src/main/java/com/badoo/binder/middleware/config/ConsumerMiddlewareFactory.kt +++ b/binder/src/main/java/com/badoo/binder/middleware/config/ConsumerMiddlewareFactory.kt @@ -1,6 +1,6 @@ package com.badoo.binder.middleware.config import com.badoo.binder.middleware.base.Middleware -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.functions.Consumer typealias ConsumerMiddlewareFactory = (Consumer) -> Middleware diff --git a/binder/src/main/java/com/badoo/binder/middleware/config/MiddlewareConfiguration.kt b/binder/src/main/java/com/badoo/binder/middleware/config/MiddlewareConfiguration.kt index 2683e009..7e533a19 100644 --- a/binder/src/main/java/com/badoo/binder/middleware/config/MiddlewareConfiguration.kt +++ b/binder/src/main/java/com/badoo/binder/middleware/config/MiddlewareConfiguration.kt @@ -1,14 +1,14 @@ package com.badoo.binder.middleware.config import com.badoo.binder.middleware.base.Middleware -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.functions.Consumer data class MiddlewareConfiguration( private val condition: WrappingCondition, private val factories: List> ) { - fun applyOn( + fun applyOn( consumerToWrap: Consumer, targetToCheck: Any, name: String?, diff --git a/binder/src/test/java/com/badoo/binder/BinderTest.kt b/binder/src/test/java/com/badoo/binder/BinderTest.kt index d6369b87..c65e71fb 100644 --- a/binder/src/test/java/com/badoo/binder/BinderTest.kt +++ b/binder/src/test/java/com/badoo/binder/BinderTest.kt @@ -1,9 +1,9 @@ package com.badoo.binder import com.badoo.binder.connector.Connector -import io.reactivex.Observable -import io.reactivex.ObservableSource -import io.reactivex.subjects.PublishSubject +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.subjects.PublishSubject import org.junit.jupiter.api.Test class BinderTest { @@ -36,7 +36,7 @@ class BinderTest { @Test fun `covariant endpoints compile for connection dsl`() { - val anyConsumer = TestConsumer() + val anyConsumer = TestConsumer() binder.bind(source to anyConsumer using IntToString) } diff --git a/binder/src/test/java/com/badoo/binder/LifecycleTest.kt b/binder/src/test/java/com/badoo/binder/LifecycleTest.kt index 60b6c414..73c0dbf4 100644 --- a/binder/src/test/java/com/badoo/binder/LifecycleTest.kt +++ b/binder/src/test/java/com/badoo/binder/LifecycleTest.kt @@ -2,9 +2,9 @@ package com.badoo.binder import com.badoo.binder.lifecycle.Lifecycle import com.badoo.binder.lifecycle.ManualLifecycle -import io.reactivex.ObservableSource -import io.reactivex.functions.Consumer -import io.reactivex.subjects.PublishSubject +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.functions.Consumer +import io.reactivex.rxjava3.subjects.PublishSubject import org.junit.jupiter.api.Test import org.mockito.kotlin.any import org.mockito.kotlin.mock diff --git a/binder/src/test/java/com/badoo/binder/TestConsumer.kt b/binder/src/test/java/com/badoo/binder/TestConsumer.kt index 4d295e89..ffb3e105 100644 --- a/binder/src/test/java/com/badoo/binder/TestConsumer.kt +++ b/binder/src/test/java/com/badoo/binder/TestConsumer.kt @@ -1,9 +1,9 @@ package com.badoo.binder -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.functions.Consumer import org.junit.jupiter.api.Assertions.assertEquals -class TestConsumer : Consumer { +class TestConsumer : Consumer { val values = mutableListOf() override fun accept(item: T) { @@ -11,5 +11,5 @@ class TestConsumer : Consumer { } } -fun TestConsumer.assertValues(vararg values: T) = +fun TestConsumer.assertValues(vararg values: T) = assertEquals(values.toList(), this.values) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c2a88248..f410df6b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,9 +11,9 @@ androidMaterialVersion = "1.4.0" constraintLayoutVersion = "2.1.0" # Rx -rxJavaVersion = "2.2.21" -rxKotlinVersion = "2.4.0" -rxAndroidVersion = "2.1.1" +rxJavaVersion = "3.1.9" +rxKotlinVersion = "3.0.1" +rxAndroidVersion = "3.0.2" # DI daggerVersion = "2.46.1" @@ -25,7 +25,7 @@ scalpelVersion = "1.1.2" glideVersion = "4.13.2" # Testing -retrofitVersion = "2.4.0" +retrofitVersion = "2.11.0" gsonVersion = "2.10.1" # Testing @@ -46,9 +46,9 @@ androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayo google-material = { module = "com.google.android.material:material", version.ref = "androidMaterialVersion" } # Rx -rxjava2 = { module = "io.reactivex.rxjava2:rxjava", version.ref = "rxJavaVersion" } -rxkotlin = { module = "io.reactivex.rxjava2:rxkotlin", version.ref = "rxKotlinVersion" } -rxandroid = { module = "io.reactivex.rxjava2:rxandroid", version.ref = "rxAndroidVersion" } +rxjava3 = { module = "io.reactivex.rxjava3:rxjava", version.ref = "rxJavaVersion" } +rxkotlin = { module = "io.reactivex.rxjava3:rxkotlin", version.ref = "rxKotlinVersion" } +rxandroid = { module = "io.reactivex.rxjava3:rxandroid", version.ref = "rxAndroidVersion" } # DI dagger-runtime = { module = "com.google.dagger:dagger", version.ref = "daggerVersion" } @@ -75,7 +75,7 @@ glide-compiler = { module = "com.github.bumptech.glide:compiler", version.ref = # Network retrofit-runtime = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofitVersion" } -retrofit-adapter-rxjava2 = { module = "com.squareup.retrofit2:adapter-rxjava2", version.ref = "retrofitVersion" } +retrofit-adapter-rxjava3 = { module = "com.squareup.retrofit2:adapter-rxjava3", version.ref = "retrofitVersion" } retrofit-converter-simplexml = { module = "com.squareup.retrofit2:converter-simplexml", version.ref = "retrofitVersion" } gson = { module = "com.google.code.gson:gson", version.ref = "gsonVersion" } diff --git a/mvicore-android/build.gradle.kts b/mvicore-android/build.gradle.kts index 6b91e3cc..a7cbc138 100644 --- a/mvicore-android/build.gradle.kts +++ b/mvicore-android/build.gradle.kts @@ -44,7 +44,7 @@ dependencies { api(project(":mvicore")) api(project(":binder")) api(libs.androidx.lifecycle.common) - api(libs.rxjava2) + api(libs.rxjava3) implementation(libs.kotlin.stdlib) implementation(libs.rxandroid) diff --git a/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidMainThreadFeatureScheduler.kt b/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidMainThreadFeatureScheduler.kt index 9c750aa3..84ee185c 100644 --- a/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidMainThreadFeatureScheduler.kt +++ b/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidMainThreadFeatureScheduler.kt @@ -2,8 +2,8 @@ package com.badoo.mvicore.android import android.os.Looper import com.badoo.mvicore.feature.FeatureScheduler -import io.reactivex.Scheduler -import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.core.Scheduler +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers /** * A feature scheduler that ensures that MVICore feature only manipulates state on the Android diff --git a/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/BaseAndroidBinderLifecycle.kt b/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/BaseAndroidBinderLifecycle.kt index 5beba848..ac2d4af2 100644 --- a/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/BaseAndroidBinderLifecycle.kt +++ b/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/BaseAndroidBinderLifecycle.kt @@ -2,8 +2,8 @@ package com.badoo.mvicore.android.lifecycle import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleObserver -import io.reactivex.ObservableSource -import io.reactivex.subjects.BehaviorSubject +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.subjects.BehaviorSubject import androidx.lifecycle.Lifecycle as AndroidLifecycle import com.badoo.binder.lifecycle.Lifecycle as BinderLifecycle diff --git a/mvicore-android/src/test/java/com/badoo/mvicore/android/lifecycle/LifecycleExtensionsTest.kt b/mvicore-android/src/test/java/com/badoo/mvicore/android/lifecycle/LifecycleExtensionsTest.kt index d5090c83..9af3c753 100644 --- a/mvicore-android/src/test/java/com/badoo/mvicore/android/lifecycle/LifecycleExtensionsTest.kt +++ b/mvicore-android/src/test/java/com/badoo/mvicore/android/lifecycle/LifecycleExtensionsTest.kt @@ -5,10 +5,10 @@ import androidx.arch.core.executor.TaskExecutor import androidx.lifecycle.Lifecycle import com.badoo.binder.Binder import com.badoo.binder.observeOn -import io.reactivex.functions.Consumer -import io.reactivex.internal.schedulers.RxThreadFactory -import io.reactivex.plugins.RxJavaPlugins -import io.reactivex.subjects.PublishSubject +import io.reactivex.rxjava3.functions.Consumer +import io.reactivex.rxjava3.internal.schedulers.RxThreadFactory +import io.reactivex.rxjava3.plugins.RxJavaPlugins +import io.reactivex.rxjava3.subjects.PublishSubject import java.util.concurrent.CountDownLatch import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions.assertEquals @@ -250,7 +250,7 @@ class LifecycleExtensionsTest { private var wasCalled: Boolean = false lateinit var threadName: String - override fun accept(t: Unit?) { + override fun accept(t: Unit) { wasCalled = true threadName = Thread.currentThread().name } diff --git a/mvicore-debugdrawer/build.gradle.kts b/mvicore-debugdrawer/build.gradle.kts index d7846b5a..af092737 100644 --- a/mvicore-debugdrawer/build.gradle.kts +++ b/mvicore-debugdrawer/build.gradle.kts @@ -40,7 +40,7 @@ dependencies { releaseApi(libs.debugdrawer.noop) implementation(libs.androidx.constraintlayout) - implementation(libs.rxjava2) + implementation(libs.rxjava3) implementation(libs.kotlin.stdlib) debugImplementation(libs.debugdrawer.view.impl) diff --git a/mvicore-debugdrawer/src/main/java/com/badoo/mvicore/debugdrawer/MviCoreControlsModule.kt b/mvicore-debugdrawer/src/main/java/com/badoo/mvicore/debugdrawer/MviCoreControlsModule.kt index 7ff0dbcb..47a2bc2a 100644 --- a/mvicore-debugdrawer/src/main/java/com/badoo/mvicore/debugdrawer/MviCoreControlsModule.kt +++ b/mvicore-debugdrawer/src/main/java/com/badoo/mvicore/debugdrawer/MviCoreControlsModule.kt @@ -17,7 +17,7 @@ import com.badoo.mvicore.consumer.middleware.PlaybackMiddleware.RecordStore.Play import com.badoo.mvicore.consumer.middleware.PlaybackMiddleware.RecordStore.RecordKey import io.palaima.debugdrawer.DebugDrawer import io.palaima.debugdrawer.base.DebugModuleAdapter -import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxjava3.disposables.CompositeDisposable class MviCoreControlsModule( private val recordStore: PlaybackMiddleware.RecordStore diff --git a/mvicore-demo/mvicore-demo-app/build.gradle.kts b/mvicore-demo/mvicore-demo-app/build.gradle.kts index 834ed027..b541d869 100644 --- a/mvicore-demo/mvicore-demo-app/build.gradle.kts +++ b/mvicore-demo/mvicore-demo-app/build.gradle.kts @@ -58,7 +58,7 @@ dependencies { implementation(libs.google.material) // Rx - implementation(libs.rxjava2) + implementation(libs.rxjava3) implementation(libs.rxandroid) // DI diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/App.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/App.kt index 9e080d60..946f2ebf 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/App.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/App.kt @@ -31,9 +31,7 @@ class App : Application() { Middlewares.configurations.add( MiddlewareConfiguration( condition = WrappingCondition.Always, - factories = listOf( - { consumer -> LoggingMiddleware(consumer, { Timber.d(it) }) } - ) + factories = listOf { consumer -> LoggingMiddleware(consumer, { Timber.d(it) }) } ) ) @@ -46,18 +44,19 @@ class App : Application() { WrappingCondition.IsStandalone ) ), - factories = listOf( - { consumer -> PlaybackMiddleware(consumer, recordStore, { Timber.d(it) }) } - ) + factories = listOf { consumer -> + PlaybackMiddleware( + consumer, + recordStore + ) { Timber.d(it) } + } ) ) Middlewares.configurations.add( MiddlewareConfiguration( condition = WrappingCondition.Always, - factories = listOf( - { consumer -> IdeaPluginMiddleware(consumer, defaultStore) } - ) + factories = listOf { consumer -> IdeaPluginMiddleware(consumer, defaultStore) } ) ) } diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/appscope/module/MviCoreModule.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/appscope/module/MviCoreModule.kt index 28b3ab20..6a29126d 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/appscope/module/MviCoreModule.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/appscope/module/MviCoreModule.kt @@ -7,7 +7,7 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import timber.log.Timber import javax.inject.Singleton diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/usersessionscope/UserManager.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/usersessionscope/UserManager.kt index ab6bd20c..b55f7de2 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/usersessionscope/UserManager.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/usersessionscope/UserManager.kt @@ -4,7 +4,7 @@ import android.app.Application import com.badoo.mvicoredemo.di.usersessionscope.component.UserComponentEntryPoint import com.badoo.mvicoredemo.di.usersessionscope.component.UserSessionComponent import dagger.hilt.EntryPoints -import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxjava3.disposables.CompositeDisposable import javax.inject.Inject import javax.inject.Provider import javax.inject.Singleton diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/common/ObservableSourceActivity.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/common/ObservableSourceActivity.kt index b232d53e..0e726050 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/common/ObservableSourceActivity.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/common/ObservableSourceActivity.kt @@ -1,8 +1,8 @@ package com.badoo.mvicoredemo.ui.common -import io.reactivex.ObservableSource -import io.reactivex.Observer -import io.reactivex.subjects.PublishSubject +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.core.Observer +import io.reactivex.rxjava3.subjects.PublishSubject abstract class ObservableSourceActivity : DebugActivity(), ObservableSource { diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/lifecycle/LifecycleDemoActivity.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/lifecycle/LifecycleDemoActivity.kt index bf2972c4..ae477da8 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/lifecycle/LifecycleDemoActivity.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/lifecycle/LifecycleDemoActivity.kt @@ -11,8 +11,8 @@ import com.badoo.mvicore.android.lifecycle.ResumePauseBinderLifecycle import com.badoo.mvicore.android.lifecycle.StartStopBinderLifecycle import com.badoo.mvicoredemo.databinding.ActivityLifecycleDemoBinding import init -import io.reactivex.functions.Consumer -import io.reactivex.subjects.PublishSubject +import io.reactivex.rxjava3.functions.Consumer +import io.reactivex.rxjava3.subjects.PublishSubject import timber.log.Timber class LifecycleDemoActivity : AppCompatActivity() { diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/MainActivity.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/MainActivity.kt index 0edb100a..781a89de 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/MainActivity.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/MainActivity.kt @@ -16,7 +16,7 @@ import com.badoo.mvicoredemo.ui.main.event.UiEvent.PlusClicked import com.badoo.mvicoredemo.ui.main.viewmodel.ViewModel import dagger.hilt.android.AndroidEntryPoint import init -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.functions.Consumer import javax.inject.Inject @AndroidEntryPoint diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/analytics/FakeAnalyticsTracker.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/analytics/FakeAnalyticsTracker.kt index 1690a5c8..bebd9a9e 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/analytics/FakeAnalyticsTracker.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/analytics/FakeAnalyticsTracker.kt @@ -3,7 +3,7 @@ package com.badoo.mvicoredemo.ui.main.analytics import android.content.Context import android.widget.Toast import com.badoo.mvicoredemo.ui.main.event.UiEvent -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.functions.Consumer class FakeAnalyticsTracker( private val context: Context diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/news/NewsListener.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/news/NewsListener.kt index e349c099..05f301bd 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/news/NewsListener.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/news/NewsListener.kt @@ -4,7 +4,7 @@ import android.content.Context import android.widget.Toast import com.badoo.feature2.Feature2 import com.badoo.feature2.Feature2.News.ErrorExecutingRequest -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.functions.Consumer import timber.log.Timber class NewsListener( diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/utils/RxExtensions.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/utils/RxExtensions.kt index c4c6e74e..75c7f831 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/utils/RxExtensions.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/utils/RxExtensions.kt @@ -1,14 +1,13 @@ package com.badoo.mvicoredemo.utils -import io.reactivex.Observable -import io.reactivex.ObservableSource -import io.reactivex.functions.BiFunction +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.ObservableSource -fun combineLatest(o1: ObservableSource, o2: ObservableSource): ObservableSource> = +fun combineLatest( + o1: ObservableSource, + o2: ObservableSource +): ObservableSource> = Observable.combineLatest( o1, - o2, - BiFunction> { t1, t2 -> - t1 to t2 - } - ) + o2 + ) { t1, t2 -> t1 to t2 } diff --git a/mvicore-demo/mvicore-demo-catapi/build.gradle.kts b/mvicore-demo/mvicore-demo-catapi/build.gradle.kts index ba4397b4..24a76664 100644 --- a/mvicore-demo/mvicore-demo-catapi/build.gradle.kts +++ b/mvicore-demo/mvicore-demo-catapi/build.gradle.kts @@ -32,11 +32,11 @@ android { } dependencies { - api(libs.rxjava2) + api(libs.rxjava3) api(libs.retrofit.runtime) implementation(libs.kotlin.stdlib) - implementation(libs.retrofit.adapter.rxjava2) + implementation(libs.retrofit.adapter.rxjava3) implementation(libs.retrofit.converter.simplexml) configurations { diff --git a/mvicore-demo/mvicore-demo-catapi/src/main/java/com/badoo/catapi/CatApi.kt b/mvicore-demo/mvicore-demo-catapi/src/main/java/com/badoo/catapi/CatApi.kt index fa7479a3..a9ab5224 100644 --- a/mvicore-demo/mvicore-demo-catapi/src/main/java/com/badoo/catapi/CatApi.kt +++ b/mvicore-demo/mvicore-demo-catapi/src/main/java/com/badoo/catapi/CatApi.kt @@ -1,11 +1,11 @@ package com.badoo.catapi -import io.reactivex.Observable -import io.reactivex.schedulers.Schedulers +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.schedulers.Schedulers import org.simpleframework.xml.convert.AnnotationStrategy import org.simpleframework.xml.core.Persister import retrofit2.Retrofit -import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory +import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory import retrofit2.converter.simplexml.SimpleXmlConverterFactory import retrofit2.http.GET import retrofit2.http.Query @@ -25,7 +25,7 @@ interface CatApi { private var retrofit = Retrofit.Builder() .baseUrl("https://thecatapi.com/api/") .addCallAdapterFactory( - RxJava2CallAdapterFactory.createWithScheduler( + RxJava3CallAdapterFactory.createWithScheduler( Schedulers.io() ) ) diff --git a/mvicore-demo/mvicore-demo-feature2/build.gradle.kts b/mvicore-demo/mvicore-demo-feature2/build.gradle.kts index 75c12d23..536f2ee4 100644 --- a/mvicore-demo/mvicore-demo-feature2/build.gradle.kts +++ b/mvicore-demo/mvicore-demo-feature2/build.gradle.kts @@ -33,7 +33,7 @@ android { } dependencies { - api(libs.rxjava2) + api(libs.rxjava3) api(project(":mvicore")) api(project(":mvicore-demo:mvicore-demo-catapi")) diff --git a/mvicore-demo/mvicore-demo-feature2/src/main/java/com/badoo/feature2/Extensions.kt b/mvicore-demo/mvicore-demo-feature2/src/main/java/com/badoo/feature2/Extensions.kt index fd510009..4612bf5f 100644 --- a/mvicore-demo/mvicore-demo-feature2/src/main/java/com/badoo/feature2/Extensions.kt +++ b/mvicore-demo/mvicore-demo-feature2/src/main/java/com/badoo/feature2/Extensions.kt @@ -1,9 +1,9 @@ package com.badoo.feature2 -import io.reactivex.Observable +import io.reactivex.rxjava3.core.Observable import java.util.concurrent.ThreadLocalRandom -fun Observable.randomlyThrowAnException(): Observable = +fun Observable.randomlyThrowAnException(): Observable = doOnNext { if (ThreadLocalRandom.current().nextInt(10) == 0) throw RuntimeException("Test exception") } diff --git a/mvicore-demo/mvicore-demo-feature2/src/main/java/com/badoo/feature2/Feature2.kt b/mvicore-demo/mvicore-demo-feature2/src/main/java/com/badoo/feature2/Feature2.kt index ec4ea30f..8ab3c014 100644 --- a/mvicore-demo/mvicore-demo-feature2/src/main/java/com/badoo/feature2/Feature2.kt +++ b/mvicore-demo/mvicore-demo-feature2/src/main/java/com/badoo/feature2/Feature2.kt @@ -18,8 +18,8 @@ import com.badoo.mvicore.element.NewsPublisher import com.badoo.mvicore.element.Reducer import com.badoo.mvicore.element.TimeCapsule import com.badoo.mvicore.feature.ActorReducerFeature -import io.reactivex.Observable -import io.reactivex.Observable.just +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Observable.just import kotlinx.parcelize.Parcelize class Feature2( diff --git a/mvicore-diff/src/test/java/com/badoo/mvicore/ModelWatcherTest.kt b/mvicore-diff/src/test/java/com/badoo/mvicore/ModelWatcherTest.kt index bcdfa488..7f60f8e6 100644 --- a/mvicore-diff/src/test/java/com/badoo/mvicore/ModelWatcherTest.kt +++ b/mvicore-diff/src/test/java/com/badoo/mvicore/ModelWatcherTest.kt @@ -9,7 +9,7 @@ class ModelWatcherTest { @Test fun `invokes callback when field changes`() { - val results = testWatcher( + val results = testWatcher( listOf( Model(int = 0), Model(int = 1) @@ -25,7 +25,7 @@ class ModelWatcherTest { @Test fun `does not invoke callback when field does not change`() { - val results = testWatcher( + val results = testWatcher( listOf( Model(int = 0), Model(int = 0) @@ -41,7 +41,7 @@ class ModelWatcherTest { @Test fun `emits nullable fields on start`() { - val results = testWatcher( + val results = testWatcher( listOf( Model(nullable = null) ) @@ -72,7 +72,7 @@ class ModelWatcherTest { @Test fun `invokes callback using dsl`() { - val results = testWatcher( + val results = testWatcher( listOf( Model(int = 0), Model(int = 1) ) @@ -104,7 +104,7 @@ class ModelWatcherTest { @Test fun `invokes callback with combined diffStrategy using 'or'`() { - val results = testWatcher( + val results = testWatcher( listOf( Model(list = listOf(""), int = 1), Model(list = listOf(""), int = 1, nullable = false), @@ -121,7 +121,7 @@ class ModelWatcherTest { @Test fun `invokes callback with combined diffStrategy using 'and'`() { - val results = testWatcher( + val results = testWatcher( listOf( Model(list = listOf(""), int = 1), Model(int = 1), @@ -139,7 +139,7 @@ class ModelWatcherTest { @Test fun `invokes callback after clear`() { val results = mutableListOf>() - val watcher = modelWatcher { + val watcher = modelWatcher { Model::list { results += it } diff --git a/mvicore-diff/src/test/java/com/badoo/mvicore/util/helpers.kt b/mvicore-diff/src/test/java/com/badoo/mvicore/util/helpers.kt index c7faf8ef..706efff9 100644 --- a/mvicore-diff/src/test/java/com/badoo/mvicore/util/helpers.kt +++ b/mvicore-diff/src/test/java/com/badoo/mvicore/util/helpers.kt @@ -8,7 +8,7 @@ fun testWatcher( init: ModelWatcher.Builder.(result: MutableList) -> Unit ): List { val updates = mutableListOf() - val watcher = modelWatcher { init(updates) } + val watcher = modelWatcher { init(updates) } models.forEach { watcher(it) } return updates } diff --git a/mvicore-plugin/idea/build.gradle.kts b/mvicore-plugin/idea/build.gradle.kts index 985b49a9..e7a9fe6c 100644 --- a/mvicore-plugin/idea/build.gradle.kts +++ b/mvicore-plugin/idea/build.gradle.kts @@ -37,7 +37,7 @@ tasks { dependencies { api(project(":mvicore-plugin:common")) api(libs.gson) - api(libs.rxjava2) + api(libs.rxjava3) implementation(libs.rxkotlin) implementation(libs.kotlin.stdlib) diff --git a/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/MviPluginToolWindowFactory.kt b/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/MviPluginToolWindowFactory.kt index ee530c12..e6f12d11 100644 --- a/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/MviPluginToolWindowFactory.kt +++ b/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/MviPluginToolWindowFactory.kt @@ -9,7 +9,6 @@ import com.badoo.mvicore.plugin.ui.EventList import com.badoo.mvicore.plugin.ui.JsonRootNode import com.badoo.mvicore.plugin.utils.mainThreadScheduler import com.google.gson.JsonElement -import com.intellij.openapi.Disposable import com.intellij.openapi.actionSystem.ActionGroup import com.intellij.openapi.actionSystem.ActionManager import com.intellij.openapi.actionSystem.ActionPlaces @@ -23,8 +22,8 @@ import com.intellij.ui.JBSplitter import com.intellij.ui.components.JBScrollPane import com.intellij.ui.content.ContentFactory import com.intellij.ui.treeStructure.Tree -import io.reactivex.Observable -import io.reactivex.disposables.CompositeDisposable +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.disposables.CompositeDisposable import java.awt.BorderLayout import javax.swing.JPanel import javax.swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED @@ -68,7 +67,7 @@ class MviPluginToolWindowFactory : ToolWindowFactory { eventsObservable = Observable.wrap(SocketObservable(project, 7675)) .observeOn(mainThreadScheduler) - Disposer.register(project, Disposable { disposables.clear() }) + Disposer.register(project) { disposables.clear() } // Left val sideActions = createSidePanelActions() diff --git a/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/SocketObservable.kt b/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/SocketObservable.kt index 1a7eec40..d103e0e0 100644 --- a/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/SocketObservable.kt +++ b/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/SocketObservable.kt @@ -6,8 +6,8 @@ import com.badoo.mvicore.plugin.utils.stopForwarding import com.google.gson.JsonElement import com.google.gson.JsonParser import com.intellij.openapi.project.Project -import io.reactivex.Observable -import io.reactivex.ObservableSource +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.ObservableSource import java.net.InetAddress import java.net.ServerSocket import java.net.SocketException diff --git a/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/action/RunAction.kt b/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/action/RunAction.kt index bd666a82..3622ee1f 100644 --- a/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/action/RunAction.kt +++ b/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/action/RunAction.kt @@ -14,9 +14,9 @@ import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.IdeActions import com.intellij.openapi.project.Project -import io.reactivex.Observable -import io.reactivex.disposables.CompositeDisposable -import io.reactivex.rxkotlin.plusAssign +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.disposables.CompositeDisposable +import io.reactivex.rxjava3.kotlin.plusAssign import java.text.SimpleDateFormat import java.util.Date diff --git a/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/utils/MainThreadScheduler.kt b/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/utils/MainThreadScheduler.kt index 78437323..49abed99 100644 --- a/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/utils/MainThreadScheduler.kt +++ b/mvicore-plugin/idea/src/main/java/com/badoo/mvicore/plugin/utils/MainThreadScheduler.kt @@ -1,6 +1,6 @@ package com.badoo.mvicore.plugin.utils -import io.reactivex.schedulers.Schedulers +import io.reactivex.rxjava3.schedulers.Schedulers import javax.swing.SwingUtilities val mainThreadScheduler = Schedulers.from { diff --git a/mvicore-plugin/middleware/build.gradle.kts b/mvicore-plugin/middleware/build.gradle.kts index df635d3a..6d24d340 100644 --- a/mvicore-plugin/middleware/build.gradle.kts +++ b/mvicore-plugin/middleware/build.gradle.kts @@ -16,7 +16,7 @@ base.archivesBaseName = "mvicore-plugin-middleware" dependencies { api(project(":binder")) api(project(":mvicore-plugin:common")) - api(libs.rxjava2) + api(libs.rxjava3) api(libs.gson) implementation(libs.kotlin.stdlib) diff --git a/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/DefaultPluginStore.kt b/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/DefaultPluginStore.kt index f67d763a..7940f8f3 100644 --- a/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/DefaultPluginStore.kt +++ b/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/DefaultPluginStore.kt @@ -9,13 +9,13 @@ import com.badoo.mvicore.middleware.socket.PluginSocketThread import com.badoo.mvicore.plugin.model.ConnectionData import com.badoo.mvicore.plugin.model.Event import com.google.gson.GsonBuilder -import io.reactivex.Observable -import io.reactivex.Single -import io.reactivex.disposables.CompositeDisposable -import io.reactivex.disposables.Disposable -import io.reactivex.rxkotlin.plusAssign -import io.reactivex.schedulers.Schedulers -import io.reactivex.subjects.PublishSubject +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Single +import io.reactivex.rxjava3.disposables.CompositeDisposable +import io.reactivex.rxjava3.disposables.Disposable +import io.reactivex.rxjava3.kotlin.plusAssign +import io.reactivex.rxjava3.schedulers.Schedulers +import io.reactivex.rxjava3.subjects.PublishSubject import java.lang.ref.ReferenceQueue import java.util.concurrent.ConcurrentLinkedDeque import java.util.concurrent.CopyOnWriteArrayList @@ -97,11 +97,11 @@ class DefaultPluginStore( )) } - private fun runInBackground(element: T, block: (T) -> Unit) { + private fun runInBackground(element: T, block: (T) -> Unit) { disposables += Single.just(element) .observeOn(Schedulers.computation()) - .subscribe(block, { + .subscribe(block) { // TODO: log? - }) + } } } diff --git a/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/IdeaPluginMiddleware.kt b/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/IdeaPluginMiddleware.kt index 2edeb670..7f87e5d5 100644 --- a/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/IdeaPluginMiddleware.kt +++ b/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/IdeaPluginMiddleware.kt @@ -2,7 +2,7 @@ package com.badoo.mvicore.middleware import com.badoo.binder.Connection import com.badoo.binder.middleware.base.Middleware -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.functions.Consumer class IdeaPluginMiddleware( wrapped: Consumer, diff --git a/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/gc/QueueWatcher.kt b/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/gc/QueueWatcher.kt index 81857c75..4e2b3862 100644 --- a/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/gc/QueueWatcher.kt +++ b/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/gc/QueueWatcher.kt @@ -29,7 +29,7 @@ internal class QueueWatcher( } } - fun add(ref: Connection, data: ConnectionData) { + fun add(ref: Connection, data: ConnectionData) { references.add( ConnectionReference(ref, referenceQueue, data) ) diff --git a/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/socket/PluginSocketThread.kt b/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/socket/PluginSocketThread.kt index b6e5712c..dd8158b4 100644 --- a/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/socket/PluginSocketThread.kt +++ b/mvicore-plugin/middleware/src/main/java/com/badoo/mvicore/middleware/socket/PluginSocketThread.kt @@ -2,9 +2,9 @@ package com.badoo.mvicore.middleware.socket import com.badoo.mvicore.plugin.model.Event import com.google.gson.Gson -import io.reactivex.Observable -import io.reactivex.ObservableSource -import io.reactivex.subjects.PublishSubject +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.subjects.PublishSubject import java.io.IOException import java.net.InetAddress import java.net.Socket diff --git a/mvicore/build.gradle.kts b/mvicore/build.gradle.kts index 56b68d3f..4a56e8af 100644 --- a/mvicore/build.gradle.kts +++ b/mvicore/build.gradle.kts @@ -17,7 +17,7 @@ tasks.withType { dependencies { api(project(":binder")) - api(libs.rxjava2) + api(libs.rxjava3) implementation(libs.rxkotlin) implementation(libs.kotlin.stdlib) diff --git a/mvicore/src/main/java/com/badoo/mvicore/consumer/middleware/LoggingMiddleware.kt b/mvicore/src/main/java/com/badoo/mvicore/consumer/middleware/LoggingMiddleware.kt index 7cd73145..ba4a994e 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/consumer/middleware/LoggingMiddleware.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/consumer/middleware/LoggingMiddleware.kt @@ -3,7 +3,7 @@ package com.badoo.mvicore.consumer.middleware import com.badoo.binder.Connection import com.badoo.binder.middleware.base.Middleware import com.badoo.mvicore.consumer.util.Logger -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.functions.Consumer import java.util.Locale class LoggingMiddleware( diff --git a/mvicore/src/main/java/com/badoo/mvicore/consumer/middleware/PlaybackMiddleware.kt b/mvicore/src/main/java/com/badoo/mvicore/consumer/middleware/PlaybackMiddleware.kt index f6b7c1ba..1aa41719 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/consumer/middleware/PlaybackMiddleware.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/consumer/middleware/PlaybackMiddleware.kt @@ -3,8 +3,8 @@ package com.badoo.mvicore.consumer.middleware import com.badoo.binder.Connection import com.badoo.binder.middleware.base.Middleware import com.badoo.mvicore.consumer.util.Logger -import io.reactivex.Observable -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.functions.Consumer open class PlaybackMiddleware( wrapped: Consumer, diff --git a/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt b/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt index 57657dd3..7343d139 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt @@ -11,9 +11,9 @@ import com.badoo.mvicore.consumer.middleware.PlaybackMiddleware.RecordStore.Play import com.badoo.mvicore.consumer.middleware.PlaybackMiddleware.RecordStore.PlaybackState.RECORDING import com.badoo.mvicore.consumer.middleware.PlaybackMiddleware.RecordStore.RecordKey import com.badoo.mvicore.consumer.util.Logger -import io.reactivex.Observable -import io.reactivex.Scheduler -import io.reactivex.subjects.BehaviorSubject +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Scheduler +import io.reactivex.rxjava3.subjects.BehaviorSubject import java.util.concurrent.TimeUnit class MemoryRecordStore( @@ -21,7 +21,8 @@ class MemoryRecordStore( private val playbackScheduler: Scheduler ) : RecordStore { private val state: BehaviorSubject = BehaviorSubject.createDefault(IDLE) - private val records: BehaviorSubject> = BehaviorSubject.createDefault(emptyList()) + private val records: BehaviorSubject> = + BehaviorSubject.createDefault(emptyList()) private val cachedEvents: MutableMap, MutableList> = mutableMapOf() private val lastElementBuffer: MutableMap, Any> = mutableMapOf() private var isRecording = false @@ -48,19 +49,29 @@ class MemoryRecordStore( } } - override fun register(middleware: PlaybackMiddleware, endpoints: Connection) { + override fun register( + middleware: PlaybackMiddleware, + endpoints: Connection + ) { cachedEvents[Key(middleware, endpoints)] = mutableListOf() updateRecords() } - override fun unregister(middleware: PlaybackMiddleware, endpoints: Connection) { + override fun unregister( + middleware: PlaybackMiddleware, + endpoints: Connection + ) { val key = Key(middleware, endpoints) cachedEvents.remove(key) lastElementBuffer.remove(key) updateRecords() } - override fun record(middleware: PlaybackMiddleware, endpoints: Connection, element: In) { + override fun record( + middleware: PlaybackMiddleware, + endpoints: Connection, + element: In + ) { val key = Key(middleware, endpoints) lastElementBuffer[key] = element @@ -76,7 +87,7 @@ class MemoryRecordStore( if (recordBaseTimestampNanos == 0L) throw IllegalStateException( "Don't create events when base timestamp is 0, you'll wait forever for the delay on playback. " + - "Check if you are in recording state?" + "Check if you are in recording state?" ) else Event( delayNanos = System.nanoTime() - recordBaseTimestampNanos, @@ -106,31 +117,34 @@ class MemoryRecordStore( cachedEvents.keys .first { it.id == recordKey.id } .let { key -> - Observable.fromIterable(cachedEvents[key]) - .delay { Observable.timer(it.delayNanos, TimeUnit.NANOSECONDS) } - .observeOn(playbackScheduler) - .doOnNext { logger?.invoke("MemoryRecordStore: PLAYBACK: ts: ${it.delayNanos}, event: ${it.obj}") } - .map { it.obj } - .doOnSubscribe { - state.onNext(PLAYBACK) - key.middleWare.startPlayback() } - .doOnTerminate { - logger?.invoke("MemoryRecordStore: PLAYBACK FINISHED") - state.onNext(FINISHED_PLAYBACK) - state.onNext(IDLE) - key.middleWare.stopPlayback() - } - .subscribe { - key.middleWare.replay( - // restore last state before playback started if needed - if (it == EndSignal) lastElementBuffer[key] - else it - ) - } + cachedEvents[key]?.let { event -> + Observable.fromIterable(event) + .delay { Observable.timer(it.delayNanos, TimeUnit.NANOSECONDS) } + .observeOn(playbackScheduler) + .doOnNext { logger?.invoke("MemoryRecordStore: PLAYBACK: ts: ${it.delayNanos}, event: ${it.obj}") } + .map { it.obj } + .doOnSubscribe { + state.onNext(PLAYBACK) + key.middleWare.startPlayback() + } + .doOnTerminate { + logger?.invoke("MemoryRecordStore: PLAYBACK FINISHED") + state.onNext(FINISHED_PLAYBACK) + state.onNext(IDLE) + key.middleWare.stopPlayback() + } + .subscribe { + key.middleWare.replay( + // restore last state before playback started if needed + if (it == EndSignal) lastElementBuffer[key] + else it + ) + } + } } } - private data class Key( + private data class Key( val middleWare: PlaybackMiddleware, val connection: Connection ) { diff --git a/mvicore/src/main/java/com/badoo/mvicore/element/Actor.kt b/mvicore/src/main/java/com/badoo/mvicore/element/Actor.kt index aa6affce..673b4bc8 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/element/Actor.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/element/Actor.kt @@ -1,6 +1,6 @@ package com.badoo.mvicore.element -import io.reactivex.Observable +import io.reactivex.rxjava3.core.Observable typealias Actor = (state: State, action: Action) -> Observable diff --git a/mvicore/src/main/java/com/badoo/mvicore/element/Bootstrapper.kt b/mvicore/src/main/java/com/badoo/mvicore/element/Bootstrapper.kt index 4d562849..328850c5 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/element/Bootstrapper.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/element/Bootstrapper.kt @@ -1,5 +1,5 @@ package com.badoo.mvicore.element -import io.reactivex.Observable +import io.reactivex.rxjava3.core.Observable typealias Bootstrapper = () -> Observable diff --git a/mvicore/src/main/java/com/badoo/mvicore/element/Store.kt b/mvicore/src/main/java/com/badoo/mvicore/element/Store.kt index 582ee4be..93093a4d 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/element/Store.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/element/Store.kt @@ -1,7 +1,7 @@ package com.badoo.mvicore.element -import io.reactivex.ObservableSource -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.functions.Consumer interface Store : Consumer, ObservableSource { diff --git a/mvicore/src/main/java/com/badoo/mvicore/extension/Rx.kt b/mvicore/src/main/java/com/badoo/mvicore/extension/Rx.kt index acf1ed82..fcd597b7 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/extension/Rx.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/extension/Rx.kt @@ -1,11 +1,11 @@ package com.badoo.mvicore.extension -import io.reactivex.Observable -import io.reactivex.Observer -import io.reactivex.Scheduler -import io.reactivex.functions.Consumer +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Observer +import io.reactivex.rxjava3.core.Scheduler +import io.reactivex.rxjava3.functions.Consumer fun Observer.asConsumer() = Consumer { onNext(it) } -internal fun Observable.subscribeOnNullable(scheduler: Scheduler?): Observable = +internal fun Observable.subscribeOnNullable(scheduler: Scheduler?): Observable = if (scheduler != null) subscribeOn(scheduler) else this diff --git a/mvicore/src/main/java/com/badoo/mvicore/feature/AsyncFeature.kt b/mvicore/src/main/java/com/badoo/mvicore/feature/AsyncFeature.kt index 84e99f33..4e13a150 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/feature/AsyncFeature.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/feature/AsyncFeature.kt @@ -1,6 +1,6 @@ package com.badoo.mvicore.feature -import io.reactivex.Observable +import io.reactivex.rxjava3.core.Observable /** * [Feature] that explicitly defines its multithreading capabilities. diff --git a/mvicore/src/main/java/com/badoo/mvicore/feature/AsyncFeatureSchedulers.kt b/mvicore/src/main/java/com/badoo/mvicore/feature/AsyncFeatureSchedulers.kt index bf55ee90..bdecf627 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/feature/AsyncFeatureSchedulers.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/feature/AsyncFeatureSchedulers.kt @@ -1,6 +1,6 @@ package com.badoo.mvicore.feature -import io.reactivex.Scheduler +import io.reactivex.rxjava3.core.Scheduler /** * A set of [Scheduler]s that change the threading behaviour of [BaseAsyncFeature] diff --git a/mvicore/src/main/java/com/badoo/mvicore/feature/BaseAsyncFeature.kt b/mvicore/src/main/java/com/badoo/mvicore/feature/BaseAsyncFeature.kt index 89609720..94766e1c 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/feature/BaseAsyncFeature.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/feature/BaseAsyncFeature.kt @@ -9,17 +9,17 @@ import com.badoo.mvicore.element.Reducer import com.badoo.mvicore.element.WishToAction import com.badoo.mvicore.extension.SameThreadVerifier import com.badoo.mvicore.extension.asConsumer -import io.reactivex.Observable -import io.reactivex.ObservableSource -import io.reactivex.Observer -import io.reactivex.Scheduler -import io.reactivex.disposables.CompositeDisposable -import io.reactivex.disposables.Disposable -import io.reactivex.functions.Consumer -import io.reactivex.rxkotlin.plusAssign -import io.reactivex.subjects.BehaviorSubject -import io.reactivex.subjects.PublishSubject -import io.reactivex.subjects.Subject +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.core.Observer +import io.reactivex.rxjava3.core.Scheduler +import io.reactivex.rxjava3.disposables.CompositeDisposable +import io.reactivex.rxjava3.disposables.Disposable +import io.reactivex.rxjava3.functions.Consumer +import io.reactivex.rxjava3.kotlin.plusAssign +import io.reactivex.rxjava3.subjects.BehaviorSubject +import io.reactivex.rxjava3.subjects.PublishSubject +import io.reactivex.rxjava3.subjects.Subject import java.util.concurrent.atomic.AtomicReference open class BaseAsyncFeature( @@ -151,7 +151,7 @@ open class BaseAsyncFeature, private val stateSubject: Subject, private val reducerWrapper: Consumer>, - private val featureScheduler: Scheduler?, + private val featureScheduler: Scheduler, private val threadVerifier: Lazy ) : Consumer> { diff --git a/mvicore/src/main/java/com/badoo/mvicore/feature/BaseFeature.kt b/mvicore/src/main/java/com/badoo/mvicore/feature/BaseFeature.kt index cf793992..833d5ddf 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/feature/BaseFeature.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/feature/BaseFeature.kt @@ -10,16 +10,16 @@ import com.badoo.mvicore.element.WishToAction import com.badoo.mvicore.extension.SameThreadVerifier import com.badoo.mvicore.extension.asConsumer import com.badoo.mvicore.extension.subscribeOnNullable -import io.reactivex.Observable -import io.reactivex.ObservableSource -import io.reactivex.Observer -import io.reactivex.disposables.CompositeDisposable -import io.reactivex.disposables.Disposable -import io.reactivex.functions.Consumer -import io.reactivex.rxkotlin.plusAssign -import io.reactivex.subjects.BehaviorSubject -import io.reactivex.subjects.PublishSubject -import io.reactivex.subjects.Subject +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.core.Observer +import io.reactivex.rxjava3.disposables.CompositeDisposable +import io.reactivex.rxjava3.disposables.Disposable +import io.reactivex.rxjava3.functions.Consumer +import io.reactivex.rxjava3.kotlin.plusAssign +import io.reactivex.rxjava3.subjects.BehaviorSubject +import io.reactivex.rxjava3.subjects.PublishSubject +import io.reactivex.rxjava3.subjects.Subject /** * A base implementation of a single threaded feature. diff --git a/mvicore/src/main/java/com/badoo/mvicore/feature/Feature.kt b/mvicore/src/main/java/com/badoo/mvicore/feature/Feature.kt index 993368af..82e12d86 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/feature/Feature.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/feature/Feature.kt @@ -1,8 +1,8 @@ package com.badoo.mvicore.feature import com.badoo.mvicore.element.Store -import io.reactivex.ObservableSource -import io.reactivex.disposables.Disposable +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.disposables.Disposable interface Feature : Store, Disposable { diff --git a/mvicore/src/main/java/com/badoo/mvicore/feature/FeatureScheduler.kt b/mvicore/src/main/java/com/badoo/mvicore/feature/FeatureScheduler.kt index 096bf4c3..9e3ebc9b 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/feature/FeatureScheduler.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/feature/FeatureScheduler.kt @@ -1,6 +1,6 @@ package com.badoo.mvicore.feature -import io.reactivex.Scheduler +import io.reactivex.rxjava3.core.Scheduler /** * A set of [Scheduler]s that change the threading behaviour of [BaseFeature] diff --git a/mvicore/src/main/java/com/badoo/mvicore/feature/FeatureSchedulers.kt b/mvicore/src/main/java/com/badoo/mvicore/feature/FeatureSchedulers.kt index ae02f0b8..f47c4128 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/feature/FeatureSchedulers.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/feature/FeatureSchedulers.kt @@ -1,9 +1,9 @@ package com.badoo.mvicore.feature -import io.reactivex.Scheduler -import io.reactivex.internal.schedulers.RxThreadFactory -import io.reactivex.plugins.RxJavaPlugins -import io.reactivex.schedulers.Schedulers +import io.reactivex.rxjava3.core.Scheduler +import io.reactivex.rxjava3.internal.schedulers.RxThreadFactory +import io.reactivex.rxjava3.plugins.RxJavaPlugins +import io.reactivex.rxjava3.schedulers.Schedulers import java.util.concurrent.ThreadFactory object FeatureSchedulers { diff --git a/mvicore/src/main/java/com/badoo/mvicore/feature/ReducerFeature.kt b/mvicore/src/main/java/com/badoo/mvicore/feature/ReducerFeature.kt index 65ee99e7..90445e15 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/feature/ReducerFeature.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/feature/ReducerFeature.kt @@ -5,8 +5,8 @@ import com.badoo.mvicore.element.Actor import com.badoo.mvicore.element.Bootstrapper import com.badoo.mvicore.element.NewsPublisher import com.badoo.mvicore.element.Reducer -import io.reactivex.Observable -import io.reactivex.Observable.just +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Observable.just /** * An implementation of a single threaded feature. diff --git a/mvicore/src/test/java/com/badoo/mvicore/TestExtensions.kt b/mvicore/src/test/java/com/badoo/mvicore/TestExtensions.kt index 347fa11f..e87373c1 100644 --- a/mvicore/src/test/java/com/badoo/mvicore/TestExtensions.kt +++ b/mvicore/src/test/java/com/badoo/mvicore/TestExtensions.kt @@ -1,6 +1,6 @@ package com.badoo.mvicore -import io.reactivex.observers.TestObserver +import io.reactivex.rxjava3.observers.TestObserver fun TestObserver.onNextEvents() = - events[0] + values() diff --git a/mvicore/src/test/java/com/badoo/mvicore/TestHelper.kt b/mvicore/src/test/java/com/badoo/mvicore/TestHelper.kt index 0ee93be6..4ae55c4a 100644 --- a/mvicore/src/test/java/com/badoo/mvicore/TestHelper.kt +++ b/mvicore/src/test/java/com/badoo/mvicore/TestHelper.kt @@ -26,10 +26,10 @@ import com.badoo.mvicore.element.Actor import com.badoo.mvicore.element.Bootstrapper import com.badoo.mvicore.element.NewsPublisher import com.badoo.mvicore.element.Reducer -import io.reactivex.Observable -import io.reactivex.Observable.empty -import io.reactivex.Observable.just -import io.reactivex.Scheduler +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Observable.empty +import io.reactivex.rxjava3.core.Observable.just +import io.reactivex.rxjava3.core.Scheduler import java.util.concurrent.TimeUnit class TestHelper { @@ -130,7 +130,7 @@ class TestHelper { just(delayedFulfillAmount) .delay(wish.delayMs, TimeUnit.MILLISECONDS, asyncWorkScheduler) .map { FinishedAsync(it) } - .startWith(StartedAsync) + .startWith(just(StartedAsync)) private fun emit3effects(): Observable = just( diff --git a/mvicore/src/test/java/com/badoo/mvicore/bootstrapper/BootstrapperTest.kt b/mvicore/src/test/java/com/badoo/mvicore/bootstrapper/BootstrapperTest.kt index 9e4c40f4..f378d1ea 100644 --- a/mvicore/src/test/java/com/badoo/mvicore/bootstrapper/BootstrapperTest.kt +++ b/mvicore/src/test/java/com/badoo/mvicore/bootstrapper/BootstrapperTest.kt @@ -10,9 +10,9 @@ import com.badoo.mvicore.bootstrapper.BootstrapperTest.Action.Action3 import com.badoo.mvicore.element.Bootstrapper import com.badoo.mvicore.feature.BaseFeature import com.badoo.mvicore.feature.Feature -import io.reactivex.Observable -import io.reactivex.observers.TestObserver -import io.reactivex.subjects.ReplaySubject +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.observers.TestObserver +import io.reactivex.rxjava3.subjects.ReplaySubject import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test diff --git a/mvicore/src/test/java/com/badoo/mvicore/feature/AsyncBaseFeatureTest.kt b/mvicore/src/test/java/com/badoo/mvicore/feature/AsyncBaseFeatureTest.kt index 20ca9e58..ad856567 100644 --- a/mvicore/src/test/java/com/badoo/mvicore/feature/AsyncBaseFeatureTest.kt +++ b/mvicore/src/test/java/com/badoo/mvicore/feature/AsyncBaseFeatureTest.kt @@ -7,12 +7,12 @@ import com.badoo.mvicore.element.PostProcessor import com.badoo.mvicore.element.Reducer import com.badoo.mvicore.element.WishToAction import com.badoo.mvicore.utils.RxErrorRule -import io.reactivex.Observable -import io.reactivex.ObservableSource -import io.reactivex.Scheduler -import io.reactivex.disposables.CompositeDisposable -import io.reactivex.rxkotlin.plusAssign -import io.reactivex.schedulers.Schedulers +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.ObservableSource +import io.reactivex.rxjava3.core.Scheduler +import io.reactivex.rxjava3.disposables.CompositeDisposable +import io.reactivex.rxjava3.kotlin.plusAssign +import io.reactivex.rxjava3.schedulers.Schedulers import java.util.concurrent.CountDownLatch import java.util.concurrent.Executors import java.util.concurrent.TimeUnit @@ -197,7 +197,7 @@ class AsyncBaseFeatureTest { ) ) - private fun ObservableSource.wrap() = + private fun ObservableSource.wrap() = Observable.wrap(this) class Wish diff --git a/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeaturePostProcessorTest.kt b/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeaturePostProcessorTest.kt index ee6aefa7..6cf1f74e 100644 --- a/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeaturePostProcessorTest.kt +++ b/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeaturePostProcessorTest.kt @@ -8,7 +8,7 @@ import com.badoo.mvicore.feature.PostProcessorTestFeature.Effect import com.badoo.mvicore.feature.PostProcessorTestFeature.News import com.badoo.mvicore.feature.PostProcessorTestFeature.State import com.badoo.mvicore.feature.PostProcessorTestFeature.Wish -import io.reactivex.Observable +import io.reactivex.rxjava3.core.Observable import org.junit.jupiter.api.Test class BaseFeaturePostProcessorTest { diff --git a/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeatureWithSchedulerTest.kt b/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeatureWithSchedulerTest.kt index a2723e32..d5218872 100644 --- a/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeatureWithSchedulerTest.kt +++ b/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeatureWithSchedulerTest.kt @@ -20,13 +20,13 @@ import com.badoo.mvicore.TestHelper.TestWish.Unfulfillable import com.badoo.mvicore.extension.SameThreadVerifier import com.badoo.mvicore.onNextEvents import com.badoo.mvicore.utils.RxErrorRule -import io.reactivex.Observable -import io.reactivex.Scheduler -import io.reactivex.disposables.Disposable -import io.reactivex.observers.TestObserver -import io.reactivex.schedulers.Schedulers -import io.reactivex.schedulers.TestScheduler -import io.reactivex.subjects.PublishSubject +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Scheduler +import io.reactivex.rxjava3.disposables.Disposable +import io.reactivex.rxjava3.observers.TestObserver +import io.reactivex.rxjava3.schedulers.Schedulers +import io.reactivex.rxjava3.schedulers.TestScheduler +import io.reactivex.rxjava3.subjects.PublishSubject import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit import org.junit.jupiter.api.Assertions.assertEquals diff --git a/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeatureWithoutSchedulerTest.kt b/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeatureWithoutSchedulerTest.kt index 5098714d..18798521 100644 --- a/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeatureWithoutSchedulerTest.kt +++ b/mvicore/src/test/java/com/badoo/mvicore/feature/BaseFeatureWithoutSchedulerTest.kt @@ -19,9 +19,9 @@ import com.badoo.mvicore.TestHelper.TestWish.TranslatesTo3Effects import com.badoo.mvicore.TestHelper.TestWish.Unfulfillable import com.badoo.mvicore.extension.SameThreadVerifier import com.badoo.mvicore.onNextEvents -import io.reactivex.observers.TestObserver -import io.reactivex.schedulers.TestScheduler -import io.reactivex.subjects.PublishSubject +import io.reactivex.rxjava3.observers.TestObserver +import io.reactivex.rxjava3.schedulers.TestScheduler +import io.reactivex.rxjava3.subjects.PublishSubject import java.util.concurrent.TimeUnit import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions.assertEquals @@ -40,8 +40,8 @@ class BaseFeatureWithoutSchedulerTest { fun prepare() { SameThreadVerifier.isEnabled = false - newsSubject = PublishSubject.create() - actorInvocationLog = PublishSubject.create>() + newsSubject = PublishSubject.create() + actorInvocationLog = PublishSubject.create() actorInvocationLogTest = actorInvocationLog.test() actorScheduler = TestScheduler() diff --git a/mvicore/src/test/java/com/badoo/mvicore/feature/TrampolineFeatureSchedulerTest.kt b/mvicore/src/test/java/com/badoo/mvicore/feature/TrampolineFeatureSchedulerTest.kt index 4b6d3087..5c239b14 100644 --- a/mvicore/src/test/java/com/badoo/mvicore/feature/TrampolineFeatureSchedulerTest.kt +++ b/mvicore/src/test/java/com/badoo/mvicore/feature/TrampolineFeatureSchedulerTest.kt @@ -6,9 +6,9 @@ import com.badoo.mvicore.feature.FeatureSchedulers.TrampolineFeatureScheduler import com.badoo.mvicore.feature.TrampolineFeatureSchedulerTest.TestFeature.Effect import com.badoo.mvicore.feature.TrampolineFeatureSchedulerTest.TestFeature.State import com.badoo.mvicore.feature.TrampolineFeatureSchedulerTest.TestFeature.Wish -import io.reactivex.Observable -import io.reactivex.Scheduler -import io.reactivex.schedulers.TestScheduler +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.core.Scheduler +import io.reactivex.rxjava3.schedulers.TestScheduler import java.util.concurrent.TimeUnit import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test diff --git a/mvicore/src/test/java/com/badoo/mvicore/newspublishing/NewsPublishingTest.kt b/mvicore/src/test/java/com/badoo/mvicore/newspublishing/NewsPublishingTest.kt index 93074a46..057ef479 100644 --- a/mvicore/src/test/java/com/badoo/mvicore/newspublishing/NewsPublishingTest.kt +++ b/mvicore/src/test/java/com/badoo/mvicore/newspublishing/NewsPublishingTest.kt @@ -17,9 +17,9 @@ import com.badoo.mvicore.newspublishing.TestNews.News3 import com.badoo.mvicore.newspublishing.TestWish.Wish1 import com.badoo.mvicore.newspublishing.TestWish.Wish2 import com.badoo.mvicore.newspublishing.TestWish.Wish3 -import io.reactivex.Observable -import io.reactivex.functions.Consumer -import io.reactivex.observers.TestObserver +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.functions.Consumer +import io.reactivex.rxjava3.observers.TestObserver import java.util.stream.Stream import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.extension.ExtensionContext diff --git a/mvicore/src/test/java/com/badoo/mvicore/utils/RxErrorRule.kt b/mvicore/src/test/java/com/badoo/mvicore/utils/RxErrorRule.kt index 0d96d644..ff177ceb 100644 --- a/mvicore/src/test/java/com/badoo/mvicore/utils/RxErrorRule.kt +++ b/mvicore/src/test/java/com/badoo/mvicore/utils/RxErrorRule.kt @@ -1,7 +1,7 @@ package com.badoo.mvicore.utils -import io.reactivex.exceptions.CompositeException -import io.reactivex.plugins.RxJavaPlugins +import io.reactivex.rxjava3.exceptions.CompositeException +import io.reactivex.rxjava3.plugins.RxJavaPlugins import java.util.Collections import org.junit.jupiter.api.Assertions.fail import org.junit.jupiter.api.extension.AfterEachCallback From 73878e6d1e37c9d5312ef2cbc9d399443462d997 Mon Sep 17 00:00:00 2001 From: "serhii.denysov" Date: Fri, 13 Sep 2024 22:41:15 +0100 Subject: [PATCH 2/7] detekt fixed --- binder/detekt-baseline.xml | 2 +- .../consumer/playback/MemoryRecordStore.kt | 51 +++++++++---------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/binder/detekt-baseline.xml b/binder/detekt-baseline.xml index 5df9333d..3769371e 100644 --- a/binder/detekt-baseline.xml +++ b/binder/detekt-baseline.xml @@ -4,7 +4,7 @@ MaxLineLength:Connection.kt$infix MaxLineLength:ManualLifecycle.kt$ManualLifecycle$class - ReturnCount:Consumer.kt$fun <In> Consumer<In>.wrapWithMiddleware( standalone: Boolean = true, name: String? = null, postfix: String? = null, wrapperOf: Any? = null ): Consumer<In> + ReturnCount:Consumer.kt$fun <In : Any> Consumer<In>.wrapWithMiddleware( standalone: Boolean = true, name: String? = null, postfix: String? = null, wrapperOf: Any? = null ): Consumer<In> TooManyFunctions:Binder.kt$Binder : Disposable UseCheckOrError:StandaloneMiddleware.kt$StandaloneMiddleware$throw IllegalStateException("Middleware was initialised in standalone mode, can't accept other connections") diff --git a/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt b/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt index 7343d139..6b7896c8 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt @@ -114,34 +114,33 @@ class MemoryRecordStore( throw IllegalStateException("Trying to playback while still recording") } - cachedEvents.keys + val firstKey = cachedEvents.keys .first { it.id == recordKey.id } - .let { key -> - cachedEvents[key]?.let { event -> - Observable.fromIterable(event) - .delay { Observable.timer(it.delayNanos, TimeUnit.NANOSECONDS) } - .observeOn(playbackScheduler) - .doOnNext { logger?.invoke("MemoryRecordStore: PLAYBACK: ts: ${it.delayNanos}, event: ${it.obj}") } - .map { it.obj } - .doOnSubscribe { - state.onNext(PLAYBACK) - key.middleWare.startPlayback() - } - .doOnTerminate { - logger?.invoke("MemoryRecordStore: PLAYBACK FINISHED") - state.onNext(FINISHED_PLAYBACK) - state.onNext(IDLE) - key.middleWare.stopPlayback() - } - .subscribe { - key.middleWare.replay( - // restore last state before playback started if needed - if (it == EndSignal) lastElementBuffer[key] - else it - ) - } + val event = cachedEvents[firstKey] + if (event != null) { + Observable.fromIterable(event) + .delay { Observable.timer(it.delayNanos, TimeUnit.NANOSECONDS) } + .observeOn(playbackScheduler) + .doOnNext { logger?.invoke("MemoryRecordStore: PLAYBACK: ts: ${it.delayNanos}, event: ${it.obj}") } + .map { it.obj } + .doOnSubscribe { + state.onNext(PLAYBACK) + firstKey.middleWare.startPlayback() } - } + .doOnTerminate { + logger?.invoke("MemoryRecordStore: PLAYBACK FINISHED") + state.onNext(FINISHED_PLAYBACK) + state.onNext(IDLE) + firstKey.middleWare.stopPlayback() + } + .subscribe { + firstKey.middleWare.replay( + // restore last state before playback started if needed + if (it == EndSignal) lastElementBuffer[firstKey] + else it + ) + } + } } private data class Key( From eab847b47aebb45f3e16957b16639f94035da4ab Mon Sep 17 00:00:00 2001 From: "serhii.denysov" Date: Fri, 13 Sep 2024 22:45:02 +0100 Subject: [PATCH 3/7] upload artifact for instrumentation fixed --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c0e3ef15..6d5458db 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -98,7 +98,7 @@ jobs: ./gradlew connectedCheck - name: Upload failed instrumentation artifacts if: failure() - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: instrumentation-failures path: | From 142e6bc60bdbeee6833cf89e6c5adfedea1e50a0 Mon Sep 17 00:00:00 2001 From: "serhii.denysov" Date: Mon, 16 Sep 2024 17:57:49 +0100 Subject: [PATCH 4/7] pr comment fixed --- .../consumer/playback/MemoryRecordStore.kt | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt b/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt index 6b7896c8..718e7044 100644 --- a/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt +++ b/mvicore/src/main/java/com/badoo/mvicore/consumer/playback/MemoryRecordStore.kt @@ -114,33 +114,33 @@ class MemoryRecordStore( throw IllegalStateException("Trying to playback while still recording") } - val firstKey = cachedEvents.keys - .first { it.id == recordKey.id } - val event = cachedEvents[firstKey] - if (event != null) { - Observable.fromIterable(event) - .delay { Observable.timer(it.delayNanos, TimeUnit.NANOSECONDS) } - .observeOn(playbackScheduler) - .doOnNext { logger?.invoke("MemoryRecordStore: PLAYBACK: ts: ${it.delayNanos}, event: ${it.obj}") } - .map { it.obj } - .doOnSubscribe { - state.onNext(PLAYBACK) - firstKey.middleWare.startPlayback() - } - .doOnTerminate { - logger?.invoke("MemoryRecordStore: PLAYBACK FINISHED") - state.onNext(FINISHED_PLAYBACK) - state.onNext(IDLE) - firstKey.middleWare.stopPlayback() - } - .subscribe { - firstKey.middleWare.replay( - // restore last state before playback started if needed - if (it == EndSignal) lastElementBuffer[firstKey] - else it - ) - } - } + cachedEvents + .entries + .first { it.key.id == recordKey.id } + .let { (key, events) -> + Observable.fromIterable(events) + .delay { Observable.timer(it.delayNanos, TimeUnit.NANOSECONDS) } + .observeOn(playbackScheduler) + .doOnNext { logger?.invoke("MemoryRecordStore: PLAYBACK: ts: ${it.delayNanos}, event: ${it.obj}") } + .map { it.obj } + .doOnSubscribe { + state.onNext(PLAYBACK) + key.middleWare.startPlayback() + } + .doOnTerminate { + logger?.invoke("MemoryRecordStore: PLAYBACK FINISHED") + state.onNext(FINISHED_PLAYBACK) + state.onNext(IDLE) + key.middleWare.stopPlayback() + } + .subscribe { + key.middleWare.replay( + // restore last state before playback started if needed + if (it == EndSignal) lastElementBuffer[key] + else it + ) + } + } } private data class Key( From fee5122918ae8eb4fce0052d0a0823146a1bc3f5 Mon Sep 17 00:00:00 2001 From: Serhii Denysov Date: Wed, 2 Apr 2025 12:21:40 +0100 Subject: [PATCH 5/7] rxjava3 version bumped --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f410df6b..5c4bdbee 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,7 @@ androidMaterialVersion = "1.4.0" constraintLayoutVersion = "2.1.0" # Rx -rxJavaVersion = "3.1.9" +rxJavaVersion = "3.1.10" rxKotlinVersion = "3.0.1" rxAndroidVersion = "3.0.2" From 68a4d9abc969873e857fc3d05f3b4687af8d5473 Mon Sep 17 00:00:00 2001 From: Serhii Denysov Date: Wed, 2 Apr 2025 12:50:12 +0100 Subject: [PATCH 6/7] codestyle improved and redundant file removed --- .../com/badoo/binder/connector/Connector.kt | 2 +- .../binder/connector/NotNullConnector.kt | 4 +- .../com/badoo/binder/lifecycle/Lifecycle.kt | 2 +- .../badoo/binder/lifecycle/ManualLifecycle.kt | 4 +- .../com/badoo/binder/middleware/Consumer.kt | 2 +- .../binder/middleware/base/Middleware.kt | 2 +- .../middleware/base/StandaloneMiddleware.kt | 2 +- .../config/MiddlewareConfiguration.kt | 6 +- .../middleware/config/WrappingCondition.kt | 6 +- .../test/java/com/badoo/binder/BinderTest.kt | 4 +- .../mvicore/android/AndroidTimeCapsuleTest.kt | 12 +- .../AndroidMainThreadFeatureScheduler.kt | 4 +- .../mvicore/android/AndroidTimeCapsule.kt | 6 +- .../lifecycle/BaseAndroidBinderLifecycle.kt | 4 +- .../lifecycle/CreateDestroyBinderLifecycle.kt | 1 - .../lifecycle/ResumePauseBinderLifecycle.kt | 3 +- .../lifecycle/StartStopBinderLifecycle.kt | 3 +- .../lifecycle/LifecycleExtensionsTest.kt | 2 +- .../debugdrawer/MviCoreControlsModule.kt | 13 +- .../res/layout/list_item_simple_small.xml | 6 +- .../src/main/res/layout/playback_controls.xml | 22 +- .../main/java/com/badoo/mvicoredemo/App.kt | 3 +- .../usersessionscope/UserManagerEntryPoint.kt | 2 +- .../badoo/mvicoredemo/ui/common/Extensions.kt | 2 + .../ui/lifecycle/LifecycleDemoActivity.kt | 3 +- .../mvicoredemo/ui/main/HelpDialogFragment.kt | 3 +- .../badoo/mvicoredemo/ui/main/MainActivity.kt | 2 +- .../ui/main/event/UiEventTransformer2.kt | 2 +- .../res/layout/activity_lifecycle_demo.xml | 4 +- .../src/main/res/layout/activity_login.xml | 12 +- .../src/main/res/layout/activity_main.xml | 21 +- .../src/main/res/menu/main_drawer_menu.xml | 2 +- .../src/main/java/com/badoo/catapi/CatApi.kt | 4 +- .../main/java/com/badoo/feature1/Feature1.kt | 1 + .../main/java/com/badoo/feature2/Feature2.kt | 12 +- .../java/com/badoo/mvicore/ModelWatcher.kt | 6 +- .../java/com/badoo/mvicore/comparators.kt | 1 + .../com/badoo/mvicore/util/SealedModel.kt | 7 +- .../com/badoo/mvicore/plugin/model/Event.kt | 2 +- .../plugin/MviPluginToolWindowFactory.kt | 19 +- .../badoo/mvicore/plugin/SocketObservable.kt | 12 +- .../mvicore/plugin/action/ClearAction.kt | 3 +- .../badoo/mvicore/plugin/action/RunAction.kt | 214 +++++++++--------- .../badoo/mvicore/plugin/ui/ConnectionList.kt | 4 +- .../com/badoo/mvicore/plugin/ui/EventList.kt | 10 +- .../badoo/mvicore/plugin/ui/EventListModel.kt | 7 +- .../badoo/mvicore/plugin/ui/JsonRootNode.kt | 6 +- .../badoo/mvicore/plugin/ui/JsonTreeNode.kt | 2 +- .../mvicore/plugin/utils/Notifications.kt | 3 +- .../mvicore/middleware/DefaultPluginStore.kt | 14 +- .../middleware/IdeaPluginMiddleware.kt | 6 +- .../mvicore/middleware/gc/QueueWatcher.kt | 4 +- .../gson/MviPluginTypeAdapterFactory.kt | 4 +- .../consumer/middleware/LoggingMiddleware.kt | 2 +- .../consumer/middleware/PlaybackMiddleware.kt | 21 +- .../java/com/badoo/mvicore/element/Actor.kt | 3 +- .../java/com/badoo/mvicore/element/Reducer.kt | 3 +- .../mvicore/extension/SameThreadVerifier.kt | 2 +- .../badoo/mvicore/feature/ReducerFeature.kt | 3 +- .../badoo/mvicore/middleware/Middleware.kt | 2 - .../java/com/badoo/mvicore/TestExtensions.kt | 3 +- .../test/java/com/badoo/mvicore/TestHelper.kt | 6 +- .../extension/SameThreadVerifierTest.kt | 6 +- .../mvicore/feature/AsyncBaseFeatureTest.kt | 6 +- .../feature/BaseFeatureWithSchedulerTest.kt | 4 +- .../BaseFeatureWithoutSchedulerTest.kt | 2 +- .../feature/TrampolineFeatureSchedulerTest.kt | 2 +- .../newspublishing/NewsPublishingTest.kt | 6 +- .../com/badoo/mvicore/utils/RxErrorRule.kt | 2 +- 69 files changed, 327 insertions(+), 253 deletions(-) delete mode 100644 mvicore/src/main/java/com/badoo/mvicore/middleware/Middleware.kt diff --git a/binder/src/main/java/com/badoo/binder/connector/Connector.kt b/binder/src/main/java/com/badoo/binder/connector/Connector.kt index 4fc6227e..2e6f2883 100644 --- a/binder/src/main/java/com/badoo/binder/connector/Connector.kt +++ b/binder/src/main/java/com/badoo/binder/connector/Connector.kt @@ -2,4 +2,4 @@ package com.badoo.binder.connector import io.reactivex.rxjava3.core.ObservableSource -interface Connector: (ObservableSource) -> ObservableSource +interface Connector : (ObservableSource) -> ObservableSource diff --git a/binder/src/main/java/com/badoo/binder/connector/NotNullConnector.kt b/binder/src/main/java/com/badoo/binder/connector/NotNullConnector.kt index e9932583..ad96e16b 100644 --- a/binder/src/main/java/com/badoo/binder/connector/NotNullConnector.kt +++ b/binder/src/main/java/com/badoo/binder/connector/NotNullConnector.kt @@ -4,7 +4,9 @@ import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.core.Observable.wrap import io.reactivex.rxjava3.core.ObservableSource -internal class NotNullConnector(private val mapper: (Out) -> In?): Connector { +internal class NotNullConnector( + private val mapper: (Out) -> In? +) : Connector { override fun invoke(element: ObservableSource): ObservableSource = wrap(element) .flatMap { diff --git a/binder/src/main/java/com/badoo/binder/lifecycle/Lifecycle.kt b/binder/src/main/java/com/badoo/binder/lifecycle/Lifecycle.kt index ff50a74b..934bc83f 100644 --- a/binder/src/main/java/com/badoo/binder/lifecycle/Lifecycle.kt +++ b/binder/src/main/java/com/badoo/binder/lifecycle/Lifecycle.kt @@ -15,7 +15,7 @@ interface Lifecycle : ObservableSource { fun manual(): ManualLifecycle = ManualLifecycle() - fun wrap(source: ObservableSource) : Lifecycle = + fun wrap(source: ObservableSource): Lifecycle = FromObservableSource(source) } diff --git a/binder/src/main/java/com/badoo/binder/lifecycle/ManualLifecycle.kt b/binder/src/main/java/com/badoo/binder/lifecycle/ManualLifecycle.kt index 2fb99f1f..1d43f48f 100644 --- a/binder/src/main/java/com/badoo/binder/lifecycle/ManualLifecycle.kt +++ b/binder/src/main/java/com/badoo/binder/lifecycle/ManualLifecycle.kt @@ -5,7 +5,9 @@ import com.badoo.binder.lifecycle.Lifecycle.Event.BEGIN import com.badoo.binder.lifecycle.Lifecycle.Event.END import io.reactivex.rxjava3.subjects.BehaviorSubject -class ManualLifecycle(private val subject : BehaviorSubject = BehaviorSubject.create()) : Lifecycle by Lifecycle.wrap(subject) { +class ManualLifecycle( + private val subject: BehaviorSubject = BehaviorSubject.create() +) : Lifecycle by Lifecycle.wrap(subject) { fun begin() = subject.onNext(BEGIN) fun end() = subject.onNext(END) diff --git a/binder/src/main/java/com/badoo/binder/middleware/Consumer.kt b/binder/src/main/java/com/badoo/binder/middleware/Consumer.kt index 05116788..74edbc78 100644 --- a/binder/src/main/java/com/badoo/binder/middleware/Consumer.kt +++ b/binder/src/main/java/com/badoo/binder/middleware/Consumer.kt @@ -52,7 +52,7 @@ fun Consumer.wrapWithMiddleware( "com.badoo.binder.middleware.wrapWithMiddleware" ) ) -fun Consumer.wrap( +fun Consumer.wrap( standalone: Boolean = true, name: String? = null, postfix: String? = null, diff --git a/binder/src/main/java/com/badoo/binder/middleware/base/Middleware.kt b/binder/src/main/java/com/badoo/binder/middleware/base/Middleware.kt index c0747b54..6e9473bc 100644 --- a/binder/src/main/java/com/badoo/binder/middleware/base/Middleware.kt +++ b/binder/src/main/java/com/badoo/binder/middleware/base/Middleware.kt @@ -5,7 +5,7 @@ import io.reactivex.rxjava3.functions.Consumer abstract class Middleware( protected val wrapped: Consumer -): Consumer { +) : Consumer { open fun onBind(connection: Connection) { wrapped.applyIfMiddleware { onBind(connection) } diff --git a/binder/src/main/java/com/badoo/binder/middleware/base/StandaloneMiddleware.kt b/binder/src/main/java/com/badoo/binder/middleware/base/StandaloneMiddleware.kt index 4b5c589c..39208918 100644 --- a/binder/src/main/java/com/badoo/binder/middleware/base/StandaloneMiddleware.kt +++ b/binder/src/main/java/com/badoo/binder/middleware/base/StandaloneMiddleware.kt @@ -7,7 +7,7 @@ internal class StandaloneMiddleware( private val wrappedMiddleware: Middleware, name: String? = null, postfix: String? = null -): Middleware(wrappedMiddleware), Disposable { +) : Middleware(wrappedMiddleware), Disposable { private var bound = false private var disposed = false diff --git a/binder/src/main/java/com/badoo/binder/middleware/config/MiddlewareConfiguration.kt b/binder/src/main/java/com/badoo/binder/middleware/config/MiddlewareConfiguration.kt index 7e533a19..883ba0e3 100644 --- a/binder/src/main/java/com/badoo/binder/middleware/config/MiddlewareConfiguration.kt +++ b/binder/src/main/java/com/badoo/binder/middleware/config/MiddlewareConfiguration.kt @@ -15,7 +15,11 @@ data class MiddlewareConfiguration( standalone: Boolean ): Consumer { var current = consumerToWrap - val middlewares = if (condition.shouldWrap(targetToCheck, name, standalone)) factories else listOf() + val middlewares = if (condition.shouldWrap(targetToCheck, name, standalone)) { + factories + } else { + listOf() + } middlewares.forEach { current = it.invoke(current) as Middleware } diff --git a/binder/src/main/java/com/badoo/binder/middleware/config/WrappingCondition.kt b/binder/src/main/java/com/badoo/binder/middleware/config/WrappingCondition.kt index 5878fb82..05abbab6 100644 --- a/binder/src/main/java/com/badoo/binder/middleware/config/WrappingCondition.kt +++ b/binder/src/main/java/com/badoo/binder/middleware/config/WrappingCondition.kt @@ -2,7 +2,7 @@ package com.badoo.binder.middleware.config interface WrappingCondition { - fun shouldWrap(target: Any, name: String?, standalone: Boolean) : Boolean + fun shouldWrap(target: Any, name: String?, standalone: Boolean): Boolean object Always : WrappingCondition { override fun shouldWrap(target: Any, name: String?, standalone: Boolean) = @@ -21,12 +21,12 @@ interface WrappingCondition { condition() } - object IsStandalone: WrappingCondition { + object IsStandalone : WrappingCondition { override fun shouldWrap(target: Any, name: String?, standalone: Boolean): Boolean = standalone } - object IsNamed: WrappingCondition { + object IsNamed : WrappingCondition { override fun shouldWrap(target: Any, name: String?, standalone: Boolean): Boolean = name != null } diff --git a/binder/src/test/java/com/badoo/binder/BinderTest.kt b/binder/src/test/java/com/badoo/binder/BinderTest.kt index c65e71fb..30155a89 100644 --- a/binder/src/test/java/com/badoo/binder/BinderTest.kt +++ b/binder/src/test/java/com/badoo/binder/BinderTest.kt @@ -40,11 +40,11 @@ class BinderTest { binder.bind(source to anyConsumer using IntToString) } - object IntToString: (Int) -> String { + object IntToString : (Int) -> String { override fun invoke(it: Int): String = it.toString() } - object TestConnector: Connector { + object TestConnector : Connector { override fun invoke(it: ObservableSource): ObservableSource = Observable.wrap(it).flatMap { Observable.just(it.toString(), (it + 1).toString()) diff --git a/mvicore-android/src/androidTest/java/com/badoo/mvicore/android/AndroidTimeCapsuleTest.kt b/mvicore-android/src/androidTest/java/com/badoo/mvicore/android/AndroidTimeCapsuleTest.kt index 0d8d4933..4aafabbd 100644 --- a/mvicore-android/src/androidTest/java/com/badoo/mvicore/android/AndroidTimeCapsuleTest.kt +++ b/mvicore-android/src/androidTest/java/com/badoo/mvicore/android/AndroidTimeCapsuleTest.kt @@ -37,10 +37,14 @@ class AndroidTimeCapsuleTest { companion object { @JvmField - val CREATOR: Parcelable.Creator = object : Parcelable.Creator { - override fun createFromParcel(source: Parcel): SimpleTestParcelable = SimpleTestParcelable(source) - override fun newArray(size: Int): Array = arrayOfNulls(size) - } + val CREATOR: Parcelable.Creator = + object : Parcelable.Creator { + override fun createFromParcel(source: Parcel): SimpleTestParcelable = + SimpleTestParcelable(source) + + override fun newArray(size: Int): Array = + arrayOfNulls(size) + } } } } diff --git a/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidMainThreadFeatureScheduler.kt b/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidMainThreadFeatureScheduler.kt index 84ee185c..d74ad8ba 100644 --- a/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidMainThreadFeatureScheduler.kt +++ b/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidMainThreadFeatureScheduler.kt @@ -2,8 +2,8 @@ package com.badoo.mvicore.android import android.os.Looper import com.badoo.mvicore.feature.FeatureScheduler -import io.reactivex.rxjava3.core.Scheduler import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.core.Scheduler /** * A feature scheduler that ensures that MVICore feature only manipulates state on the Android @@ -12,7 +12,7 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers * It also uses the 'isOnFeatureThread' field to avoid observing on the main thread if it is already * the current thread. */ -object AndroidMainThreadFeatureScheduler: FeatureScheduler { +object AndroidMainThreadFeatureScheduler : FeatureScheduler { override val scheduler: Scheduler get() = AndroidSchedulers.mainThread() diff --git a/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidTimeCapsule.kt b/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidTimeCapsule.kt index 4450aa24..ad9b56e8 100644 --- a/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidTimeCapsule.kt +++ b/mvicore-android/src/main/java/com/badoo/mvicore/android/AndroidTimeCapsule.kt @@ -9,11 +9,13 @@ class AndroidTimeCapsule(private val savedState: Bundle?) : TimeCapsule Parcelable>() - override fun get(key: Any): State? = savedState?.getParcelable(key.toString()) + override fun get(key: Any): State? = + savedState?.getParcelable(key.toString()) override fun register(key: Any, stateSupplier: () -> State) { stateSuppliers[key.toString()] = stateSupplier } - fun saveState(outState: Bundle) = stateSuppliers.kotlinForEach { entry -> outState.putParcelable(entry.key, entry.value()) } + fun saveState(outState: Bundle) = + stateSuppliers.kotlinForEach { entry -> outState.putParcelable(entry.key, entry.value()) } } diff --git a/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/BaseAndroidBinderLifecycle.kt b/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/BaseAndroidBinderLifecycle.kt index ac2d4af2..506de27a 100644 --- a/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/BaseAndroidBinderLifecycle.kt +++ b/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/BaseAndroidBinderLifecycle.kt @@ -11,14 +11,14 @@ abstract class BaseAndroidBinderLifecycle private constructor( androidLifecycle: AndroidLifecycle, observerFactory: ((BinderLifecycle.Event) -> Unit) -> DefaultLifecycleObserver, subject: BehaviorSubject -): BinderLifecycle, +) : BinderLifecycle, ObservableSource by subject, LifecycleObserver { constructor( androidLifecycle: AndroidLifecycle, observerFactory: ((BinderLifecycle.Event) -> Unit) -> DefaultLifecycleObserver - ): this(androidLifecycle, observerFactory, BehaviorSubject.create()) + ) : this(androidLifecycle, observerFactory, BehaviorSubject.create()) init { androidLifecycle.addObserver(observerFactory(subject::onNext)) diff --git a/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/CreateDestroyBinderLifecycle.kt b/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/CreateDestroyBinderLifecycle.kt index dacdc24c..cb22930d 100644 --- a/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/CreateDestroyBinderLifecycle.kt +++ b/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/CreateDestroyBinderLifecycle.kt @@ -5,7 +5,6 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.Lifecycle as AndroidLifecycle import com.badoo.binder.lifecycle.Lifecycle as BinderLifecycle - class CreateDestroyBinderLifecycle( androidLifecycle: AndroidLifecycle ) : BaseAndroidBinderLifecycle( diff --git a/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/ResumePauseBinderLifecycle.kt b/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/ResumePauseBinderLifecycle.kt index 09f59201..1f47a1fc 100644 --- a/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/ResumePauseBinderLifecycle.kt +++ b/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/ResumePauseBinderLifecycle.kt @@ -5,10 +5,9 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.Lifecycle as AndroidLifecycle import com.badoo.binder.lifecycle.Lifecycle as BinderLifecycle - class ResumePauseBinderLifecycle( androidLifecycle: AndroidLifecycle -): BaseAndroidBinderLifecycle( +) : BaseAndroidBinderLifecycle( androidLifecycle, { sendEvent -> object : DefaultLifecycleObserver { diff --git a/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/StartStopBinderLifecycle.kt b/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/StartStopBinderLifecycle.kt index b6b812e1..56cf3cdd 100644 --- a/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/StartStopBinderLifecycle.kt +++ b/mvicore-android/src/main/java/com/badoo/mvicore/android/lifecycle/StartStopBinderLifecycle.kt @@ -5,10 +5,9 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.Lifecycle as AndroidLifecycle import com.badoo.binder.lifecycle.Lifecycle as BinderLifecycle - class StartStopBinderLifecycle( androidLifecycle: AndroidLifecycle -): BaseAndroidBinderLifecycle( +) : BaseAndroidBinderLifecycle( androidLifecycle, { sendEvent -> object : DefaultLifecycleObserver { diff --git a/mvicore-android/src/test/java/com/badoo/mvicore/android/lifecycle/LifecycleExtensionsTest.kt b/mvicore-android/src/test/java/com/badoo/mvicore/android/lifecycle/LifecycleExtensionsTest.kt index 9af3c753..2f16aee3 100644 --- a/mvicore-android/src/test/java/com/badoo/mvicore/android/lifecycle/LifecycleExtensionsTest.kt +++ b/mvicore-android/src/test/java/com/badoo/mvicore/android/lifecycle/LifecycleExtensionsTest.kt @@ -9,7 +9,6 @@ import io.reactivex.rxjava3.functions.Consumer import io.reactivex.rxjava3.internal.schedulers.RxThreadFactory import io.reactivex.rxjava3.plugins.RxJavaPlugins import io.reactivex.rxjava3.subjects.PublishSubject -import java.util.concurrent.CountDownLatch import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.BeforeEach @@ -17,6 +16,7 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.Arguments import org.junit.jupiter.params.provider.MethodSource +import java.util.concurrent.CountDownLatch typealias LifecycleEvent = Lifecycle.(Binder.() -> Unit) -> Unit diff --git a/mvicore-debugdrawer/src/main/java/com/badoo/mvicore/debugdrawer/MviCoreControlsModule.kt b/mvicore-debugdrawer/src/main/java/com/badoo/mvicore/debugdrawer/MviCoreControlsModule.kt index 47a2bc2a..80ad11c4 100644 --- a/mvicore-debugdrawer/src/main/java/com/badoo/mvicore/debugdrawer/MviCoreControlsModule.kt +++ b/mvicore-debugdrawer/src/main/java/com/badoo/mvicore/debugdrawer/MviCoreControlsModule.kt @@ -70,14 +70,21 @@ class MviCoreControlsModule( stopRecording.disable() playback.enable() } + RECORDING -> { startRecording.disable() stopRecording.enable() playback.disable() } + FINISHED_PLAYBACK -> { - Toast.makeText(startRecording.context, R.string.finished_playback, Toast.LENGTH_SHORT).show() + Toast.makeText( + startRecording.context, + R.string.finished_playback, + Toast.LENGTH_SHORT + ).show() } + PLAYBACK -> { startRecording.disable() stopRecording.disable() @@ -90,8 +97,8 @@ class MviCoreControlsModule( private fun ImageButton.enable() { isEnabled = true isClickable = true - background?.colorFilter = null - drawable?.colorFilter = null + background?.colorFilter = null + drawable?.colorFilter = null } private fun ImageButton.disable() { diff --git a/mvicore-debugdrawer/src/main/res/layout/list_item_simple_small.xml b/mvicore-debugdrawer/src/main/res/layout/list_item_simple_small.xml index a34ec9e0..0255f7b9 100644 --- a/mvicore-debugdrawer/src/main/res/layout/list_item_simple_small.xml +++ b/mvicore-debugdrawer/src/main/res/layout/list_item_simple_small.xml @@ -4,12 +4,12 @@ android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceListItemSmall" - android:textSize="10sp" android:gravity="center_vertical" + android:minHeight="?android:attr/listPreferredItemHeightSmall" android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:paddingRight="?android:attr/listPreferredItemPaddingRight" - android:minHeight="?android:attr/listPreferredItemHeightSmall" + android:textAppearance="?android:attr/textAppearanceListItemSmall" + android:textSize="10sp" tools:ignore="SmallSp" /> diff --git a/mvicore-debugdrawer/src/main/res/layout/playback_controls.xml b/mvicore-debugdrawer/src/main/res/layout/playback_controls.xml index 23b997c6..3aa4292d 100644 --- a/mvicore-debugdrawer/src/main/res/layout/playback_controls.xml +++ b/mvicore-debugdrawer/src/main/res/layout/playback_controls.xml @@ -6,25 +6,25 @@ + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/startRecording"> diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/App.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/App.kt index 946f2ebf..d260c1ab 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/App.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/App.kt @@ -17,7 +17,8 @@ import javax.inject.Inject @HiltAndroidApp class App : Application() { - @Inject lateinit var recordStore: RecordStore + @Inject + lateinit var recordStore: RecordStore private val defaultStore = DefaultPluginStore(BuildConfig.APPLICATION_ID) diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/usersessionscope/UserManagerEntryPoint.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/usersessionscope/UserManagerEntryPoint.kt index 75bc0ff8..ea74b3fe 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/usersessionscope/UserManagerEntryPoint.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/di/usersessionscope/UserManagerEntryPoint.kt @@ -7,5 +7,5 @@ import dagger.hilt.components.SingletonComponent @InstallIn(SingletonComponent::class) @EntryPoint interface UserManagerEntryPoint { - fun userManager(): UserManager + fun userManager(): UserManager } diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/common/Extensions.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/common/Extensions.kt index 0eaa003f..5d53a0f5 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/common/Extensions.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/common/Extensions.kt @@ -1,3 +1,5 @@ +package com.badoo.mvicoredemo.ui.common + import android.content.Context import android.content.Intent import androidx.appcompat.app.AppCompatActivity diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/lifecycle/LifecycleDemoActivity.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/lifecycle/LifecycleDemoActivity.kt index ae477da8..ff44852c 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/lifecycle/LifecycleDemoActivity.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/lifecycle/LifecycleDemoActivity.kt @@ -10,7 +10,7 @@ import com.badoo.mvicore.android.lifecycle.CreateDestroyBinderLifecycle import com.badoo.mvicore.android.lifecycle.ResumePauseBinderLifecycle import com.badoo.mvicore.android.lifecycle.StartStopBinderLifecycle import com.badoo.mvicoredemo.databinding.ActivityLifecycleDemoBinding -import init +import com.badoo.mvicoredemo.ui.common.init import io.reactivex.rxjava3.functions.Consumer import io.reactivex.rxjava3.subjects.PublishSubject import timber.log.Timber @@ -53,6 +53,7 @@ class LifecycleDemoActivity : AppCompatActivity() { binding.drawerLayout.openDrawer(GravityCompat.START) true } + else -> super.onOptionsItemSelected(item) } diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/HelpDialogFragment.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/HelpDialogFragment.kt index 151f6858..4fe3eee7 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/HelpDialogFragment.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/HelpDialogFragment.kt @@ -12,7 +12,8 @@ class HelpDialogFragment : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = AlertDialog.Builder(requireActivity()) .setMessage( - Html.fromHtml(resources.getString(R.string.help_dialog_main))) + Html.fromHtml(resources.getString(R.string.help_dialog_main)) + ) .setPositiveButton(R.string.action_ok) { dialog, _ -> dialog.dismiss() } .create() } diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/MainActivity.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/MainActivity.kt index 781a89de..53c82a54 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/MainActivity.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/MainActivity.kt @@ -8,6 +8,7 @@ import com.badoo.mvicoredemo.auth.logout import com.badoo.mvicoredemo.databinding.ActivityMainBinding import com.badoo.mvicoredemo.glide.GlideApp import com.badoo.mvicoredemo.ui.common.ObservableSourceActivity +import com.badoo.mvicoredemo.ui.common.init import com.badoo.mvicoredemo.ui.main.analytics.FakeAnalyticsTracker import com.badoo.mvicoredemo.ui.main.event.UiEvent import com.badoo.mvicoredemo.ui.main.event.UiEvent.ButtonClicked @@ -15,7 +16,6 @@ import com.badoo.mvicoredemo.ui.main.event.UiEvent.ImageClicked import com.badoo.mvicoredemo.ui.main.event.UiEvent.PlusClicked import com.badoo.mvicoredemo.ui.main.viewmodel.ViewModel import dagger.hilt.android.AndroidEntryPoint -import init import io.reactivex.rxjava3.functions.Consumer import javax.inject.Inject diff --git a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/event/UiEventTransformer2.kt b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/event/UiEventTransformer2.kt index f9d241d4..41668c0a 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/event/UiEventTransformer2.kt +++ b/mvicore-demo/mvicore-demo-app/src/main/java/com/badoo/mvicoredemo/ui/main/event/UiEventTransformer2.kt @@ -1,7 +1,7 @@ package com.badoo.mvicoredemo.ui.main.event import com.badoo.feature2.Feature2 -import com.badoo.feature2.Feature2.Wish.* +import com.badoo.feature2.Feature2.Wish.LoadNewImage import com.badoo.mvicoredemo.ui.main.event.UiEvent.ButtonClicked import com.badoo.mvicoredemo.ui.main.event.UiEvent.ImageClicked import com.badoo.mvicoredemo.ui.main.event.UiEvent.PlusClicked diff --git a/mvicore-demo/mvicore-demo-app/src/main/res/layout/activity_lifecycle_demo.xml b/mvicore-demo/mvicore-demo-app/src/main/res/layout/activity_lifecycle_demo.xml index c16d8831..bd6ffdbc 100644 --- a/mvicore-demo/mvicore-demo-app/src/main/res/layout/activity_lifecycle_demo.xml +++ b/mvicore-demo/mvicore-demo-app/src/main/res/layout/activity_lifecycle_demo.xml @@ -14,10 +14,10 @@ android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" - app:layout_constraintTop_toTopOf="parent" + android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" - android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> + app:layout_constraintTop_toTopOf="parent" /> + android:layout_height="match_parent">