@@ -2,14 +2,17 @@ package cz.frantisekmasa.wfrp_master.common.core.ui.primitives
22
33import androidx.compose.foundation.BorderStroke
44import androidx.compose.foundation.clickable
5+ import androidx.compose.foundation.layout.Arrangement
56import androidx.compose.foundation.layout.Row
67import androidx.compose.foundation.layout.padding
78import androidx.compose.material.Card
89import androidx.compose.material.Icon
10+ import androidx.compose.material.IconButton
911import androidx.compose.material.MaterialTheme
1012import androidx.compose.material.Text
1113import androidx.compose.material.TextButton
1214import androidx.compose.material.icons.Icons
15+ import androidx.compose.material.icons.rounded.Close
1316import androidx.compose.material.icons.rounded.Highlight
1417import androidx.compose.runtime.Composable
1518import androidx.compose.runtime.getValue
@@ -19,11 +22,13 @@ import androidx.compose.runtime.rememberCoroutineScope
1922import androidx.compose.runtime.setValue
2023import androidx.compose.ui.Alignment
2124import androidx.compose.ui.Modifier
25+ import androidx.compose.ui.graphics.Shape
2226import androidx.compose.ui.text.font.FontStyle
2327import androidx.compose.ui.unit.dp
2428import cz.frantisekmasa.wfrp_master.common.Str
2529import cz.frantisekmasa.wfrp_master.common.core.domain.NamedEnum
2630import cz.frantisekmasa.wfrp_master.common.core.domain.localizedName
31+ import cz.frantisekmasa.wfrp_master.common.core.shared.rememberUrlOpener
2732import cz.frantisekmasa.wfrp_master.common.core.tips.DismissedUserTipsHolder
2833import cz.frantisekmasa.wfrp_master.common.core.ui.dialogs.AlertDialog
2934import cz.frantisekmasa.wfrp_master.common.core.ui.flow.collectWithLifecycle
@@ -37,6 +42,7 @@ import org.kodein.di.compose.rememberInstance
3742fun UserTipCard (
3843 tip : UserTip ,
3944 modifier : Modifier = Modifier ,
45+ shape : Shape = MaterialTheme .shapes.medium,
4046) {
4147 val dismissedTipsHolder: DismissedUserTipsHolder by rememberInstance()
4248 val dismissedTips = dismissedTipsHolder.dismissedTips.collectWithLifecycle(null ).value
@@ -85,30 +91,53 @@ fun UserTipCard(
8591 val isLightTheme = MaterialTheme .colors.isLight
8692
8793 Card (
94+ shape = shape,
8895 backgroundColor =
8996 if (isLightTheme) {
9097 Theme .fixedColors.warning
9198 } else {
9299 MaterialTheme .colors.surface
93100 },
94101 border = if (isLightTheme) null else BorderStroke (1 .dp, Theme .fixedColors.warning),
95- modifier = modifier.clickable { dialogVisible = true },
96102 ) {
103+ val urlOpener = rememberUrlOpener()
97104 Row (
98105 verticalAlignment = Alignment .CenterVertically ,
99- modifier = Modifier .padding(Spacing .small),
106+ horizontalArrangement = Arrangement .SpaceBetween ,
107+ modifier =
108+ modifier
109+ .let {
110+ if (tip.link != null ) {
111+ it.clickable { urlOpener.open(tip.link, isGooglePlayLink = false ) }
112+ } else {
113+ it
114+ }
115+ }
116+ .padding(Spacing .small),
100117 ) {
101- Icon (Icons .Rounded .Highlight , null , Modifier .padding(end = Spacing .medium))
102- Text (
103- tip.localizedName,
104- style = MaterialTheme .typography.body2,
105- fontStyle = FontStyle .Italic ,
106- )
118+ Row (
119+ verticalAlignment = Alignment .CenterVertically ,
120+ modifier = Modifier .padding(Spacing .small),
121+ ) {
122+ Icon (Icons .Rounded .Highlight , null , Modifier .padding(end = Spacing .medium))
123+ Text (
124+ tip.localizedName,
125+ style = MaterialTheme .typography.body2,
126+ fontStyle = FontStyle .Italic ,
127+ )
128+ }
129+ IconButton (onClick = { dialogVisible = true }) {
130+ Icon (Icons .Rounded .Close , stringResource(Str .common_ui_button_dismiss))
131+ }
107132 }
108133 }
109134}
110135
111- enum class UserTip (override val translatableName : StringResource ) : NamedEnum {
136+ enum class UserTip (
137+ override val translatableName : StringResource ,
138+ val link : String? = null ,
139+ ) : NamedEnum {
112140 ARMOUR_TRAPPINGS (Str .armour_tip_trappings),
113141 COMPENDIUM_LINK_MOVED (Str .parties_messages_compendium_card_moved),
142+ FEEDBACK_FORM (Str .common_ui_tip_feedback_form, " https://forms.gle/YJEECqLbn6sZWYCu9" ),
114143}
0 commit comments