bansa

A state container for Java & Kotlin, inspired by Redux & Elm

MIT License

Stars
444
Committers
4

Bot releases are hidden (Show)

bansa - 1.0.0 Beta! Now including Dev Tools! Latest Release

Published by brianegan over 8 years ago

The early versions of this project were fun experiments in Kotlin. As I played around with it more and talked to others, I hoped I might make this project useful to others, rather an as a simple experiment.

Therefore, I set down the following criteria for what I wanted from the library:

  • Idiomatic Java and Kotlin usage
  • Low method count
  • Support for all basic Redux concepts in the smallest possible package. This includes the Store, Middleware, Reducers, and Subscribers/Subscriptions.
  • Dev Tools that allow for Time Travel debugging
  • Well tested

As this library now meets those goals, I think it's time to give it a beta label. Please try it out in your projects, and if we find it's all stable, we'll publish to 1.0.0 soon!

devtools

bansa - Now written in Java!

Published by brianegan over 8 years ago

This is a big change! Bansa is now written in Java, and no longer has a dependency on Rx. This drops the method count dramatically, and makes Bansa far easier to use in a normal Java Android app.

There is also a companion version available, called bansaKotlin, that provides more idiomatic interfaces for the Kotlin programming language.

I've also tried to keep the migration path simple. If you've been using Bansa, it shouldn't be a big rewrite of the way you were doing things before. The most important changes:

  • Reducers are no longer lambdas, but proper classes. I.e. move from { state: MyState, action: Any ->... to Reducer<MyState, Any> { state, action ->...
  • Bansa now provides it's own small Subscriber and Subscription interfaces, replacing RxJava versions.
  • The constructor for creating a store using Middleware has been simplified. createStore(intialState, reducer) is now BaseStore(initialState, reducer, Middleware...)
bansa - Community Contributions!

Published by brianegan over 8 years ago

Drafting a new release with all of the good work put in by @clemp6r! This release has several important updates:

  • This library now has a more idiomatic Kotlin feel. Store has been moved to a proper interface. Yay!
  • Move from getState() (returning the current state) and state (the observable) to a more fluid api. From now on, simply use state for the currentState, and stateChanges for the underlying state observable. As always, you can simply subscribe!
  • Remove Marker interfaces State and Action. They aren't necessary!
  • The scheduler, which used to put state updates on a potentially separate thread, has been removed for now. Keeping the reducers completely synchronous has advantages in the middleware layer, and discourages bad practices in the reducer layer.
bansa - Better SemVer

Published by brianegan over 8 years ago

bansa - Kotlin 1.0.0

Published by brianegan over 8 years ago

bansa - (Hopefully) Jitpack support

Published by brianegan over 8 years ago

bansa - First release of Bansa! Totes beta, wouldn't use in prod.

Published by brianegan over 8 years ago