Coverage Summary for Class: DeleteCategoryDialogKt (com.georgeci.moneysurfer.feature.category.manage)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| DeleteCategoryDialogKt |
100%
(1/1)
|
50%
(1/2)
|
50%
(6/12)
|
82.4%
(14/17)
|
95.3%
(204/214)
|
package com.georgeci.moneysurfer.feature.category.manage
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import com.georgeci.moneysurfer.uikit.components.SurferConfirmDialog
import com.georgeci.moneysurfer.uikit.icons.SurferIcons
import com.georgeci.moneysurfer.uikit.theme.AppTheme
import moneysurfer.feature.category.generated.resources.Res
import moneysurfer.feature.category.generated.resources.categories_manage_delete_cancel
import moneysurfer.feature.category.generated.resources.categories_manage_delete_children
import moneysurfer.feature.category.generated.resources.categories_manage_delete_confirm
import moneysurfer.feature.category.generated.resources.categories_manage_delete_message
import moneysurfer.feature.category.generated.resources.categories_manage_delete_title
import org.jetbrains.compose.resources.stringResource
/**
* [childCount] > 0 adds a line saying the children survive and move up to the root — deleting a
* parent silently rearranging part of the tree is exactly the sort of thing a confirmation
* dialog exists to say out loud.
*/
@Composable
fun DeleteCategoryDialog(
categoryName: String,
onConfirm: () -> Unit,
onDismiss: () -> Unit,
childCount: Int = 0,
) {
SurferConfirmDialog(
title = stringResource(Res.string.categories_manage_delete_title),
message = stringResource(Res.string.categories_manage_delete_message, categoryName),
detail = if (childCount > 0) {
stringResource(Res.string.categories_manage_delete_children, childCount)
} else {
null
},
confirmLabel = stringResource(Res.string.categories_manage_delete_confirm),
cancelLabel = stringResource(Res.string.categories_manage_delete_cancel),
icon = SurferIcons.Delete,
destructive = true,
onConfirm = onConfirm,
onDismiss = onDismiss,
)
}
@Preview
@Composable
private fun DeleteCategoryDialogPreview() {
AppTheme {
DeleteCategoryDialog(
categoryName = "Food",
onConfirm = {},
onDismiss = {},
childCount = 2,
)
}
}