Progress label для всех задач
This commit is contained in:
@@ -77,6 +77,7 @@ class RemoteVaultsViewModel @Inject constructor(
|
||||
dispatcher = Dispatchers.IO,
|
||||
work = { ctx ->
|
||||
try {
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_add_remote_vault))
|
||||
ctx.log(TaskLogLevel.Info, "Adding vault…")
|
||||
vaultRegistrar.register(registration)
|
||||
ctx.log(TaskLogLevel.Info, "Vault added")
|
||||
@@ -109,6 +110,7 @@ class RemoteVaultsViewModel @Inject constructor(
|
||||
dispatcher = Dispatchers.IO,
|
||||
work = { ctx ->
|
||||
try {
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_remove_remote_vault))
|
||||
ctx.log(TaskLogLevel.Info, "Removing remote vault…")
|
||||
vaultRegistrar.unregister(uuid)
|
||||
ctx.log(TaskLogLevel.Info, "Remote vault removed")
|
||||
@@ -131,6 +133,7 @@ class RemoteVaultsViewModel @Inject constructor(
|
||||
dispatcher = Dispatchers.IO,
|
||||
work = { ctx ->
|
||||
try {
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_retry_remote_vault))
|
||||
ctx.log(TaskLogLevel.Info, "Retrying remote vault connection…")
|
||||
vaultRegistrar.retry(vaultUuid)
|
||||
ctx.log(TaskLogLevel.Info, "Retry requested")
|
||||
|
||||
@@ -98,7 +98,8 @@ class TextSecretDetailsViewModel @Inject constructor(
|
||||
title = uiStrings(R.string.task_title_delete_text_secret),
|
||||
dispatcher = Dispatchers.IO,
|
||||
busyStorageUuid = storage.uuid,
|
||||
work = { _ ->
|
||||
work = { ctx ->
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_delete_text_secret))
|
||||
manageTextSecretsUseCase.delete(storage, secretId)
|
||||
},
|
||||
)
|
||||
|
||||
@@ -107,7 +107,8 @@ class TextSecretEditViewModel @Inject constructor(
|
||||
title = uiStrings(R.string.task_title_save_text_secret),
|
||||
dispatcher = Dispatchers.IO,
|
||||
busyStorageUuid = storage.uuid,
|
||||
work = { _ ->
|
||||
work = { ctx ->
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_save_text_secret))
|
||||
if (existingId == null) {
|
||||
manageTextSecretsUseCase.create(
|
||||
storageInfo = storage,
|
||||
|
||||
@@ -101,7 +101,8 @@ class TwoFaTokensViewModel @Inject constructor(
|
||||
title = uiStrings(R.string.task_title_save_2fa_token),
|
||||
dispatcher = Dispatchers.IO,
|
||||
busyStorageUuid = storage.uuid,
|
||||
work = { _ ->
|
||||
work = { ctx ->
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_save_2fa_token))
|
||||
if (existingId == null) {
|
||||
manageTwoFaTokensUseCase.create(
|
||||
storageInfo = storage,
|
||||
@@ -148,7 +149,8 @@ class TwoFaTokensViewModel @Inject constructor(
|
||||
title = uiStrings(R.string.task_title_delete_2fa_token),
|
||||
dispatcher = Dispatchers.IO,
|
||||
busyStorageUuid = storage.uuid,
|
||||
work = { _ ->
|
||||
work = { ctx ->
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_delete_2fa_token))
|
||||
manageTwoFaTokensUseCase.delete(storage, id)
|
||||
},
|
||||
)
|
||||
|
||||
@@ -183,16 +183,19 @@ private fun TaskRow(task: PipelineTask, isRunning: Boolean) {
|
||||
style = if (isRunning) MaterialTheme.typography.titleSmall
|
||||
else MaterialTheme.typography.bodyMedium,
|
||||
)
|
||||
val runningProgress = (task.state as? TaskRunState.Running)?.progress
|
||||
val progressLabel = runningProgress?.label?.takeIf { it.isNotBlank() }
|
||||
val stateLabel = when (val s = task.state) {
|
||||
TaskRunState.Queued -> stringResource(R.string.task_state_queued)
|
||||
is TaskRunState.Running -> stringResource(R.string.task_state_running)
|
||||
is TaskRunState.Running ->
|
||||
progressLabel ?: stringResource(R.string.task_state_running)
|
||||
TaskRunState.Completed -> stringResource(R.string.task_state_completed)
|
||||
TaskRunState.Cancelled -> stringResource(R.string.task_state_cancelled)
|
||||
is TaskRunState.Failed -> stringResource(R.string.task_state_failed, s.message)
|
||||
}
|
||||
Text(stateLabel, style = MaterialTheme.typography.bodySmall)
|
||||
if (task.state is TaskRunState.Running) {
|
||||
val frac = (task.state as TaskRunState.Running).progress?.fraction
|
||||
val frac = runningProgress?.fraction
|
||||
if (frac != null) {
|
||||
LinearProgressIndicator(
|
||||
progress = { frac },
|
||||
|
||||
@@ -160,6 +160,7 @@ abstract class AbstractVaultBrowserViewModel(
|
||||
dispatcher = Dispatchers.IO,
|
||||
busyStorageUuid = id,
|
||||
work = { ctx ->
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_dump_storage_log))
|
||||
storageFileManagementUseCase.setStorage(storage)
|
||||
ctx.log(TaskLogLevel.Info, "Enumerating files and directories…")
|
||||
val files: List<IFile>
|
||||
@@ -201,6 +202,7 @@ abstract class AbstractVaultBrowserViewModel(
|
||||
locksVaultStorageList = true,
|
||||
work = { ctx ->
|
||||
try {
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_create_storage))
|
||||
ctx.log(TaskLogLevel.Info, "Creating storage…")
|
||||
val uuid = resolveCreateVaultUuid()
|
||||
?: throw IllegalStateException("Vault is not available")
|
||||
@@ -235,6 +237,7 @@ abstract class AbstractVaultBrowserViewModel(
|
||||
busyStorageUuid = id,
|
||||
work = { ctx ->
|
||||
try {
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_enable_encryption))
|
||||
ctx.log(TaskLogLevel.Info, "Checking storage…")
|
||||
when (manageStoragesEncryptionUseCase.canEncrypt(storage)) {
|
||||
ManageStoragesEncryptionUseCase.CanEncryptResult.Allowed -> {
|
||||
@@ -316,6 +319,7 @@ abstract class AbstractVaultBrowserViewModel(
|
||||
busyStorageUuid = id,
|
||||
work = { ctx ->
|
||||
try {
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_close_storage))
|
||||
ctx.log(TaskLogLevel.Info, "Closing storage…")
|
||||
manageStoragesEncryptionUseCase.closeStorage(storage)
|
||||
ctx.log(TaskLogLevel.Info, "Storage closed")
|
||||
@@ -344,9 +348,12 @@ abstract class AbstractVaultBrowserViewModel(
|
||||
busyStorageUuid = id,
|
||||
work = { ctx ->
|
||||
try {
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_disable_encryption))
|
||||
ctx.log(TaskLogLevel.Info, "Disabling encryption…")
|
||||
manageStoragesEncryptionUseCase.clearAndDisableEncryption(storage) { p ->
|
||||
ctx.reportProgress(p)
|
||||
val label = p.label?.takeIf { it.isNotBlank() }
|
||||
?: uiStrings(R.string.task_progress_disable_encryption)
|
||||
ctx.reportProgress(p.fraction, label)
|
||||
}
|
||||
ctx.log(TaskLogLevel.Info, "Encryption disabled")
|
||||
_userNotifications.emit(UserNotification.TextRes(R.string.msg_encryption_disabled))
|
||||
@@ -375,6 +382,7 @@ abstract class AbstractVaultBrowserViewModel(
|
||||
busyStorageUuid = id,
|
||||
work = { ctx ->
|
||||
try {
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_rename_storage))
|
||||
ctx.log(TaskLogLevel.Info, "Renaming…")
|
||||
renameStorageUseCase.rename(storage, newName)
|
||||
ctx.log(TaskLogLevel.Info, "Renamed")
|
||||
@@ -398,6 +406,7 @@ abstract class AbstractVaultBrowserViewModel(
|
||||
locksVaultStorageList = true,
|
||||
work = { ctx ->
|
||||
try {
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_remove_storage))
|
||||
ctx.log(TaskLogLevel.Info, "Removing storage…")
|
||||
removeStorageUseCase.remove(storage)
|
||||
ctx.log(TaskLogLevel.Info, "Removed")
|
||||
@@ -448,6 +457,7 @@ abstract class AbstractVaultBrowserViewModel(
|
||||
_userNotifications.emit(UserNotification.TextRes(R.string.msg_invalid_storage_for_sync_lock))
|
||||
return@enqueue
|
||||
}
|
||||
ctx.reportProgress(null, uiStrings(R.string.task_progress_clear_sync_lock))
|
||||
ctx.log(TaskLogLevel.Info, "Clearing sync lock…")
|
||||
s.accessor.forceClearSyncLock()
|
||||
ctx.log(TaskLogLevel.Info, "Sync lock cleared")
|
||||
|
||||
@@ -124,6 +124,21 @@
|
||||
<string name="task_title_enable_encryption">Включение шифрования</string>
|
||||
<string name="task_title_open_encrypted_storage">Расшифровка и открытие хранилища</string>
|
||||
<string name="task_progress_decrypt_running">Расшифровка…</string>
|
||||
<string name="task_progress_dump_storage_log">Сканирование дерева…</string>
|
||||
<string name="task_progress_create_storage">Создание хранилища…</string>
|
||||
<string name="task_progress_enable_encryption">Шифрование…</string>
|
||||
<string name="task_progress_close_storage">Закрытие хранилища…</string>
|
||||
<string name="task_progress_disable_encryption">Очистка содержимого…</string>
|
||||
<string name="task_progress_rename_storage">Переименование…</string>
|
||||
<string name="task_progress_remove_storage">Удаление…</string>
|
||||
<string name="task_progress_clear_sync_lock">Снятие блокировки…</string>
|
||||
<string name="task_progress_add_remote_vault">Добавление…</string>
|
||||
<string name="task_progress_remove_remote_vault">Удаление…</string>
|
||||
<string name="task_progress_retry_remote_vault">Подключение…</string>
|
||||
<string name="task_progress_save_2fa_token">Сохранение…</string>
|
||||
<string name="task_progress_delete_2fa_token">Удаление…</string>
|
||||
<string name="task_progress_save_text_secret">Сохранение…</string>
|
||||
<string name="task_progress_delete_text_secret">Удаление…</string>
|
||||
<string name="task_title_close_encrypted_storage">Закрытие зашифрованного хранилища</string>
|
||||
<string name="task_title_disable_encryption">Отключение шифрования</string>
|
||||
<string name="task_title_rename_storage">Переименование хранилища</string>
|
||||
|
||||
Reference in New Issue
Block a user