feat(bulk-favorite): Show progress indicator when running bulk-favorite (#923)

* Show progress indicator when running `bulk-favorite`

* Deduplicate action title
This commit is contained in:
Cuong-Tran 2025-05-26 15:25:09 +07:00 committed by GitHub
parent 262c6315fd
commit cfa9f6bfef
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,11 +1,14 @@
package eu.kanade.presentation.browse.components package eu.kanade.presentation.browse.components
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Checklist import androidx.compose.material.icons.outlined.Checklist
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import cafe.adriel.voyager.core.model.rememberScreenModel import cafe.adriel.voyager.core.model.rememberScreenModel
import cafe.adriel.voyager.core.screen.Screen import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.LocalNavigator
@ -223,9 +226,23 @@ private fun BulkAllowDuplicateDialog(
fun bulkSelectionButton( fun bulkSelectionButton(
isRunning: Boolean, isRunning: Boolean,
toggleSelectionMode: () -> Unit, toggleSelectionMode: () -> Unit,
) = AppBar.Action( ): AppBar.AppBarAction {
title = stringResource(KMR.strings.action_bulk_select), val title = stringResource(KMR.strings.action_bulk_select)
icon = Icons.Outlined.Checklist, return if (isRunning) {
iconTint = MaterialTheme.colorScheme.primary.takeIf { isRunning }, AppBar.ActionCompose(
onClick = toggleSelectionMode, title = title,
) ) {
CircularProgressIndicator(
modifier = Modifier
.size(24.dp),
strokeWidth = 2.dp,
)
}
} else {
AppBar.Action(
title = title,
icon = Icons.Outlined.Checklist,
onClick = toggleSelectionMode,
)
}
}