From cee71e93357d7b21d4aee158542ec33355276203 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Sat, 18 Jun 2022 03:17:44 +0200 Subject: [PATCH] Fix: Instant enable/disable of repos --- .../ui/compose/components/RespositoryItem.kt | 14 +++++++++++--- .../ui/fragments/PrefsRepositoriesFragment.kt | 1 - 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/ui/compose/components/RespositoryItem.kt b/src/main/kotlin/com/looker/droidify/ui/compose/components/RespositoryItem.kt index 2d99bf45..6faf3c50 100644 --- a/src/main/kotlin/com/looker/droidify/ui/compose/components/RespositoryItem.kt +++ b/src/main/kotlin/com/looker/droidify/ui/compose/components/RespositoryItem.kt @@ -17,6 +17,8 @@ import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -32,8 +34,11 @@ fun RepositoryItem( onClick: (Repository) -> Unit = {}, onLongClick: (Repository) -> Unit = {} ) { + var (isEnabled, enable) = remember(repository.enabled) { + mutableStateOf(repository.enabled) + } val backgroundColor by animateColorAsState( - targetValue = if (repository.enabled) MaterialTheme.colorScheme.primaryContainer + targetValue = if (isEnabled) MaterialTheme.colorScheme.primaryContainer else MaterialTheme.colorScheme.background ) @@ -43,7 +48,10 @@ fun RepositoryItem( .fillMaxWidth() .clip(MaterialTheme.shapes.large) .combinedClickable( - onClick = { onClick(repository) }, + onClick = { + enable(!isEnabled) + onClick(repository.copy(enabled = !repository.enabled)) + }, onLongClick = { onLongClick(repository) } ), color = backgroundColor, @@ -61,7 +69,7 @@ fun RepositoryItem( repositoryName = repository.name, repositoryDescription = repository.description ) - AnimatedVisibility(visible = repository.enabled) { + AnimatedVisibility(visible = isEnabled) { Icon( imageVector = Icons.Default.Done, contentDescription = "Repository Enabled" diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt index c30baf27..cf306812 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt @@ -119,7 +119,6 @@ class PrefsRepositoriesFragment : BaseNavFragment() { RepositoriesRecycler( repositoriesList = repos?.sortedBy { repo -> !repo.enabled }, onClick = { repo -> - repo.enabled = !repo.enabled GlobalScope.launch(Dispatchers.IO) { syncConnection.binder?.setEnabled(repo, repo.enabled) }