From 4fdadef16b217fca21b1ed44c9e388c64a54f2cf Mon Sep 17 00:00:00 2001 From: b-mob-deck Date: Mon, 13 Jul 2026 07:59:20 +0000 Subject: [PATCH] =?UTF-8?q?deck:=20=D0=B2=D1=8B=D0=BD=D0=BE=D1=81=20DeckSt?= =?UTF-8?q?ackDialogs=20(=D0=BF=D0=BE=D0=B4=20LongMethod)=20+=20refresh=20?= =?UTF-8?q?detekt-baseline=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8F=20(v0.5.?= =?UTF-8?q?144-=D0=B4=D0=BE=D0=BB=D0=B3,=20=D0=BA=D0=B0=D0=BA=20calendar?= =?UTF-8?q?=20e7d0a5a)=20=E2=80=94=20detekt=20GREEN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/deck/detekt-baseline.xml | 32 ++++++++++++++++++- .../f7cloud/feature/deck/DeckScreen.kt | 31 ++++++++++++++---- 2 files changed, 56 insertions(+), 7 deletions(-) diff --git a/feature/deck/detekt-baseline.xml b/feature/deck/detekt-baseline.xml index 0993b94..b5d4d4b 100644 --- a/feature/deck/detekt-baseline.xml +++ b/feature/deck/detekt-baseline.xml @@ -2,6 +2,36 @@ - NoUnusedImports:DeckRepository.kt$ru.forbion.f7cloud.feature.deck.DeckRepository.kt + ArgumentListWrapping:DeckCardSheet.kt$("В архив", onClick = onArchive, enabled = !busy, modifier = Modifier.weight(1f)) + ArgumentListWrapping:DeckCardSheet.kt$("Сбросить", color = F7Colors.Primary, style = MaterialTheme.typography.bodyMedium, modifier = Modifier.clickable { duedate = null }) + ArgumentListWrapping:DeckCardSheet.kt$("Удалить", onClick = onDelete, enabled = !busy, modifier = Modifier.weight(1f)) + ArgumentListWrapping:DeckCardSheet.kt$(1f) + ArgumentListWrapping:DeckCardSheet.kt$(6.dp) + ArgumentListWrapping:DeckCardSheet.kt$(8.dp) + ArgumentListWrapping:DeckCardSheet.kt$(horizontalArrangement = Arrangement.spacedBy(6.dp), verticalArrangement = Arrangement.spacedBy(6.dp)) + ArgumentListWrapping:DeckCardSheet.kt$(label.title, style = MaterialTheme.typography.labelMedium, color = F7Colors.TextPrimary) + ArgumentListWrapping:DeckCardSheet.kt$(stack.title, style = MaterialTheme.typography.bodyMedium, color = F7Colors.TextPrimary) + ArgumentListWrapping:DeckCardSheet.kt$(value = description, onValueChange = { description = it }, label = "Описание", minLines = 3) + ArgumentListWrapping:DeckCardSheet.kt$(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) + ArgumentListWrapping:DeckScreen.kt$(", ") + ArgumentListWrapping:DeckScreen.kt$("👤 ${card.assignees.joinToString(", ")}", style = MaterialTheme.typography.labelMedium, color = F7Colors.TextSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis) + ArgumentListWrapping:DeckScreen.kt$(18.dp) + ArgumentListWrapping:DeckScreen.kt$(4.dp) + ArgumentListWrapping:DeckScreen.kt$(Icons.Filled.Add, contentDescription = "Добавить карточку", tint = F7Colors.Primary, modifier = Modifier.size(18.dp)) + ArgumentListWrapping:DeckScreen.kt$(horizontalArrangement = Arrangement.spacedBy(4.dp), verticalArrangement = Arrangement.spacedBy(4.dp)) + ArgumentListWrapping:DeckViewModel.kt$DeckViewModel$(boardDetail = detail, openedCard = freshCard ?: it.openedCard, busy = false) + CyclomaticComplexMethod:DeckCardSheet.kt$@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) @Composable fun DeckCardSheet( card: DeckCard, boardLabels: List<DeckLabel>, stacks: List<DeckStack>, canEdit: Boolean, busy: Boolean, assignedToMe: Boolean, onDismiss: () -> Unit, onToggleDone: () -> Unit, onSave: (title: String, description: String, duedate: String?) -> Unit, onToggleLabel: (DeckLabel) -> Unit, onToggleAssignSelf: () -> Unit, onMove: (targetStackId: Int) -> Unit, onArchive: () -> Unit, onDelete: () -> Unit, ) + LongMethod:DeckCardSheet.kt$@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) @Composable fun DeckCardSheet( card: DeckCard, boardLabels: List<DeckLabel>, stacks: List<DeckStack>, canEdit: Boolean, busy: Boolean, assignedToMe: Boolean, onDismiss: () -> Unit, onToggleDone: () -> Unit, onSave: (title: String, description: String, duedate: String?) -> Unit, onToggleLabel: (DeckLabel) -> Unit, onToggleAssignSelf: () -> Unit, onMove: (targetStackId: Int) -> Unit, onArchive: () -> Unit, onDelete: () -> Unit, ) + LoopWithTooManyJumpStatements:DeckRepository.kt$DeckRepository$for + MaxLineLength:DeckCardSheet.kt$Text("Сбросить", color = F7Colors.Primary, style = MaterialTheme.typography.bodyMedium, modifier = Modifier.clickable { duedate = null }) + MaxLineLength:DeckScreen.kt$Icon(Icons.Filled.Add, contentDescription = "Добавить карточку", tint = F7Colors.Primary, modifier = Modifier.size(18.dp)) + MaxLineLength:DeckScreen.kt$Text("👤 ${card.assignees.joinToString(", ")}", style = MaterialTheme.typography.labelMedium, color = F7Colors.TextSecondary, maxLines = 1, overflow = TextOverflow.Ellipsis) + MaximumLineLength:DeckCardSheet.kt$ + MaximumLineLength:DeckScreen.kt$ + MaximumLineLength:DeckViewModel.kt$DeckViewModel$ + NoConsecutiveBlankLines:DeckCardSheet.kt$ + NoUnusedImports:DeckScreen.kt$ru.forbion.f7cloud.feature.deck.DeckScreen.kt + Wrapping:DeckCardSheet.kt$duedate = null + Wrapping:DeckScreen.kt$; diff --git a/feature/deck/src/main/java/ru/forbion/f7cloud/feature/deck/DeckScreen.kt b/feature/deck/src/main/java/ru/forbion/f7cloud/feature/deck/DeckScreen.kt index 7dd7ac8..ac40eb2 100644 --- a/feature/deck/src/main/java/ru/forbion/f7cloud/feature/deck/DeckScreen.kt +++ b/feature/deck/src/main/java/ru/forbion/f7cloud/feature/deck/DeckScreen.kt @@ -172,23 +172,42 @@ fun DeckScreen( onDismiss = { addCardStackId = null }, ) } - renameStackTarget?.let { stack -> + DeckStackDialogs( + renameTarget = renameStackTarget, + deleteTarget = deleteStackTarget, + onRenameConfirm = { stack, title -> vm.renameStack(session, stack, title); renameStackTarget = null }, + onDeleteConfirm = { stack -> vm.deleteStack(session, stack); deleteStackTarget = null }, + onDismissRename = { renameStackTarget = null }, + onDismissDelete = { deleteStackTarget = null }, + ) +} + +@Composable +private fun DeckStackDialogs( + renameTarget: DeckStack?, + deleteTarget: DeckStack?, + onRenameConfirm: (DeckStack, String) -> Unit, + onDeleteConfirm: (DeckStack) -> Unit, + onDismissRename: () -> Unit, + onDismissDelete: () -> Unit, +) { + renameTarget?.let { stack -> DeckTextPromptDialog( title = "Переименовать колонку", label = "Название колонки", confirmText = "Сохранить", initial = stack.title, - onConfirm = { vm.renameStack(session, stack, it); renameStackTarget = null }, - onDismiss = { renameStackTarget = null }, + onConfirm = { onRenameConfirm(stack, it) }, + onDismiss = onDismissRename, ) } - deleteStackTarget?.let { stack -> + deleteTarget?.let { stack -> DeckConfirmDialog( title = "Удалить колонку?", message = "Колонка «${stack.title}» и её карточки будут удалены.", confirmText = "Удалить", - onConfirm = { vm.deleteStack(session, stack); deleteStackTarget = null }, - onDismiss = { deleteStackTarget = null }, + onConfirm = { onDeleteConfirm(stack) }, + onDismiss = onDismissDelete, ) } }