Skip to content

Releases: pedroql/mvflow

1.0.2

17 Apr 22:01
4022ebb
Compare
Choose a tag to compare

Summary of changes

This release is functionally the same as 1.0.1 except that it is hosted on Maven Central repository.

In order to use this release just add maven central if you haven't already and update MVFlow dependency to 1.0.2.

Currently there are no plans to move previous versions of the library to Maven Central.

Full list of commits

1.0.1

29 Dec 22:29
a1019fa
Compare
Choose a tag to compare

Summary of changes

This update only changes internals. There are no new features nor expected behaviour changes. The updates are:

  • Updated kotlin version
  • Using shared flow instead of a channel as the underlying mechanism to propagate external effects

Full list of commits

1.0.0

15 Aug 12:19
8c13894
Compare
Choose a tag to compare

Summary of changes

There are no formal changes to the API, this is the 0.0.3 release graduating to the first complete version of the library!

Download

Full list of commits

0.0.3

29 Jul 11:00
b1f641c
Compare
Choose a tag to compare
0.0.3 Pre-release
Pre-release

Summary of changes

This new version brings many changes (and improvements) to the API. We are confident this is getting closer to what a first stable release will be like!

Main changes:

  • Dropped all observer methods (observe(Actions|Mutations|State)() in favour of a single new concept of external Effect (a generic class). As a replacement, now you can call mvflow.observeExternalEffects() from a new interface MVFlowWithEffects.

This is an improvement because it makes it explicit what things might be exposed externally from one MVFlow object. Making this explicit will make it obvious if something external is relying on implementation details (and turn it to an explicit dependency).

  • Related with the change above, now you can write a HandlerWithEffects which is similar to the old Handler except it receives one additional lambda that you can call when you want to emit one effect.

  • Another big change is changing the way you call takeView. Now this method is a suspend function and additionally you need to pass a scope. Internally this scope is used to launch some internal coroutines (one for pushing updates to the view and another to get actions from the view).

  • MVFlow is now just an interface instead of being a class. But you can still call MVFlow(...) and you get one instance of it although the actual class returned is a private detail and can be different depending on the parameters you send.

Download

Full list of commits

  • 2085072 - Documentation updates (#7)
  • 2402e20 - Add android sample project (#8)
  • df6822d - Rework takeView API to differentiate between view scope and handler scope (#9)
  • d234c52 - Add external effects to the API (#10)
  • ef78495 - Move view interface into MVFlow (#11)
  • b1f641c - Fix CI scripts (#12)

0.0.2

16 Jul 10:23
5e4c075
Compare
Choose a tag to compare
0.0.2 Pre-release
Pre-release

Summary of changes

This version introduces the ability to observe the actions, mutations, and state events that are happening inside the MVFlow object.

For example, this enables the following functionality:

mvflow.observeActions().filterIsInstance<Action.ButtonClicked>().collect { // it: Action.ButtonClicked
    analyticsTracker.log("submit_button", "clicked")
}

Be careful with observing these events as this is breaking the MVI pattern and if you are not careful, you may lose a lot of the benefits this architecture brings.

Here's a full list of the methods that were added to the MVFlow class:


fun observeActions(): Flow<Action>

// For convenience you can also observe actions together with the state as of when the action was handled

fun observeActionsWithState(): Flow<Pair<Action, State>>

fun observeMutations(): Flow<Mutation>

fun observeState(): Flow<State>

Full list of commits:

  • cdff955 - Add maven publishing and upload to Bintray (#2)
  • a0a4044 - Add dokka to project
  • e775ed5 - Add dokka-generated documentation
  • 5e4fcd9 - Add API validation plugin
  • 2ea142a - Add kotlinter and fix current issues
  • e15cf2c - Add files to share project settings
  • f31d580 - Update to gradle wrapper with sources
  • d002642 - Add detekt
  • cca171c - Adding flags to make builds more performant
  • 9d2a402 - Add compiler flag to opt-in to experimental coroutines...
  • 0a4a348 - Don't require Bintray properties to be in the system
  • 9ff13c3 - Adding github actions (#4)
  • b5af6f3 - Workaround hardcoded/absolute paths being written by dokka plugin (#5)
  • 5e4c075 - Add listeners functionality (#6)

0.0.1

13 Jul 16:24
b5af6f3
Compare
Choose a tag to compare
0.0.1 Pre-release
Pre-release

First version of the library!