improvement: Show a tip that you can generate disposable emails #724
This commit is contained in:
parent
a6eaf9178e
commit
72904b484b
|
@ -230,6 +230,9 @@
|
|||
<string name="bitwarden_premium_required">Requires Bitwarden premium</string>
|
||||
<string name="bitwarden_unofficial_server">Unofficial Bitwarden server</string>
|
||||
|
||||
<string name="pro_tip">Pro tip: <xliff:g id="tip" example="Wake up early and work a lot!">%1$s</xliff:g></string>
|
||||
<string name="pro_tip_generate_email_relay_title">Generate disposable emails for the better privacy.</string>
|
||||
|
||||
<string name="account_last_synced_at">Last synced at <xliff:g id="date" example="1 January 1970 12:30">%1$s</xliff:g></string>
|
||||
<string name="account_action_change_name_title">Change name</string>
|
||||
<string name="account_action_change_color_title">Change color</string>
|
||||
|
|
|
@ -92,6 +92,8 @@ import com.artemchep.keyguard.res.Res
|
|||
import com.artemchep.keyguard.res.*
|
||||
import com.artemchep.keyguard.ui.ContextItem
|
||||
import com.artemchep.keyguard.ui.FlatItemAction
|
||||
import com.artemchep.keyguard.ui.FlatSimpleNote
|
||||
import com.artemchep.keyguard.ui.SimpleNote
|
||||
import com.artemchep.keyguard.ui.buildContextItems
|
||||
import com.artemchep.keyguard.ui.icons.KeyguardIcons
|
||||
import com.artemchep.keyguard.ui.icons.icon
|
||||
|
@ -1700,12 +1702,40 @@ private fun RememberStateFlowScope.flowOfGeneratorType(
|
|||
typesAllFlow,
|
||||
typeFlow,
|
||||
) { allTypes, type ->
|
||||
val shouldShowEmailRelayProTip = allTypes.none { it is GeneratorType2.EmailRelay }
|
||||
|
||||
val typeTitle = translate(type.title)
|
||||
val typeItems = buildContextItems {
|
||||
var prevGroup: String? = null
|
||||
allTypes.forEachIndexed { index, item ->
|
||||
if (index > 0) {
|
||||
val groupChanged = allTypes[index - 1].group != item.group
|
||||
val groupChanged = prevGroup != item.group
|
||||
if (groupChanged) {
|
||||
if (
|
||||
prevGroup == GENERATOR_TYPE_GROUP_USERNAME &&
|
||||
shouldShowEmailRelayProTip
|
||||
) {
|
||||
val tipBody = translate(Res.string.pro_tip_generate_email_relay_title)
|
||||
val tip = translate(Res.string.pro_tip, tipBody)
|
||||
|
||||
val note = SimpleNote(
|
||||
text = tip,
|
||||
type = SimpleNote.Type.INFO,
|
||||
)
|
||||
this += ContextItem.Custom {
|
||||
FlatSimpleNote(
|
||||
type = note.type,
|
||||
text = note.text,
|
||||
onClick = {
|
||||
val route = EmailRelayListRoute
|
||||
val intent = NavigationIntent.NavigateToRoute(route)
|
||||
navigate(intent)
|
||||
},
|
||||
icon = false,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
this += when (item.group) {
|
||||
GENERATOR_TYPE_GROUP_INTEGRATION ->
|
||||
ContextItem.Section(
|
||||
|
@ -1738,6 +1768,8 @@ private fun RememberStateFlowScope.flowOfGeneratorType(
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
prevGroup = item.group
|
||||
}
|
||||
}
|
||||
GeneratorState.Type(
|
||||
|
|
|
@ -62,6 +62,7 @@ fun FlatSimpleNote(
|
|||
content: (@Composable ColumnScope.() -> Unit)? = null,
|
||||
onClick: (() -> Unit)? = null,
|
||||
enabled: Boolean = true,
|
||||
icon: Boolean = true,
|
||||
) {
|
||||
val tintColor = when (type) {
|
||||
SimpleNote.Type.OK -> MaterialTheme.colorScheme.ok
|
||||
|
@ -86,23 +87,28 @@ fun FlatSimpleNote(
|
|||
backgroundColor = surfaceColor
|
||||
.combineAlpha(DisabledEmphasisAlpha),
|
||||
contentColor = contentColor,
|
||||
leading = {
|
||||
if (leading != null) {
|
||||
leading.invoke(this)
|
||||
return@FlatItemLayout
|
||||
}
|
||||
leading = if (icon) {
|
||||
// composable
|
||||
leading@{
|
||||
if (leading != null) {
|
||||
leading.invoke(this)
|
||||
return@leading
|
||||
}
|
||||
|
||||
val imageVector = when (type) {
|
||||
SimpleNote.Type.OK -> Icons.Outlined.Check
|
||||
SimpleNote.Type.INFO -> Icons.Outlined.Info
|
||||
SimpleNote.Type.WARNING -> Icons.Outlined.Warning
|
||||
SimpleNote.Type.ERROR -> Icons.Outlined.ErrorOutline
|
||||
val imageVector = when (type) {
|
||||
SimpleNote.Type.OK -> Icons.Outlined.Check
|
||||
SimpleNote.Type.INFO -> Icons.Outlined.Info
|
||||
SimpleNote.Type.WARNING -> Icons.Outlined.Warning
|
||||
SimpleNote.Type.ERROR -> Icons.Outlined.ErrorOutline
|
||||
}
|
||||
Icon(
|
||||
imageVector = imageVector,
|
||||
contentDescription = null,
|
||||
tint = tintColor,
|
||||
)
|
||||
}
|
||||
Icon(
|
||||
imageVector = imageVector,
|
||||
contentDescription = null,
|
||||
tint = tintColor,
|
||||
)
|
||||
} else {
|
||||
null
|
||||
},
|
||||
content = {
|
||||
if (title != null) {
|
||||
|
|
Loading…
Reference in New Issue