Skip to content

Commit be488e9

Browse files
committed
refactor: code duplication
1 parent 2da93c1 commit be488e9

File tree

1 file changed

+43
-28
lines changed

1 file changed

+43
-28
lines changed

app/src/main/java/to/bitkit/ui/components/RectangleButton.kt

Lines changed: 43 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import androidx.compose.ui.Modifier
2222
import androidx.compose.ui.draw.alpha
2323
import androidx.compose.ui.draw.clip
2424
import androidx.compose.ui.graphics.Color
25+
import androidx.compose.ui.graphics.painter.Painter
2526
import androidx.compose.ui.graphics.vector.ImageVector
2627
import androidx.compose.ui.res.painterResource
2728
import androidx.compose.ui.tooling.preview.Preview
@@ -57,43 +58,57 @@ fun RectangleButton(
5758
.fillMaxWidth()
5859
) {
5960
icon?.let {
60-
Box(
61-
modifier = Modifier
62-
.clip(CircleShape)
63-
.size(40.dp)
64-
.background(Colors.Black),
65-
contentAlignment = Alignment.Center
66-
) {
67-
Icon(
68-
painter = painterResource(it),
69-
contentDescription = null,
70-
tint = iconTint,
71-
modifier = Modifier.size(iconSize),
72-
)
73-
}
61+
CircularIcon(
62+
painter = painterResource(it),
63+
iconTint = iconTint,
64+
iconSize = iconSize
65+
)
7466
}
7567
imageVector?.let {
76-
Box(
77-
modifier = Modifier
78-
.clip(CircleShape)
79-
.size(40.dp)
80-
.background(Colors.Black),
81-
contentAlignment = Alignment.Center
82-
) {
83-
Icon(
84-
imageVector = it,
85-
contentDescription = null,
86-
tint = iconTint,
87-
modifier = Modifier.size(iconSize),
88-
)
89-
}
68+
CircularIcon(
69+
imageVector = it,
70+
iconTint = iconTint,
71+
iconSize = iconSize
72+
)
9073
}
9174
HorizontalSpacer(16.dp)
9275
BodyMSB(text = label, color = Colors.White)
9376
FillWidth()
9477
}
9578
}
9679

80+
@Composable
81+
private fun CircularIcon(
82+
painter: Painter? = null,
83+
imageVector: ImageVector? = null,
84+
iconTint: Color,
85+
iconSize: Dp,
86+
) {
87+
Box(
88+
modifier = Modifier
89+
.clip(CircleShape)
90+
.size(40.dp)
91+
.background(Colors.Black),
92+
contentAlignment = Alignment.Center
93+
) {
94+
when {
95+
painter != null -> Icon(
96+
painter = painter,
97+
contentDescription = null,
98+
tint = iconTint,
99+
modifier = Modifier.size(iconSize),
100+
)
101+
102+
imageVector != null -> Icon(
103+
imageVector = imageVector,
104+
contentDescription = null,
105+
tint = iconTint,
106+
modifier = Modifier.size(iconSize),
107+
)
108+
}
109+
}
110+
}
111+
97112
@Preview
98113
@Composable
99114
private fun RectangleButtonPreview() {

0 commit comments

Comments
 (0)