File tree Expand file tree Collapse file tree
app/src/commonMain/kotlin/xyz/junerver/composehooks/example/request
hooks/src/commonMain/kotlin/xyz/junerver/compose/hooks/userequest Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -12,9 +12,9 @@ import kotlin.random.Random
1212import kotlin.time.Duration.Companion.seconds
1313import kotlinx.coroutines.delay
1414import kotlinx.coroutines.isActive
15- import xyz.junerver.compose.hooks.None
1615import xyz.junerver.compose.hooks.useBoolean
1716import xyz.junerver.compose.hooks.userequest.UseRequestOptions
17+ import xyz.junerver.compose.hooks.userequest.noneParams
1818import xyz.junerver.compose.hooks.userequest.useRequest
1919import xyz.junerver.compose.hooks.userequest.utils.clearCache
2020import 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 },
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import androidx.compose.runtime.Stable
66import kotlin.reflect.KProperty
77import kotlin.time.Duration
88import kotlin.time.Duration.Companion.minutes
9+ import xyz.junerver.compose.hooks.None
910import xyz.junerver.compose.hooks.UseDebounceOptions
1011import xyz.junerver.compose.hooks.UseThrottleOptions
1112import 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+ }
You can’t perform that action at this time.
0 commit comments