Fix: Instant enable/disable of repos

This commit is contained in:
machiav3lli 2022-06-18 03:17:44 +02:00
parent fa94cae1d6
commit cee71e9335
2 changed files with 11 additions and 4 deletions

View File

@ -17,6 +17,8 @@ import androidx.compose.material3.Surface
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
@ -32,8 +34,11 @@ fun RepositoryItem(
onClick: (Repository) -> Unit = {}, onClick: (Repository) -> Unit = {},
onLongClick: (Repository) -> Unit = {} onLongClick: (Repository) -> Unit = {}
) { ) {
var (isEnabled, enable) = remember(repository.enabled) {
mutableStateOf(repository.enabled)
}
val backgroundColor by animateColorAsState( val backgroundColor by animateColorAsState(
targetValue = if (repository.enabled) MaterialTheme.colorScheme.primaryContainer targetValue = if (isEnabled) MaterialTheme.colorScheme.primaryContainer
else MaterialTheme.colorScheme.background else MaterialTheme.colorScheme.background
) )
@ -43,7 +48,10 @@ fun RepositoryItem(
.fillMaxWidth() .fillMaxWidth()
.clip(MaterialTheme.shapes.large) .clip(MaterialTheme.shapes.large)
.combinedClickable( .combinedClickable(
onClick = { onClick(repository) }, onClick = {
enable(!isEnabled)
onClick(repository.copy(enabled = !repository.enabled))
},
onLongClick = { onLongClick(repository) } onLongClick = { onLongClick(repository) }
), ),
color = backgroundColor, color = backgroundColor,
@ -61,7 +69,7 @@ fun RepositoryItem(
repositoryName = repository.name, repositoryName = repository.name,
repositoryDescription = repository.description repositoryDescription = repository.description
) )
AnimatedVisibility(visible = repository.enabled) { AnimatedVisibility(visible = isEnabled) {
Icon( Icon(
imageVector = Icons.Default.Done, imageVector = Icons.Default.Done,
contentDescription = "Repository Enabled" contentDescription = "Repository Enabled"

View File

@ -119,7 +119,6 @@ class PrefsRepositoriesFragment : BaseNavFragment() {
RepositoriesRecycler( RepositoriesRecycler(
repositoriesList = repos?.sortedBy { repo -> !repo.enabled }, repositoriesList = repos?.sortedBy { repo -> !repo.enabled },
onClick = { repo -> onClick = { repo ->
repo.enabled = !repo.enabled
GlobalScope.launch(Dispatchers.IO) { GlobalScope.launch(Dispatchers.IO) {
syncConnection.binder?.setEnabled(repo, repo.enabled) syncConnection.binder?.setEnabled(repo, repo.enabled)
} }