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 thatTiCoroutineScope.launchUntilViewDetaches
crashes when using in inTiPresenter.onAttachView
.๐ Changelog
Diff
-
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 theTiView
in yourActivity
orFragment
.๐ Use:
๐ No action required. We bundle the lint registry together with the mainthirtyinch
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 theTiCoroutineScope
will be automatically canceled when either theView
disappeared or thePresenter
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
Diff
-
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
, repeatingit.*
inside the lambda is quite annoying.
It's clear that the methods are called on the view.
With the kotlin extensiondeliverToView
theTiView
will be give over to the lambda asthis
.// normal java APIsendToView { it.showText("Hello World") } // kotlin extensiondeliverToView { showText("Hello World") }
Back in the Java days we had to use
it
inside thesendToView
-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 withTiPresenter#deliverToView(block: View.() -> Unit)
which can be used as a replacement forsendToView
#150 - ๐ Changed: AppCompat is now a dependency (
api
, wascompileOnly
) - ๐ New:
Rx2TiPresenterUtils#deliverLatestToView
#137 (thx @GrahamBorland) - ๐ Changed:
TiPresenter#sendToView
is nowpublic
(wasprotected
) which allows a kotlin extension function #142 - ๐ New: AndroidX support #153
Diff
- ๐ New:
-
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 thethirtyinch
artifact.Thanks for external contributors:
@baltuky @vpondalaPublic 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 aTiTestPresenter
with helper methods for unit testing. ReplacesTiPresenterInstructor
and deprecates thetest
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 withAssertJ
, 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 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 ofTiPresenter
make MVP even easier and removes common pitfallsIncreased code coverage from below 20% to 67% (646/951 lines)
Thanks for external contributors:
@remcomokveld, @vRallev, @jonathan-caryl, @k0shk0shthirtyinch
TiPresenter
- ๐ Pull 26 New:
onAttachView(TiView)
replacesonWakeUp()
which is now deprecated - ๐ Pull 26 New:
onDetachView()
replacesonSleep()
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 benull
- 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)
. SettingTiFragment#setRetainInstanceState(true)
will throw - ๐ Pull 78 Support for backstack
TiActivity
- ๐ Pull 78 Always use
PresenterSavior
singleton, drop support forNonConfigurationInstance
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 ofcompile
- 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 whenTiFragment
gets removed from the FragmentManager - Pull 81 New:
Proguard
rules included in the library - ๐ Pull 78
TiConfiguration#setUseStaticSaviorToRetain(Boolean)
is now deprecated. ThePresenterSavior
singleton is always used to retain presenters whenTiConfiguration#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 afteronAttachView(TiView)
was called. - Pull 73 New:
manage\[View\]Subscription
will now returnSubscription
rx2
๐ New module for RxJava2 analog to rx module
- Pull 54, Pull 64 New:
RxTiPresenterDisposableHandler#manageDisposable
andRxTiPresenterDisposableHandler#manageViewDisposable
๐ plugin
- ๐ Pull 49 New:
TiFragmentPlugin
โ test
- Pull 65
TiPresenterInstructor
automatically sets anExecutor
forrunOnUiThread
andsendToView
actions
logginginterceptor
- ๐ฒ Pull 85 New: Add logging interceptor module including
LoggingInterceptor
Diff
- ๐ Pull 26 New:
-
v0.8.0-rc4 Changes
April 25, 20172017-04-25
๐ฑ Most likely the last RC before releasing 0.8.0 ๐
thirtyinch
- ๐ Bugfix:
TiPresenter
gets destroyed whenTiFragment
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. TheSavior
singleton is always used to retain presenters whenTiConfiguration#setRetainPresenterEnabled(true)
. This also means thatTiActivity
dropped support for theNonConfigurationInstance
API #78 - 0๏ธโฃ Change:
TiFragment
was initially usingsetRetainInstanceState(true)
.TiFragment
uses now the default:setRetainInstanceState(false)
. When you try to setTiFragment#setRetainInstanceState(true)
it will throw. #78 #67 - ๐ New: No hard checks required to detect "Don't keep Activities", destroying the
TiPresenter
works now with theActivity
API only. #78
rx
- ๐ New:
manage*Subscription
will now returnSubscription
#73 - Change:
manage*Subscription(Subscription...)
is nowmanage*Subscriptions(Subscription...)
(note the S here), was introduced in an earlier RC and is no breaking change. #73
rx2
- ๐ New:
manage* Disposable
will not returnDisposable
#73 - Change:
manage* Disposable(Disposable...)
is nowmanage* 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 theTiView
interface toTiLog
for debugging. Don't forget to enableTiLog
or pass a customLogger
to theLoggingInterceptor
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
- ๐ Bugfix:
-
v0.8.0-rc3 Changes
February 10, 20172017-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 allLifecycleObserver
received their events. This allows preparing the view inonAttachView(TiView)
for those actions. That way the view should be in a "running" state as if the view was never gone. #65 - Fix: Change
LifecycleObserver
s 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)
toTiLifecycleObserver#onChange(state, hasLifecycleMethodBeenCalled)
, also adjusted the documentation #61 - ๐ Fix: Change
RxTiPresenterUtils#isViewReady()
to emit the ready event afteronAttachView(TiView)
was called.
๐ New: rx2
- ๐ New:
rx2
modulecompile "net.grandcentrix.thirtyinch:thirtyinch-rx2:$thirtyinchVersion"
#54 - ๐ New: auto dispose your
Disposable
withRxTiPresenterDisposableHandler#manageDisposable
andRxTiPresenterDisposableHandler#manageViewDisposable
#54, #64 RxTiPresenterUtils#isViewReady(): Observable<Boolean>
emits the view attached state
โ test
- ๐ New:
TiPresenterInstructor
automatically sets anExecutor
forrunOnUiThread
andsendToView
actions. It's even more recommended to use it instead of calling the lifecycle methods manually
- ๐ New:
-
v0.8.0-rc2 Changes
December 16, 2016๐ Changelog
0.8.0-rc2
thirtyInch
- ๐ New:
TiDialogFragment
#42 withTiDialogFragmentDelegate
under the hood #47 (thanks @vRallev) - ๐ New:
@DistinctUntilChanged
uses nowhashcode()
instead ofequals()
by default (again) for comparison. Revert of change introduced in0.8.0-rc1
#46
rx
- ๐ New: Multiple subscriptions #43
- ๐ New: