Skip to content

Commit a7d0357

Browse files
committed
💡: add useRequest example: polling
1 parent 868542a commit a7d0357

File tree

2 files changed

+55
-1
lines changed

2 files changed

+55
-1
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package xyz.junerver.composehooks.example.request
2+
3+
import androidx.compose.foundation.layout.Column
4+
import androidx.compose.foundation.layout.Spacer
5+
import androidx.compose.foundation.layout.height
6+
import androidx.compose.material3.Surface
7+
import androidx.compose.material3.Text
8+
import androidx.compose.runtime.Composable
9+
import androidx.compose.ui.Modifier
10+
import androidx.compose.ui.unit.dp
11+
import kotlin.time.Duration.Companion.seconds
12+
import xyz.junerver.compose.hooks.optionsOf
13+
import xyz.junerver.compose.hooks.useRef
14+
import xyz.junerver.compose.hooks.useUpdate
15+
import xyz.junerver.compose.hooks.userequest.useRequest
16+
import xyz.junerver.composehooks.net.WebService
17+
import xyz.junerver.composehooks.net.asRequestFn
18+
import xyz.junerver.kotlin.asBoolean
19+
20+
/**
21+
* Description:
22+
* @author Junerver
23+
* date: 2024/3/13-10:59
24+
* Email: junerver@gmail.com
25+
* Version: v1.0
26+
*/
27+
@Composable
28+
fun Polling() {
29+
// By using `useRef` the count is not lost even when the screen is rotated
30+
val countRef = useRef(default = 0)
31+
val update = useUpdate()
32+
val (userInfo, loading, _, _, _, refresh) = useRequest(
33+
requestFn = WebService::userInfo.asRequestFn(),
34+
optionsOf {
35+
defaultParams = arrayOf("junerver")
36+
pollingInterval = 3.seconds
37+
onSuccess = { _, _ ->
38+
countRef.current += 1
39+
update()
40+
}
41+
}
42+
)
43+
Surface {
44+
Column {
45+
Text(text = "Polling count: ${countRef.current}")
46+
Spacer(modifier = Modifier.height(20.dp))
47+
if (loading) {
48+
Text(text = "Loading ...")
49+
} else if (userInfo.asBoolean()) {
50+
Text(text = "$userInfo".substring(0..100))
51+
}
52+
}
53+
}
54+
}

app/src/main/java/xyz/junerver/composehooks/example/request/routes.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ val subRoutes = mapOf<String, @Composable () -> Unit>(
1818
"mutate" to { Mutate() },
1919
"cancel" to { Cancel() },
2020
"loadingDelay" to { LoadingDelay() },
21-
"polling" to { TODO() },
21+
"polling" to { Polling() },
2222
"ready" to { TODO() },
2323
"depsRefresh" to { TODO() },
2424
"debounce" to { TODO() },

0 commit comments

Comments
 (0)