Skip to content

Commit

Permalink
Add Refreshing
Browse files Browse the repository at this point in the history
  • Loading branch information
SanmerDev committed Aug 25, 2024
1 parent 54ef908 commit eba9f42
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package dev.sanmer.github.artifacts.ktx

import androidx.paging.LoadState

val LoadState.isLoading: Boolean
inline get() = this is LoadState.Loading
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package dev.sanmer.github.artifacts.ui.screen.workflow

import androidx.compose.animation.Crossfade
import androidx.compose.animation.core.animateFloat
import androidx.compose.animation.core.infiniteRepeatable
import androidx.compose.animation.core.rememberInfiniteTransition
import androidx.compose.animation.core.tween
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Icon
Expand All @@ -11,7 +15,9 @@ import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.rotate
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
Expand All @@ -21,6 +27,7 @@ import androidx.navigation.NavController
import androidx.paging.LoadState
import androidx.paging.compose.collectAsLazyPagingItems
import dev.sanmer.github.artifacts.R
import dev.sanmer.github.artifacts.ktx.isLoading
import dev.sanmer.github.artifacts.ui.component.Failed
import dev.sanmer.github.artifacts.ui.component.Loading
import dev.sanmer.github.artifacts.ui.component.PageIndicator
Expand All @@ -41,6 +48,7 @@ fun WorkflowScreen(
topBar = {
TopBar(
name = viewModel.name,
isLoading = workflowRuns.loadState.append.isLoading,
onRefresh = workflowRuns::refresh,
navController = navController,
scrollBehavior = scrollBehavior
Expand Down Expand Up @@ -86,6 +94,7 @@ fun WorkflowScreen(
@Composable
private fun TopBar(
name: String,
isLoading: Boolean,
onRefresh: () -> Unit,
navController: NavController,
scrollBehavior: TopAppBarScrollBehavior
Expand All @@ -109,13 +118,29 @@ private fun TopBar(
},
actions = {
IconButton(
onClick = onRefresh
onClick = onRefresh,
) {
Icon(
painter = painterResource(id = R.drawable.refresh),
contentDescription = null
)
Refreshing(isLoading)
}
},
scrollBehavior = scrollBehavior
)
)

@Composable
private fun Refreshing(isLoading: Boolean) {
val infiniteTransition = rememberInfiniteTransition(label = "Refreshing")
val degrees by infiniteTransition.animateFloat(
label = "RefreshingDegrees",
initialValue = if (isLoading) 360f else 0f,
targetValue = 0f,
animationSpec = infiniteRepeatable(
tween(1000)
)
)

Icon(
painter = painterResource(id = R.drawable.refresh),
contentDescription = null,
modifier = Modifier.rotate(degrees)
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ private fun WorkflowItem(
var expend by rememberSaveable(run) { mutableStateOf(false) }
val degrees by animateFloatAsState(
targetValue = if (expend) 90f else 0f,
label = "WorkflowItem Icon"
label = "WorkflowItemIcon"
)

WorkflowItem(
Expand Down

0 comments on commit eba9f42

Please sign in to comment.