Skip to content

Releases: skydoves/WhatIf

1.1.4

08 Oct 08:17
88d74b9
Compare
Choose a tag to compare

What's Changed

Full Changelog: 1.1.3...1.1.4

1.1.3

16 Jul 06:34
7cc2684
Compare
Choose a tag to compare

What's Changed

  • Update Kotlin to 1.8.22, AGO to 7.4.2, Coroutines, and other dependencies by @skydoves in #15

Full Changelog: 1.1.2...1.1.3

1.1.2

25 Jan 12:53
e02a22d
Compare
Choose a tag to compare

What's Changed

Full Changelog: 1.1.1...1.1.2

1.1.1

27 Nov 05:42
2aab1c4
Compare
Choose a tag to compare

What's Changed

Introduce

Since 1.1.1, every whatIf relevant functions use the Contracts as AT_MOST_ONCE internally.
It improving the variable initialization analysis in the presence of high-order functions:

val string: String
nullableString.whatIfNotNull {
  string = it
  
  // do something //
}

Full Changelog: 1.1.0...1.1.1

1.1.0

07 Apr 10:40
a5dead1
Compare
Choose a tag to compare

🎉 Released a new version 1.1.0! 🎉

What's New?

  • Added new function whatIfFindFragment for FragmentActivity.
    An expression for invoking [whatIf] when the [FragmentActivity] has an attached fragment [T].
.whatIfFindFragment<MainTestFragment>(fragment_id) {
  // do something
}
whatIfFindFragment<MainTestFragment>(MainTestFragment.TAG) { 
  // do something
}
  • Added new function whatIfFindParentInterface for finding a parent interface for Fragment.
  • Added new function whatIfHasDeepLinkUri for invoking whatIf when the Activity's intent deep link URI is not null and not empty.
  • Changed WhatIfInlineOnly to internal.

1.0.9

04 Dec 15:46
92ec158
Compare
Choose a tag to compare

🎉 Released a new version 1.0.9! 🎉

What's New?

  • Added WhatIfMap and deprecated whatIfLet.
    The basic concept is the same as whatIf. An expression for invoking whatIf when the target object is not null.
    It is useful when the receiver and the result should be different.
val length = nullableString.whatIfMap(
  whatIf = { it.length },
  whatIfNot = {
    log("$it, nullableString is null.")
    -1
  }
)
  • Added WhatIfAnd and WhatIfOr expressions for the nullable-Boolean iterables.
  • Added some expressions for collections.
    We can use default value instead of the whatIfNot and can be omitted the whatIfNot.
val length = nullableString.whatIfMap(
    default = -1
  ) { 
  log("$it, length can not over than 5.")
  5
}

We can use some expressions for List, Map, and Set.

  • whatIfNotNullOrEmpty: An expression for invoking whatIf when the List is not null and not empty.
  • addWhatIfNotNull: An expression for adding an element and invoking whatIf when the element is not null.
  • addAllWhatIfNotNull: An expression for adding an element and invoking whatIf when the element is not null.
  • removeWhatIfNotNull: An expression for removing an element and invoking whatIf when the element is not null.
  • removeAllWhatIfNotNull: An expression for removing a collection of element and invoking whatIf when the element is not null.

1.0.8

21 Nov 07:34
58beec3
Compare
Choose a tag to compare

🎉 Released a new version 1.0.8! 🎉

What's New?

  • Update whatIfHasSerializableExtra using whatIfNotNullAs. (e3bafdc)
  • Added return types to the whatIf expressions. (1c89e35)
  • Removed generating the buildConfig from whatif-android module
  • Added paramter documentations to the extensions.
  • Updated kotlin 1.4.20 internally.

1.0.7

26 Oct 15:54
e195da9
Compare
Choose a tag to compare

🎉 Released a new version 1.0.7! 🎉

What's New?

  • Added whatIfHasStringExtra, whatIfHasParcelableExtra, whatIfHasSerializableExtra functions in the whatIf-android module.
  • Updated gradle build tool version and gradle wrapper version internally.
  • Hide kotlin lambda functionalities in Java APIs.
  • Updated kotlin version to 1.4.10 stable.
  • removed unused dependencies internally.

1.0.6

07 Aug 12:45
9453bde
Compare
Choose a tag to compare

🎉 Released a new version 1.0.6! 🎉

What's New?

  • The previous module separated into whatIf and whatIf-android.
    The whatIf module can be used in the kotlin project (non-Android project).
    The whatIf-android module is related to Android extensions.

1.0.5

31 Jul 15:57
63b2361
Compare
Choose a tag to compare

🎉 Released a new version 1.0.5! 🎉

What's New?

  • Added whatIfElse.
    An expression for invoking whatIf lambda when the target boolean is not null and false.
nullableBoolean.whatIfElse {
  log("nullableBoolean is not null and false")
}
  • Added whatIfAnd, whatIfOr.
    An expression for invoking whatIf lambda when the target boolean is true and/or a predicate receiver is true.
nullableBoolean.whatIfAnd(predicate) {
  log("nullableBoolean is true and the predicate is also true")
}

nullableBoolean.whatIfOr(predicate) {
  log("nullableBoolean is true or the predicate is true")
}

WhatIf for Android fragment

  • whatIfNotNullContext.
    An expression for invoking whatIf lambda when the Context is not null.
class WhatIfFragment : Fragment() {

  override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    whatIfNotNullContext {
      Toast.makeText(it, "context is not null!", Toast.LENGTH_SHORT).show()
    }
  }
}
  • whatIfNotNullArguments
An expression for invoking whatIf when the Fragment.getArguments is not null.

whatIfNotNullArguments {
  it.getString("name").whatIfNotNull {
    log("my name is $it")
  }
}
  • whatIfNotNullActivity
whatIfNotNullActivity { activity ->
  activity.supportFragmentManager.addOnBackStackChangedListener {
    // .. //
  }
}