Skip to content

Commit 612b06d

Browse files
committed
Add feedback form link
1 parent d65b87e commit 612b06d

File tree

3 files changed

+58
-10
lines changed

3 files changed

+58
-10
lines changed

common/src/commonMain/kotlin/cz/frantisekmasa/wfrp_master/common/core/ui/primitives/UserTipCard.kt

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@ package cz.frantisekmasa.wfrp_master.common.core.ui.primitives
22

33
import androidx.compose.foundation.BorderStroke
44
import androidx.compose.foundation.clickable
5+
import androidx.compose.foundation.layout.Arrangement
56
import androidx.compose.foundation.layout.Row
67
import androidx.compose.foundation.layout.padding
78
import androidx.compose.material.Card
89
import androidx.compose.material.Icon
10+
import androidx.compose.material.IconButton
911
import androidx.compose.material.MaterialTheme
1012
import androidx.compose.material.Text
1113
import androidx.compose.material.TextButton
1214
import androidx.compose.material.icons.Icons
15+
import androidx.compose.material.icons.rounded.Close
1316
import androidx.compose.material.icons.rounded.Highlight
1417
import androidx.compose.runtime.Composable
1518
import androidx.compose.runtime.getValue
@@ -19,11 +22,13 @@ import androidx.compose.runtime.rememberCoroutineScope
1922
import androidx.compose.runtime.setValue
2023
import androidx.compose.ui.Alignment
2124
import androidx.compose.ui.Modifier
25+
import androidx.compose.ui.graphics.Shape
2226
import androidx.compose.ui.text.font.FontStyle
2327
import androidx.compose.ui.unit.dp
2428
import cz.frantisekmasa.wfrp_master.common.Str
2529
import cz.frantisekmasa.wfrp_master.common.core.domain.NamedEnum
2630
import cz.frantisekmasa.wfrp_master.common.core.domain.localizedName
31+
import cz.frantisekmasa.wfrp_master.common.core.shared.rememberUrlOpener
2732
import cz.frantisekmasa.wfrp_master.common.core.tips.DismissedUserTipsHolder
2833
import cz.frantisekmasa.wfrp_master.common.core.ui.dialogs.AlertDialog
2934
import cz.frantisekmasa.wfrp_master.common.core.ui.flow.collectWithLifecycle
@@ -37,6 +42,7 @@ import org.kodein.di.compose.rememberInstance
3742
fun 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
}

common/src/commonMain/kotlin/cz/frantisekmasa/wfrp_master/common/partyList/PartyListScreen.kt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@ package cz.frantisekmasa.wfrp_master.common.partyList
33
import androidx.compose.foundation.layout.Box
44
import androidx.compose.foundation.layout.Column
55
import androidx.compose.foundation.layout.PaddingValues
6+
import androidx.compose.foundation.layout.Spacer
67
import androidx.compose.foundation.layout.fillMaxHeight
8+
import androidx.compose.foundation.layout.fillMaxWidth
9+
import androidx.compose.foundation.layout.height
710
import androidx.compose.foundation.lazy.LazyColumn
811
import androidx.compose.foundation.lazy.items
912
import androidx.compose.material.Divider
1013
import androidx.compose.material.ExtendedFloatingActionButton
1114
import androidx.compose.material.Icon
1215
import androidx.compose.material.ListItem
16+
import androidx.compose.material.MaterialTheme
1317
import androidx.compose.material.Scaffold
1418
import androidx.compose.material.Text
1519
import androidx.compose.material.TopAppBar
@@ -51,6 +55,8 @@ import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.FloatingActionsMen
5155
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.ItemIcon
5256
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.MenuState
5357
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.Spacing
58+
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.UserTip
59+
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.UserTipCard
5460
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.VISUAL_ONLY_ICON_DESCRIPTION
5561
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.rememberScreenModel
5662
import cz.frantisekmasa.wfrp_master.common.gameMaster.GameMasterScreen
@@ -252,8 +258,20 @@ fun PartyList(
252258
) {
253259
LazyColumn(
254260
Modifier.fillMaxHeight(),
255-
contentPadding = PaddingValues(top = Spacing.medium, bottom = Spacing.bottomPaddingUnderFab),
261+
contentPadding = PaddingValues(bottom = Spacing.bottomPaddingUnderFab),
256262
) {
263+
item {
264+
UserTipCard(
265+
UserTip.FEEDBACK_FORM,
266+
modifier = Modifier.fillMaxWidth(),
267+
shape = MaterialTheme.shapes.large,
268+
)
269+
}
270+
271+
item {
272+
Spacer(modifier = Modifier.height(Spacing.medium))
273+
}
274+
257275
items(parties, key = { it.id }) { item ->
258276
WithContextMenu(
259277
onClick = { onClick(item) },

common/src/commonMain/moko-resources/base/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@
295295
<string name="common_ui_markdown_supported_note">Markdown formatting is supported</string>
296296
<string name="common_ui_messages_no_items">No items</string>
297297
<string name="common_ui_select_all">Select All</string>
298+
<string name="common_ui_tip_feedback_form">Do you have 3 minutes to share feedback?</string>
298299
<string name="common_ui_units_days">days</string>
299300
<string name="common_ui_units_hours">hours</string>
300301
<string name="common_ui_units_minutes">minutes</string>

0 commit comments

Comments
 (0)