rxui-kotlin

Set of primitives for Reactive UI on Android

License

License

Apache License Version 2.0
Categories

Categories

Kotlin Languages
GroupId

GroupId

com.artemzin.rxui
ArtifactId

ArtifactId

rxui-kotlin
Last Version

Last Version

1.0.1
Release Date

Release Date

Type

Type

jar
Description

Description

rxui-kotlin
Set of primitives for Reactive UI on Android
Project URL

Project URL

https://github.com/artem-zinnatullin/RxUi
Source Code Management

Source Code Management

https://github.com/artem-zinnatullin/RxUi

Download rxui-kotlin

How to add to project

<!-- https://jarcasting.com/artifacts/com.artemzin.rxui/rxui-kotlin/ -->
<dependency>
    <groupId>com.artemzin.rxui</groupId>
    <artifactId>rxui-kotlin</artifactId>
    <version>1.0.1</version>
</dependency>
// https://jarcasting.com/artifacts/com.artemzin.rxui/rxui-kotlin/
implementation 'com.artemzin.rxui:rxui-kotlin:1.0.1'
// https://jarcasting.com/artifacts/com.artemzin.rxui/rxui-kotlin/
implementation ("com.artemzin.rxui:rxui-kotlin:1.0.1")
'com.artemzin.rxui:rxui-kotlin:jar:1.0.1'
<dependency org="com.artemzin.rxui" name="rxui-kotlin" rev="1.0.1">
  <artifact name="rxui-kotlin" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.artemzin.rxui', module='rxui-kotlin', version='1.0.1')
)
libraryDependencies += "com.artemzin.rxui" % "rxui-kotlin" % "1.0.1"
[com.artemzin.rxui/rxui-kotlin "1.0.1"]

Dependencies

compile (2)

Group / Artifact Type Version
com.artemzin.rxui : rxui jar 1.0.1
org.jetbrains.kotlin : kotlin-stdlib jar 1.0.2

Project Modules

There are no modules declared in this project.

RxUi: Observable <-> Observable

Minimal implementation of the concept of talking to Android View layer in a Reactive way described here.

RxUi solves 3 main problems of communication between Presenters/ViewModels/etc and View layer in Android applications:
  1. Main Thread should be part of View layer, Presenters/ViewModels/etc should not know about it.
  2. Action posted to Main Thread should be part of Disposable so you could dispose() it and prevent execution.
  3. Backpressure occurred on the View layer should be detected and handled on Presenter/ViewModel/etc layer above.

Sample Apps

Check Sample app written in Java and Sample app written in Kotlin.

RxUi is so tiny that you may not even see it in the code at the first sight!


Basically, RxUi is just two main functions:
  1. bind(Observable<T>): Disposable
  2. ui(Consumer<T>): Function<Observable<T>, Disposable>

And concept of Observable <-> Observable in the View layer when View only produces Observables and consumes Observables.

interface SignInView {
  // Produces.
  Observable<String> login();
  Observable<String> password();
  Observable<Object> signInClicks();
  
  // Consumes.
  Function<Observable<Boolean>,      Disposable> signInEnable();
  Function<Observable<SignInResult>, Disposable> signInResult();
}

Download

RxUi

Only two functions at the moment: RxUi.bind() (use it in Presenters/ViewModels) and RxUi.ui() use it in View layer.

compile 'com.artemzin.rxui2:rxui:2.0.0'

 

RxUi Test

Only one function at the moment: TestRxUi.testUi(), basically same as RxUi.ui() except that it's synchronous and does not know about Main Thread.

testCompile 'com.artemzin.rxui2:rxui-test:2.0.0'

 

RxUi Kotlin

Only one extension function at the moment: Observable.bind(), absolutely same as RxUi.bind() but easier to use in Kotlin.

compile 'com.artemzin.rxui2:rxui-kotlin:2.0.0'

 


Made with ❤️ by Artem Zinnatullin, discussed with Juno Android Team and @FE_Hudl.

Versions

Version
1.0.1
1.0.0