Skip to content

Commit 5b0824b

Browse files
committed
🩹: add noneParams
1 parent 93c3857 commit 5b0824b

2 files changed

Lines changed: 15 additions & 5 deletions

File tree

  • app/src/commonMain/kotlin/xyz/junerver/composehooks/example/request
  • hooks/src/commonMain/kotlin/xyz/junerver/compose/hooks/userequest

app/src/commonMain/kotlin/xyz/junerver/composehooks/example/request/Cache&SWR.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import kotlin.random.Random
1212
import kotlin.time.Duration.Companion.seconds
1313
import kotlinx.coroutines.delay
1414
import kotlinx.coroutines.isActive
15-
import xyz.junerver.compose.hooks.None
1615
import xyz.junerver.compose.hooks.useBoolean
1716
import xyz.junerver.compose.hooks.userequest.UseRequestOptions
17+
import xyz.junerver.compose.hooks.userequest.noneParams
1818
import xyz.junerver.compose.hooks.userequest.useRequest
1919
import xyz.junerver.compose.hooks.userequest.utils.clearCache
2020
import xyz.junerver.compose.hooks.utils.asBoolean
@@ -88,8 +88,7 @@ private fun SWR(useCache: Boolean = false) {
8888
requestFn = {
8989
mockRequestArticle()
9090
},
91-
optionsOf = {
92-
defaultParams = None
91+
optionsOf = noneParams {
9392
if (useCache) cacheKey = "test-swr-key"
9493
},
9594
)
@@ -133,8 +132,7 @@ private fun StaleTime(cacheKey: String) {
133132
requestFn = {
134133
mockRequestArticle()
135134
},
136-
optionsOf = {
137-
defaultParams = None
135+
optionsOf = noneParams {
138136
this.cacheKey = cacheKey
139137
staleTime = 5.seconds
140138
},

hooks/src/commonMain/kotlin/xyz/junerver/compose/hooks/userequest/UseRequestOptions.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.compose.runtime.Stable
66
import kotlin.reflect.KProperty
77
import kotlin.time.Duration
88
import kotlin.time.Duration.Companion.minutes
9+
import xyz.junerver.compose.hooks.None
910
import xyz.junerver.compose.hooks.UseDebounceOptions
1011
import xyz.junerver.compose.hooks.UseThrottleOptions
1112
import xyz.junerver.compose.hooks.userequest.utils.CachedData
@@ -253,3 +254,14 @@ private class ThrottleOptionsDelegate(
253254
useRequestOptions.throttleOptions = UseThrottleOptions.optionOf(function)
254255
}
255256
}
257+
258+
/**
259+
* A shortcut configuration function for option lambda functions without parameters.
260+
* This function is used to specify that the option lambda function has no parameters by setting defaultParams to None.
261+
*/
262+
inline fun <TData : Any> noneParams(noinline optionsOf: UseRequestOptions<None, TData>.() -> Unit): UseRequestOptions<None, TData>.() -> Unit {
263+
return {
264+
optionsOf()
265+
defaultParams = None
266+
}
267+
}

0 commit comments

Comments
 (0)