Skip to content

Commit

Permalink
Add refresh functionality to checklist
Browse files Browse the repository at this point in the history
  • Loading branch information
masato1230 committed Dec 27, 2022
1 parent 3352f7f commit accd165
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ import androidx.compose.material.icons.filled.Warning
import androidx.compose.material.pullrefresh.PullRefreshIndicator
import androidx.compose.material.pullrefresh.pullRefresh
import androidx.compose.material.pullrefresh.rememberPullRefreshState
import androidx.compose.runtime.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
Expand All @@ -23,21 +24,20 @@ import kotlinx.coroutines.launch
@Composable
internal fun CheckListScreen(viewModel: CheckListViewModel) {
val refreshScope = rememberCoroutineScope()
var refreshing by remember { mutableStateOf(false) }

fun refresh() = refreshScope.launch {
refreshing = true
viewModel.isRefreshing = true
delay(500)
refreshing = false
viewModel.isRefreshing = false
}

val refreshState = rememberPullRefreshState(refreshing, ::refresh)
val refreshState = rememberPullRefreshState(viewModel.isRefreshing, ::refresh)

Scaffold(
topBar = {
CheckListAppBar(
checkList = viewModel.checkList,
isRefreshing = refreshing,
isRefreshing = viewModel.isRefreshing,
onClickClear = { viewModel.clearCheckList() },
)
}
Expand All @@ -47,10 +47,10 @@ internal fun CheckListScreen(viewModel: CheckListViewModel) {
.fillMaxSize()
.pullRefresh(refreshState),
) {
if (!refreshing) {
if (!viewModel.isRefreshing) {
CheckListContent(modifier = Modifier.padding(it), viewModel = viewModel)
}
PullRefreshIndicator(refreshing, refreshState, Modifier.align(Alignment.TopCenter))
PullRefreshIndicator(viewModel.isRefreshing, refreshState, Modifier.align(Alignment.TopCenter))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package jp.co.tokubai.docpuree.ui.checklist

import android.util.Log
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import jp.co.tokubai.docpuree.source.CheckListSource
Expand All @@ -13,10 +16,13 @@ internal class CheckListViewModel : ViewModel() {
observeLoggedClass()
}

internal val checkList = CheckListSource.checkList
val checkList = CheckListSource.checkList
var isRefreshing by mutableStateOf(false)

fun clearCheckList() {
isRefreshing = true
CheckListSource.checkList.clear()
isRefreshing = false
}

private fun observeLoggedClass() {
Expand Down

0 comments on commit accd165

Please sign in to comment.