All Versions
18
Latest Version
Avg Release Cycle
126 days
Latest Release
600 days ago

Changelog History
Page 1

  • v1.0.1 Changes

    January 28, 2020

    ๐Ÿ”„ Changelog:

    • ๐Ÿ›  Fix crash on configuration change in a Fragment or when switching Fragments (caused by a bug in AndroidX Fragment 1.2.0)
  • v1.0.0 Changes

    January 28, 2020

    ๐Ÿ”„ Changelog

    • Migrated to AndroidX
  • v0.9.6 Changes

    June 06, 2019

    ๐Ÿ”– Version 0.9.6 06.06.19

    Summary

    ๐Ÿš€ Same as 0.9.5 but with an fix that TiCoroutineScope.launchUntilViewDetaches crashes when using in in TiPresenter.onAttachView.

    ๐Ÿ”„ Changelog

    • ๐Ÿ›  Fix: Crash while using TiCoroutineScope.launchUntilViewDetaches #192 (Thanks @Syex!)

    Diff

    v0.9.5...v0.9.6

  • v0.9.5 Changes

    June 03, 2019

    ๐Ÿ”– Version 0.9.5 03.06.19

    Summary

    ๐Ÿ‘• Lint module

    ๐Ÿ†• New lint module to detect issues early.
    For instance we detect that you have missed to implement the TiView in your Activity or Fragment.

    ๐Ÿ‘‰ Use:
    ๐Ÿ‘• No action required. We bundle the lint registry together with the main thirtyinch module.

    ๐Ÿ‘ kotlin-coroutines support

    This new kotlin module which makes the usage of Kotlin coroutines super easy with ThirtyInch.

    ๐Ÿ‘ท The Jobs you will start with the TiCoroutineScope will be automatically canceled when either the View disappeared or the Presenter got destroyed.

    ๐Ÿ‘‰ Use:
    implementation "net.grandcentrix.thirtyinch:thirtyinch-kotlin-coroutines:0.9.5"

    You can also checkout our README#coroutines.

    ๐Ÿ”Œ plugin

    ๐Ÿšš This module was removed because CompositeAndroid isn't maintained anymore.

    ๐Ÿ”„ Changelog

    • ๐Ÿ†• New: lint module #158
    • ๐Ÿ†• New: kotlin-coroutines support #182
    • โœ‚ Deleted the plugin #168

    Diff

    v0.9.0...v0.9.5

  • v0.9.0 Changes

    July 31, 2018

    ๐Ÿ”– Version 0.9.0 31.7.18

    Summary

    sendToView -> deliverToView for kotlin users

    ๐Ÿ†• New kotlin module which makes the usage of sendToView easier. If you have more ideas open a issue or PR.

    When using sendToView, repeating it.* inside the lambda is quite annoying.
    It's clear that the methods are called on the view.
    With the kotlin extension deliverToView the TiView will be give over to the lambda as this.

    // normal java APIsendToView { it.showText("Hello World") } // kotlin extensiondeliverToView { showText("Hello World") }
    

    Back in the Java days we had to use it inside the sendToView-lambda.

    ๐Ÿ‘‰ Use:
    implementation "net.grandcentrix.thirtyinch:thirtyinch-kotlin:$thirtyinchVersion"

    AndroidX

    Starting with Android Studio 3.2 you can migrate to AndroidX and ThirtyInch is ready.

    ๐Ÿ”„ Changelog

    • ๐Ÿ†• New: kotlin module with TiPresenter#deliverToView(block: View.() -> Unit) which can be used as a replacement for sendToView #150
    • ๐Ÿ”„ Changed: AppCompat is now a dependency (api, was compileOnly)
    • ๐Ÿ†• New: Rx2TiPresenterUtils#deliverLatestToView #137 (thx @GrahamBorland)
    • ๐Ÿ”„ Changed: TiPresenter#sendToView is now public (was protected) which allows a kotlin extension function #142
    • ๐Ÿ†• New: AndroidX support #153

    Diff

    v0.8.5...v0.9.0

  • v0.8.5 Changes

    October 14, 2017

    ๐Ÿ”– Version 0.8.5 14.10.17

    Summary

    ๐Ÿ“š Mostly a maintenance release improving documentation, adding tests and cleaning up the repository.

    ๐Ÿ“ฆ Highlight: The test package is now deprecated and all functionality was moved into the thirtyinch artifact.

    Thanks for external contributors:
    @baltuky @vpondala

    Public changes

    • โšก๏ธ Pull 115 New: Update dependencies (support lib 26.0.0, target- and compileSdkVersion 26 and other minor updates)
    • โœ… Pull 120 New: TiPresenter#test() returns a TiTestPresenter with helper methods for unit testing. Replaces TiPresenterInstructor and deprecates the test artifact.
    • ๐Ÿ“š Pull 126 Fix: TiPresenter#test() documentation, thx @baltuky

    Internal changes

    • ๐Ÿšš Pull 99 Fix: remove javadoc warnings
    • ๐Ÿš€ Pull 103 New: Improved RELEASE.md instructions
    • ๐Ÿ—„ Pull 105 New: Deprecate internal DelegatedTiActivity#isActivityChangingConfigurations which turned out as not required to handle config changes correctly. Simplifies internal logic
    • โšก๏ธ Pull 112 New: Update to gradlew 4.1 allowing development with Android Studio 3.0
    • โœ… Pull 113 New: Test for LifecycleObserver cleanup
    • โœ… Pull 114 New: Tests for internal OneTimeRemovable
    • โœ… Pull 117 New: internal PresenterScope tests
    • Pull 121 New: Replace all Hamcrest assertions with AssertJ, thx @vpondala
    • ๐Ÿ’… Pull 123 New: Add codestyle to project and reformat all sources according to this. Reduces diffs for external contributors
    • โœ… Pull 127 New: Additional tests for
      โœ… TiTestPresenter

    Diff

    v0.8.0...v0.8.5

  • v0.8.0 Changes

    May 04, 2017

    ๐Ÿ”– Version 0.8.0 04.05.17

    Summary

    ๐Ÿ”– Version 0.8.0 is a big step forward towards 1.0.0. The biggest problem, a memory leak when using Fragments could be resolved. This bugfix was only possible after introducing tons of tests.
    ๐Ÿšš API enhancements of TiPresenter make MVP even easier and removes common pitfalls

    Increased code coverage from below 20% to 67% (646/951 lines)

    Thanks for external contributors:
    @remcomokveld, @vRallev, @jonathan-caryl, @k0shk0sh

    thirtyinch

    TiPresenter

    • ๐Ÿ—„ Pull 26 New: onAttachView(TiView) replaces onWakeUp() which is now deprecated
    • ๐Ÿ—„ Pull 26 New: onDetachView() replaces onSleep() which is now deprecated
    • Pull 26 New: getView() is now annotated with @Nullable
    • Pull 87 New: getViewOrThrow() for cases where the view logically can't be null
    • Pull 36 New: sendToView(ViewAction<TiView>) to postpone code execution until the view is attached
    • ๐Ÿ’ป Pull 65 New: runOnUiThread(Runnable) executes code on the view Ui Thread.
    • ๐Ÿ’ป Pull 65 New: sendToView(view -> { }) automatically executes the action on the Ui Thread
    • Pull 94 Always call observer for events which happend when they were registered

    TiFragment

    • Pull 78 Presenter gets correctly destroyed when Fragment is not managed by the FragmentManager anymore
    • 0๏ธโƒฃ Pull 78, Pull 67 uses now the default: setRetainInstanceState(false). Setting TiFragment#setRetainInstanceState(true) will throw
    • ๐Ÿ‘ Pull 78 Support for backstack

    TiActivity

    • ๐Ÿ‘ Pull 78 Always use PresenterSavior singleton, drop support for NonConfigurationInstance

    Other

    • ๐Ÿ‘€ Pull 14, Pull 15 TiLog is used for logging. Listener to see a log output
    • 0๏ธโƒฃ Pull 19, Pull 24 @DistinctUntilChanged supports multiple comparators. (EqualsComparator, WeakEqualsComparator, HashComparator(default))
    • Pull 23 AppCompat is now included with provided dependency instead of compile
    • Pull 42 New: TiDialogFragment
    • Pull 79 New: @CallSuper where a super call is required.
    • Pull 79 New: restrict TiActivity, TiFragment... API for subclasses.
    • ๐Ÿšš Pull 78, Pull 33, Pull 83, Pull 68 Fix: TiPresenter gets destroyed when TiFragment gets removed from the FragmentManager
    • Pull 81 New: Proguard rules included in the library
    • ๐Ÿ—„ Pull 78 TiConfiguration#setUseStaticSaviorToRetain(Boolean) is now deprecated. The PresenterSavior singleton is always used to retain presenters when TiConfiguration#setRetainPresenterEnabled(true).

    rx

    • Pull 27 Fix: view can be null before unsubscribing from Subscriptions
    • Pull 43 New: manage\[View\]Subscriptions(Subscription...)
    • Pull 58, Pull 61 manageViewSubscription(Subscription) will now throw when the view isn't attached
    • Pull 61 RxTiPresenterUtils#isViewReady() now emits the ready event after onAttachView(TiView) was called.
    • Pull 73 New: manage\[View\]Subscription will now return Subscription

    rx2

    ๐Ÿ†• New module for RxJava2 analog to rx module

    • Pull 54, Pull 64 New: RxTiPresenterDisposableHandler#manageDisposable and RxTiPresenterDisposableHandler#manageViewDisposable

    ๐Ÿ”Œ plugin

    • ๐Ÿ”Œ Pull 49 New: TiFragmentPlugin

    โœ… test

    • Pull 65 TiPresenterInstructor automatically sets an Executor for runOnUiThread and sendToView actions

    logginginterceptor

    • ๐ŸŒฒ Pull 85 New: Add logging interceptor module including LoggingInterceptor

    Diff

    v0.7.1...v0.8.0

  • v0.8.0-rc4 Changes

    April 25, 2017

    2017-04-25

    ๐Ÿฑ Most likely the last RC before releasing 0.8.0 ๐ŸŽ‰

    thirtyinch

    • ๐Ÿ›  Bugfix: TiPresenter gets destroyed when TiFragment gets removed from the FragmentManager #78 #33 #83 #68
    • ๐Ÿ†• New: TiFragment supports the backstack #78
    • ๐Ÿ†• New: restrict TiActivity, TiFragment... API for subclasses. #79
    • ๐Ÿ†• New: @CallSuper where a super call is required. #79
    • ๐Ÿ—„ Deprecation: TiConfiguration#setUseStaticSaviorToRetain(Boolean) is now deprecated. The Savior singleton is always used to retain presenters when TiConfiguration#setRetainPresenterEnabled(true). This also means that TiActivity dropped support for the NonConfigurationInstance API #78
    • 0๏ธโƒฃ Change: TiFragment was initially using setRetainInstanceState(true). TiFragment uses now the default: setRetainInstanceState(false). When you try to set TiFragment#setRetainInstanceState(true) it will throw. #78 #67
    • ๐Ÿ†• New: No hard checks required to detect "Don't keep Activities", destroying the TiPresenter works now with the Activity API only. #78

    rx

    • ๐Ÿ†• New: manage*Subscription will now return Subscription #73
    • Change: manage*Subscription(Subscription...) is now manage*Subscriptions(Subscription...) (note the S here), was introduced in an earlier RC and is no breaking change. #73

    rx2

    • ๐Ÿ†• New: manage* Disposable will not return Disposable #73
    • Change: manage* Disposable(Disposable...) is now manage* Disposables(Disposable...) (note the S here ๐Ÿ˜‰), was introduced in an earlier RC and is no breaking change. #73

    sample

    • ๐Ÿ†• New: retrolambda support #69 thx @jonathan-caryl
    • ๐Ÿ†• New: FragmentLifecycleActivity to test Fragments #78
    • ๐Ÿ†• New: LifecycleViewPagerActivity to test Fragments in a ViewPager #84

    ๐Ÿ†• New: logginginterceptor

    • ๐Ÿ†• New: LoggingInterceptor logs all method calls to the TiView interface to TiLog for debugging. Don't forget to enable TiLog or pass a custom Logger to the LoggingInterceptor constructor. #85

    compile "net.grandcentrix.thirtyinch:thirtyinch-logginginterceptor:$thirtyinchVersion"

    // register TiLog in your Applicationif (BuildConfig.DEBUG) { TiLog.setLogger(TiLog.LOGCAT); }public class MyActivity extends TiActivity\<MyPresenter, MyView\> implements MyView { public MyActivity() { // log by default to TiLog addBindViewInterceptor(new LoggingInterceptor()); // log to logcat for debug builds addBindViewInterceptor(new LoggingInterceptor(BuildConfig.DEBUG ? TiLog.LOGCAT : null)); } }
    

    Diff

    v0.8.0-rc3...v0.8.0-rc4

  • v0.8.0-rc3 Changes

    February 10, 2017

    2017-02-10

    thirtyinch

    • ๐Ÿ†• New: TiPresenter#runOnUiThread(Runnable) executes code on the view Ui Thread. #65
    • ๐Ÿ†• New: sendToView(view -> { }) automatically executes the action on the Ui Thread #65
    • Fix: Change sendToView(action) actions will be executed after #onAttachView(view), and after all LifecycleObserver received their events. This allows preparing the view in onAttachView(TiView) for those actions. That way the view should be in a "running" state as if the view was never gone. #65
    • Fix: Change LifecycleObservers get called in order they are added for constructive events (VIEW_ATTACHED) and in reversed order for destructive events (VIEW_DETACHED, DESTROYED). First in, last out. #65

    ๐Ÿ”Œ plugin

    • ๐Ÿ†• New TiFragmentPlugin #49

    rx

    • ๐Ÿ†• New: manageViewSubscription(Subscription) will now throw when the view isn't attached #58, #61
    • ๐Ÿ›  Fix: Rename second parameter of TiLifecycleObserver#onChange(state, beforeLifecycleEvent) to TiLifecycleObserver#onChange(state, hasLifecycleMethodBeenCalled), also adjusted the documentation #61
    • ๐Ÿ›  Fix: Change RxTiPresenterUtils#isViewReady() to emit the ready event after onAttachView(TiView) was called.

    ๐Ÿ†• New: rx2

    • ๐Ÿ†• New: rx2 module compile "net.grandcentrix.thirtyinch:thirtyinch-rx2:$thirtyinchVersion"#54
    • ๐Ÿ†• New: auto dispose your Disposable with RxTiPresenterDisposableHandler#manageDisposable and RxTiPresenterDisposableHandler#manageViewDisposable #54, #64
    • RxTiPresenterUtils#isViewReady(): Observable<Boolean> emits the view attached state

    โœ… test

    • ๐Ÿ†• New: TiPresenterInstructor automatically sets an Executor for runOnUiThread and sendToView actions. It's even more recommended to use it instead of calling the lifecycle methods manually
  • v0.8.0-rc2 Changes

    December 16, 2016

    ๐Ÿ”„ Changelog 0.8.0-rc2

    thirtyInch

    • ๐Ÿ†• New: TiDialogFragment #42 with TiDialogFragmentDelegate under the hood #47 (thanks @vRallev)
    • ๐Ÿ†• New: @DistinctUntilChanged uses now hashcode() instead of equals() by default (again) for comparison. Revert of change introduced in 0.8.0-rc1 #46

    rx

    • ๐Ÿ†• New: Multiple subscriptions #43