fix: database dialog subtitle #2254

This commit is contained in:
J-Jamet
2025-10-29 16:18:51 +01:00
parent cb679f0d59
commit d99edb6b4d
7 changed files with 55 additions and 42 deletions

View File

@@ -1,5 +1,6 @@
KeePassDX(4.2.3) KeePassDX(4.2.3)
* Fix multiple Passkey selection #2253 * Fix multiple Passkey selection #2253
* Fix database dialog subtitle #2254
KeePassDX(4.2.2) KeePassDX(4.2.2)
* Fix database merge algorithm #2223 * Fix database merge algorithm #2223

View File

@@ -95,7 +95,6 @@ abstract class DatabaseActivity : StylishActivity(), DatabaseRetrieval {
finish() finish()
} }
} }
is DatabaseViewModel.ActionState.OnDatabaseInfoChanged -> { is DatabaseViewModel.ActionState.OnDatabaseInfoChanged -> {
if (manageDatabaseInfo()) { if (manageDatabaseInfo()) {
showDatabaseChangedDialog( showDatabaseChangedDialog(
@@ -105,33 +104,28 @@ abstract class DatabaseActivity : StylishActivity(), DatabaseRetrieval {
) )
} }
} }
is DatabaseViewModel.ActionState.OnDatabaseActionRequested -> { is DatabaseViewModel.ActionState.OnDatabaseActionRequested -> {
startDatabasePermissionService( startDatabasePermissionService(
uiState.bundle, uiState.bundle,
uiState.actionTask uiState.actionTask
) )
} }
is DatabaseViewModel.ActionState.OnDatabaseActionStarted -> { is DatabaseViewModel.ActionState.OnDatabaseActionStarted -> {
progressTaskViewModel.start(uiState.progressMessage) progressTaskViewModel.show(uiState.progressMessage)
} }
is DatabaseViewModel.ActionState.OnDatabaseActionUpdated -> { is DatabaseViewModel.ActionState.OnDatabaseActionUpdated -> {
progressTaskViewModel.update(uiState.progressMessage) progressTaskViewModel.show(uiState.progressMessage)
} }
is DatabaseViewModel.ActionState.OnDatabaseActionStopped -> { is DatabaseViewModel.ActionState.OnDatabaseActionStopped -> {
progressTaskViewModel.stop() progressTaskViewModel.hide()
} }
is DatabaseViewModel.ActionState.OnDatabaseActionFinished -> { is DatabaseViewModel.ActionState.OnDatabaseActionFinished -> {
onDatabaseActionFinished( onDatabaseActionFinished(
uiState.database, uiState.database,
uiState.actionTask, uiState.actionTask,
uiState.result uiState.result
) )
progressTaskViewModel.stop() progressTaskViewModel.hide()
} }
} }
} }
@@ -142,9 +136,9 @@ abstract class DatabaseActivity : StylishActivity(), DatabaseRetrieval {
repeatOnLifecycle(Lifecycle.State.RESUMED) { repeatOnLifecycle(Lifecycle.State.RESUMED) {
progressTaskViewModel.progressTaskState.collect { state -> progressTaskViewModel.progressTaskState.collect { state ->
when (state) { when (state) {
ProgressTaskViewModel.ProgressTaskState.Start -> is ProgressTaskViewModel.ProgressTaskState.Show ->
showDialog() startDialog()
ProgressTaskViewModel.ProgressTaskState.Stop -> is ProgressTaskViewModel.ProgressTaskState.Hide ->
stopDialog() stopDialog()
} }
} }
@@ -245,7 +239,7 @@ abstract class DatabaseActivity : StylishActivity(), DatabaseRetrieval {
} }
} }
private fun showDialog() { private fun startDialog() {
lifecycleScope.launch { lifecycleScope.launch {
if (showDatabaseDialog()) { if (showDatabaseDialog()) {
if (progressTaskDialogFragment == null) { if (progressTaskDialogFragment == null) {

View File

@@ -661,7 +661,9 @@ open class DatabaseTaskNotificationService : LockNotificationService(), Progress
} }
private fun updateMessage(resId: Int) { private fun updateMessage(resId: Int) {
mProgressMessage.messageId = resId mProgressMessage = mProgressMessage.copy(
messageId = resId
)
notifyProgressMessage() notifyProgressMessage()
} }

View File

@@ -70,16 +70,35 @@ open class ProgressTaskDialogFragment : DialogFragment() {
lifecycleScope.launch { lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) { repeatOnLifecycle(Lifecycle.State.STARTED) {
progressTaskViewModel.progressMessageState.collect { state -> progressTaskViewModel.progressTaskState.collect { state ->
updateView(titleView, when (state) {
state.titleId?.let { title -> getString(title) }) is ProgressTaskViewModel.ProgressTaskState.Show -> {
updateView(messageView, val value = state.value
state.messageId?.let { message -> getString(message) }) updateView(
updateView(warningView, titleView,
state.warningId?.let { warning -> getString(warning) }) value.titleId?.let { title ->
cancelButton?.isVisible = state.cancelable != null getString(title)
cancelButton?.setOnClickListener { })
state.cancelable?.invoke() updateView(
messageView,
value.messageId?.let { message ->
getString(message)
})
updateView(
warningView,
value.warningId?.let { warning ->
getString(warning)
})
cancelButton?.apply {
isVisible = value.cancelable != null
setOnClickListener {
value.cancelable?.invoke()
}
}
}
else -> {
// Nothing here, this fragment is stopped externally
}
} }
} }
} }

View File

@@ -4,30 +4,25 @@ import androidx.lifecycle.ViewModel
import com.kunzisoft.keepass.database.ProgressMessage import com.kunzisoft.keepass.database.ProgressMessage
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.update
class ProgressTaskViewModel: ViewModel() { class ProgressTaskViewModel: ViewModel() {
private val mProgressMessageState = MutableStateFlow(ProgressMessage()) private val mProgressTaskState = MutableStateFlow<ProgressTaskState>(ProgressTaskState.Hide)
val progressMessageState: StateFlow<ProgressMessage> = mProgressMessageState
private val mProgressTaskState = MutableStateFlow<ProgressTaskState>(ProgressTaskState.Stop)
val progressTaskState: StateFlow<ProgressTaskState> = mProgressTaskState val progressTaskState: StateFlow<ProgressTaskState> = mProgressTaskState
fun update(value: ProgressMessage) { fun show(value: ProgressMessage) {
mProgressMessageState.value = value mProgressTaskState.update { currentState ->
ProgressTaskState.Show(value)
}
} }
fun start(value: ProgressMessage) { fun hide() {
mProgressTaskState.value = ProgressTaskState.Start mProgressTaskState.value = ProgressTaskState.Hide
update(value)
}
fun stop() {
mProgressTaskState.value = ProgressTaskState.Stop
} }
sealed class ProgressTaskState { sealed class ProgressTaskState {
object Start: ProgressTaskState() data class Show(val value: ProgressMessage): ProgressTaskState()
object Stop: ProgressTaskState() object Hide: ProgressTaskState()
} }
} }

View File

@@ -1 +1,2 @@
* Fix multiple Passkey selection #2253 * Fix multiple Passkey selection #2253
* Fix database dialog subtitle #2254

View File

@@ -1 +1,2 @@
* Correction de la selection multiple des Passkeys #2253 * Correction de la selection multiple des Passkeys #2253
* Correction du sous-titre du dialogue de la base de données #2254