@@ -27,6 +27,8 @@ import android.os.Parcelable
27
27
import com.skydoves.whatif.whatIfNotNull
28
28
import com.skydoves.whatif.whatIfNotNullAs
29
29
import java.io.Serializable
30
+ import kotlin.contracts.InvocationKind
31
+ import kotlin.contracts.contract
30
32
31
33
/* *
32
34
* An expression for invoking [whatIf] when the [Activity]'s intent extras is not null and not empty.
@@ -38,7 +40,9 @@ import java.io.Serializable
38
40
public inline fun Activity.whatIfHasExtras (
39
41
whatIf : (Bundle ) -> Unit
40
42
) {
41
-
43
+ contract {
44
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
45
+ }
42
46
this .whatIfHasExtras(
43
47
whatIf = whatIf,
44
48
whatIfNot = { }
@@ -58,7 +62,10 @@ public inline fun Activity.whatIfHasExtras(
58
62
whatIf : (Bundle ) -> Unit ,
59
63
whatIfNot : () -> Unit
60
64
) {
61
-
65
+ contract {
66
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
67
+ callsInPlace(whatIfNot, InvocationKind .AT_MOST_ONCE )
68
+ }
62
69
this .intent.extras.whatIfNotNull(
63
70
whatIf = {
64
71
if (! it.isEmpty) {
@@ -81,7 +88,9 @@ public inline fun Activity.whatIfHasExtras(
81
88
name : String ,
82
89
whatIf : () -> Unit
83
90
) {
84
-
91
+ contract {
92
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
93
+ }
85
94
this .whatIfHasExtras(
86
95
name = name,
87
96
whatIf = whatIf,
@@ -104,7 +113,10 @@ public inline fun Activity.whatIfHasExtras(
104
113
whatIf : () -> Unit ,
105
114
whatIfNot : () -> Unit
106
115
) {
107
-
116
+ contract {
117
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
118
+ callsInPlace(whatIfNot, InvocationKind .AT_MOST_ONCE )
119
+ }
108
120
if (intent.hasExtra(name)) {
109
121
whatIf()
110
122
} else {
@@ -124,7 +136,9 @@ public inline fun Activity.whatIfHasStringExtra(
124
136
name : String ,
125
137
whatIf : (String ) -> Unit
126
138
) {
127
-
139
+ contract {
140
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
141
+ }
128
142
this .intent.getStringExtra(name).whatIfNotNull(
129
143
whatIf = whatIf,
130
144
whatIfNot = { }
@@ -146,7 +160,10 @@ public inline fun Activity.whatIfHasStringExtra(
146
160
whatIf : (String ) -> Unit ,
147
161
whatIfNot : () -> Unit
148
162
) {
149
-
163
+ contract {
164
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
165
+ callsInPlace(whatIfNot, InvocationKind .AT_MOST_ONCE )
166
+ }
150
167
this .intent.getStringExtra(name).whatIfNotNull(
151
168
whatIf = whatIf,
152
169
whatIfNot = whatIfNot
@@ -165,7 +182,9 @@ public inline fun Activity.whatIfHasCharSequenceExtra(
165
182
name : String ,
166
183
whatIf : (CharSequence ) -> Unit
167
184
) {
168
-
185
+ contract {
186
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
187
+ }
169
188
this .intent.getCharSequenceExtra(name).whatIfNotNull(
170
189
whatIf = whatIf,
171
190
whatIfNot = { }
@@ -187,7 +206,10 @@ public inline fun Activity.whatIfHasCharSequenceExtra(
187
206
whatIf : (CharSequence ) -> Unit ,
188
207
whatIfNot : () -> Unit
189
208
) {
190
-
209
+ contract {
210
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
211
+ callsInPlace(whatIfNot, InvocationKind .AT_MOST_ONCE )
212
+ }
191
213
this .intent.getCharSequenceExtra(name).whatIfNotNull(
192
214
whatIf = whatIf,
193
215
whatIfNot = whatIfNot
@@ -206,7 +228,9 @@ public inline fun <reified T : Serializable> Activity.whatIfHasSerializableExtra
206
228
name : String ,
207
229
whatIf : (T ) -> Unit
208
230
) {
209
-
231
+ contract {
232
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
233
+ }
210
234
this .intent.getSerializableExtra(name).whatIfNotNullAs(
211
235
whatIf = whatIf,
212
236
whatIfNot = { }
@@ -228,7 +252,10 @@ public inline fun <reified T : Serializable> Activity.whatIfHasSerializableExtra
228
252
whatIf : (T ) -> Unit ,
229
253
whatIfNot : () -> Unit
230
254
) {
231
-
255
+ contract {
256
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
257
+ callsInPlace(whatIfNot, InvocationKind .AT_MOST_ONCE )
258
+ }
232
259
this .intent.getSerializableExtra(name).whatIfNotNullAs(
233
260
whatIf = whatIf,
234
261
whatIfNot = whatIfNot
@@ -247,7 +274,9 @@ public inline fun <reified T : Parcelable> Activity.whatIfHasParcelableExtra(
247
274
name : String ,
248
275
whatIf : (T ) -> Unit
249
276
) {
250
-
277
+ contract {
278
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
279
+ }
251
280
this .intent.getParcelableExtra<T >(name).whatIfNotNull(
252
281
whatIf = whatIf,
253
282
whatIfNot = { }
@@ -269,7 +298,10 @@ public inline fun <reified T : Parcelable> Activity.whatIfHasParcelableExtra(
269
298
whatIf : (T ) -> Unit ,
270
299
whatIfNot : () -> Unit
271
300
) {
272
-
301
+ contract {
302
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
303
+ callsInPlace(whatIfNot, InvocationKind .AT_MOST_ONCE )
304
+ }
273
305
this .intent.getParcelableExtra<T >(name).whatIfNotNull(
274
306
whatIf = whatIf,
275
307
whatIfNot = whatIfNot
@@ -288,7 +320,9 @@ public inline fun <reified T : Parcelable> Activity.whatIfHasParcelableArrayList
288
320
name : String ,
289
321
whatIf : (ArrayList <T >) -> Unit
290
322
) {
291
-
323
+ contract {
324
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
325
+ }
292
326
this .intent.getParcelableArrayListExtra<T >(name).whatIfNotNull(
293
327
whatIf = whatIf,
294
328
whatIfNot = { }
@@ -310,7 +344,10 @@ public inline fun <reified T : Parcelable> Activity.whatIfHasParcelableArrayList
310
344
whatIf : (ArrayList <T >) -> Unit ,
311
345
whatIfNot : () -> Unit
312
346
) {
313
-
347
+ contract {
348
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
349
+ callsInPlace(whatIfNot, InvocationKind .AT_MOST_ONCE )
350
+ }
314
351
this .intent.getParcelableArrayListExtra<T >(name).whatIfNotNull(
315
352
whatIf = whatIf,
316
353
whatIfNot = whatIfNot
@@ -327,7 +364,9 @@ public inline fun <reified T : Parcelable> Activity.whatIfHasParcelableArrayList
327
364
public inline fun Activity.whatIfHasDeepLinkUri (
328
365
whatIf : (Uri ) -> Unit
329
366
) {
330
-
367
+ contract {
368
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
369
+ }
331
370
this .whatIfHasDeepLinkUri(whatIf, { })
332
371
}
333
372
@@ -344,6 +383,9 @@ public inline fun Activity.whatIfHasDeepLinkUri(
344
383
whatIf : (Uri ) -> Unit ,
345
384
whatIfNot : () -> Unit
346
385
) {
347
-
386
+ contract {
387
+ callsInPlace(whatIf, InvocationKind .AT_MOST_ONCE )
388
+ callsInPlace(whatIfNot, InvocationKind .AT_MOST_ONCE )
389
+ }
348
390
this .intent.data.whatIfNotNull(whatIf, whatIfNot)
349
391
}
0 commit comments