diff --git a/binder-order-failure-demo/.gitignore b/binder-order-failure-demo/.gitignore deleted file mode 100644 index 42afabfd..00000000 --- a/binder-order-failure-demo/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/binder-order-failure-demo/build.gradle b/binder-order-failure-demo/build.gradle deleted file mode 100644 index 34bdb312..00000000 --- a/binder-order-failure-demo/build.gradle +++ /dev/null @@ -1,51 +0,0 @@ -plugins { - id 'com.android.application' - id 'org.jetbrains.kotlin.android' -} - -android { - compileSdkVersion 31 - - defaultConfig { - applicationId "com.bumble.binder_order_failure_demo" - minSdkVersion 15 - targetSdkVersion 31 - versionCode 1 - versionName "1.0" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = '1.8' - } -} - -dependencies { - - implementation deps('androidx.appcompat:appcompat') - implementation deps('com.google.android.material:material') - - implementation deps("org.jetbrains.kotlin:kotlin-stdlib-jdk7") - - implementation project(":mvicore") - implementation project(":mvicore-android") - - implementation deps('io.reactivex.rxjava2:rxjava') - implementation deps('io.reactivex.rxjava2:rxandroid') - - testImplementation deps('junit:junit') - androidTestImplementation deps("androidx.test:runner") - androidTestImplementation deps("androidx.test:rules") - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' -} \ No newline at end of file diff --git a/binder-order-failure-demo/proguard-rules.pro b/binder-order-failure-demo/proguard-rules.pro deleted file mode 100644 index 481bb434..00000000 --- a/binder-order-failure-demo/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/binder-order-failure-demo/src/androidTest/java/com/bumble/PreBindEventActivityTest.kt b/binder-order-failure-demo/src/androidTest/java/com/bumble/PreBindEventActivityTest.kt deleted file mode 100644 index a74bd4dc..00000000 --- a/binder-order-failure-demo/src/androidTest/java/com/bumble/PreBindEventActivityTest.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.bumble - -import androidx.test.espresso.Espresso -import androidx.test.espresso.assertion.ViewAssertions -import androidx.test.espresso.matcher.ViewMatchers -import androidx.test.rule.ActivityTestRule -import androidx.test.runner.AndroidJUnit4 -import com.bumble.binder.orderfailure.R -import com.bumble.binder.orderfailure.prebindevent.PreBindEventActivity -import org.hamcrest.CoreMatchers.not -import org.junit.Rule -import org.junit.Test -import org.junit.runner.RunWith - -@RunWith(AndroidJUnit4::class) -class PreBindEventActivityTest { - - @get:Rule - val activityRule = ActivityTestRule(PreBindEventActivity::class.java) - - @Test - fun `GIVEN_the_screen_launched_THEN_the_title_should_not_be_visible`() { - Espresso.onView(ViewMatchers.withId(R.id.title)) - .check(ViewAssertions.matches(not(ViewMatchers.isDisplayed()))) - } - -} \ No newline at end of file diff --git a/binder-order-failure-demo/src/main/AndroidManifest.xml b/binder-order-failure-demo/src/main/AndroidManifest.xml deleted file mode 100644 index f748d655..00000000 --- a/binder-order-failure-demo/src/main/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/RxExtensions.kt b/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/RxExtensions.kt deleted file mode 100644 index cb7c44d2..00000000 --- a/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/RxExtensions.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.bumble.binder.orderfailure - -import io.reactivex.Observable -import io.reactivex.ObservableSource -import io.reactivex.functions.BiFunction - -fun combineLatest( - o1: ObservableSource, - o2: ObservableSource -): ObservableSource> = - Observable.combineLatest( - o1, - o2, - BiFunction> { t1, t2 -> - t1 to t2 - } - ) diff --git a/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/Feature1.kt b/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/Feature1.kt deleted file mode 100644 index 85377fae..00000000 --- a/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/Feature1.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.bumble.binder.orderfailure.prebindevent - -import com.badoo.mvicore.element.Bootstrapper -import com.badoo.mvicore.element.Reducer -import com.badoo.mvicore.feature.ReducerFeature -import com.bumble.binder.orderfailure.prebindevent.Feature1.State -import com.bumble.binder.orderfailure.prebindevent.Feature1.Wish -import io.reactivex.Observable - -class Feature1 : ReducerFeature( - initialState = State(), - bootstrapper = BootstrapperImpl(), - reducer = ReducerImpl() -) { - - data class State(val text: String? = "") - - sealed class Wish { - object Wish1 : Wish() - object Wish2 : Wish() - } - - class BootstrapperImpl : Bootstrapper { - - override fun invoke(): Observable { - return Observable - .just(Wish.Wish1) - } - } - - class ReducerImpl : Reducer { - - override fun invoke(state: State, effect: Wish): State = - when (effect) { - Wish.Wish1 -> state.copy(text = "Wish1") - Wish.Wish2 -> state.copy(text = null) - } - } -} \ No newline at end of file diff --git a/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/Feature2.kt b/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/Feature2.kt deleted file mode 100644 index 75912a46..00000000 --- a/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/Feature2.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.bumble.binder.orderfailure.prebindevent - -import com.badoo.mvicore.element.Reducer -import com.badoo.mvicore.feature.ReducerFeature -import com.bumble.binder.orderfailure.prebindevent.Feature2.State -import com.bumble.binder.orderfailure.prebindevent.Feature2.Wish - -class Feature2 : ReducerFeature( - initialState = State(), - reducer = ReducerImpl() -) { - - data class State(val actionEnabled: Boolean = true) - - sealed class Wish { - object Wish1 : Wish() - } - - class ReducerImpl : Reducer { - - override fun invoke(state: State, effect: Wish): State { - return when (effect) { - Wish.Wish1 -> state.copy(actionEnabled = false) - } - } - } -} diff --git a/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/PreBindEventActivity.kt b/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/PreBindEventActivity.kt deleted file mode 100644 index 61080a22..00000000 --- a/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/PreBindEventActivity.kt +++ /dev/null @@ -1,59 +0,0 @@ -package com.bumble.binder.orderfailure.prebindevent - -import android.os.Bundle -import android.view.View -import android.widget.Button -import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity -import com.bumble.binder.orderfailure.R -import io.reactivex.ObservableSource -import io.reactivex.Observer -import io.reactivex.functions.Consumer -import io.reactivex.subjects.PublishSubject - -class PreBindEventActivity : AppCompatActivity(), Consumer, ObservableSource { - - private val source = PublishSubject.create() - private lateinit var title: TextView - private lateinit var button: Button - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - title = findViewById(R.id.title) - button = findViewById(R.id.button) - MainActivityBindings(this, Feature1()).setup(this) - } - - override fun subscribe(observer: Observer) { - source.subscribe(observer) - } - - override fun accept(viewModel: ViewModel) { - if (viewModel.title != null) { - title.visibility = View.VISIBLE - title.text = viewModel.title - source.onNext(UiEvent.InitialEvent) - } else { - title.visibility = View.INVISIBLE - } - - if (viewModel.showButton) { - button.visibility = View.VISIBLE - button.setOnClickListener { source.onNext(UiEvent.SecondEvent) } - } else { - button.visibility = View.INVISIBLE - button.setOnClickListener(null) - } - } -} - -sealed class UiEvent { - object InitialEvent : UiEvent() - object SecondEvent : UiEvent() -} - -data class ViewModel( - val title: String?, - val showButton: Boolean = false -) \ No newline at end of file diff --git a/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/PreBindEventBinder.kt b/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/PreBindEventBinder.kt deleted file mode 100644 index 9976e673..00000000 --- a/binder-order-failure-demo/src/main/java/com/bumble/binder/orderfailure/prebindevent/PreBindEventBinder.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.bumble.binder.orderfailure.prebindevent - -import com.badoo.binder.using -import com.badoo.mvicore.android.AndroidBindings - -class MainActivityBindings( - view: PreBindEventActivity, - private val feature1: Feature1 -) : AndroidBindings(view) { - - override fun setup(view: PreBindEventActivity) { - binder.bind(feature1 to view using object : (Feature1.State) -> ViewModel() { - override fun invoke(p1: Feature1.State): ViewModel { - return ViewModel(p1.text, true) - } - }) - binder.bind(view to feature1 using UiEventTransformer1) - } -} - -object UiEventTransformer1 : (UiEvent) -> Feature1.Wish? { - - override fun invoke(uiEvent: UiEvent): Feature1.Wish? = - when (uiEvent) { - UiEvent.InitialEvent -> Feature1.Wish.Wish2 - UiEvent.SecondEvent -> null - } -} diff --git a/binder-order-failure-demo/src/main/res/drawable-v24/ic_launcher_foreground.xml b/binder-order-failure-demo/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 2b068d11..00000000 --- a/binder-order-failure-demo/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/binder-order-failure-demo/src/main/res/drawable/ic_launcher_background.xml b/binder-order-failure-demo/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9c..00000000 --- a/binder-order-failure-demo/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/binder-order-failure-demo/src/main/res/layout/activity_main.xml b/binder-order-failure-demo/src/main/res/layout/activity_main.xml deleted file mode 100644 index 072f7218..00000000 --- a/binder-order-failure-demo/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -