Orbit Mvi Versions Save

An MVI framework for Kotlin and Android

orbit2/2.1.0

3 years ago

Fixed

  • Blocking mode tests occasionally waiting for 5 seconds before assertions. This was due to us using the same method of awaiting as for non-blocking tests. However this is not necessary for blocking mode tests and so was removed.
  • Made initial state assertions more explicit by requiring to provide the initial state to the assert function.
  • Fixed potential race condition in TestFlowObserver

orbit2/2.0.0

3 years ago

Lots of improvements in this release!

  • Introducing a new, simplified syntax for Orbit
  • Replaced single thread dispatcher with Dispatchers.Default
  • Documentation improvements
  • Package restructuring
  • Test improvements

? BREAKING CHANGES ?

  • Moved some classes to other packages, reimporting needed
  • Removed deprecated APIs (in particular, Stream and its associated extension functions)
    • In order to observe the state and side effects use Container.stateFlow and Container.sideEffectFlow. Do not convert the flows to LiveData due to numerous observed issues.

orbit2/1.1.0

3 years ago

#121 made us run extra checks on our connection methods and Stream turned out to not behave as expected threading-wise. We've discussed next steps and decided to deprecate the Stream interface and expose Flows instead. This decision did not come lightly because we wanted the core module to be agnostic of the internal implementation (i.e. not expose coroutines).

Our reasoning behind why we did this in the end:

  • The refactoring has greatly simplified the internals.
  • Previously there was a lot of tricky and hard to maintain code just to wrap internals into Stream interfaces.
  • Coroutine flows are these days effectively part of the core Kotlin language. We don't gain much by hiding them.
  • We want you to have control over the thread you observe on. This can be done easily with Flow
  • You can turn a Flow into pretty much any preferred connection method

The change had a cascading effect through all of our connection methods which required a Streams the base connection method. A good amount of changes were required, but we have kept backwards compatibility for the next release.

Full list of changes:

  • Added stateFlow and sideEffectFlow to Container. Flows are now the recommended way to connect to Orbit.
  • sideEffectFlow supports only one collector to ensure predictable side effect caching behaviour. Multi-casting is still possible but this is down through the user's conscious decision of modifying the underlying stream using broadcast (which disables caching).
  • Deprecated stateStream and sideEffectStream on Container
  • Deprecated extensions to turn Stream into other types like RxJava Observable
  • Deprecated Container.state and Container.sideEffect LiveData extensions.
  • Made stateStream and sideEffectStream more predictable by observing on the Main thread where possible

orbit2/1.0.0

3 years ago

Orbit 2 is a simple scaffolding you can build a Redux/MVI-like architecture around. In Orbit 2 we took the best features of Orbit 1 and have rewritten the rest from scratch.

What's new ?

Powerful and flexible design ?️‍♀️ ?‍♂️

  • Integrates best practices from our 2+ years of experience with MVI
  • Easy to use, type-safe API
  • Powered by coroutines
  • Extensibility - operator extensions and more provided via plugins
  • Modularity - use the features you want without unnecessary dependencies
  • Adapts to your codebase, rather than the other way round!

Works with any async/stream framework ?

  • Coroutine operator support
  • RxJava 1, 2 & 3 operator support
  • LiveData operator support
  • Ability to mix different kinds of operators, like RxJava and coroutines, within the same orbit flow

Orbit ❤️ Android

  • Subscribe to state and side effects through LiveData
  • ViewModel support, along with SavedState!

Testing ?

  • Unit test framework designed in step with the framework
  • Assertions built-in for ease of use
  • Built-in espresso idling resource support

And more!...

orbit2/0.3.0

3 years ago

Finishing touches:

  • Added documentation
  • Added sample apps
  • Implemented scoping via CoroutineScopes
  • Added Rxjava 1 and 3 plugins
  • Allowing nullable events where possible (excluding RxJava 2 and 3)
  • Container create lambdas now take the initial/restored state as a parameter
  • Removed the need to register DSL plugins manually
  • Allow running the onCreate lambda in tests
  • Various improvements
  • Dependency updates

orbit/3.5.2

3 years ago

Middlewares now retain the entire stack of transformers to make it easier to stub flows out for interaction testing

orbit2/0.2.0

3 years ago

Fininshing touches:

  • Renamed public APIs to better match their jobs
  • Added javadoc for all public APIs

orbit2/0.1.4

3 years ago
  • changed orbit dispatcher to coroutine dispatcher
  • tweaked the naming of the plugins
  • fixed all warnings
  • a few small bugfixes
  • added DSL markers
  • moved basic transform to operate on background dispatcher

orbit2/0.1.3.1

3 years ago

orbit2/0.1.3

3 years ago