Skip to content

Commit

Permalink
Added feedback button
Browse files Browse the repository at this point in the history
  • Loading branch information
sirekanian committed Dec 29, 2023
1 parent 12a6f5a commit 2dcc950
Showing 1 changed file with 40 additions and 16 deletions.
56 changes: 40 additions & 16 deletions app/src/main/java/org/sirekanyan/outline/ui/AboutDialog.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package org.sirekanyan.outline.ui

import android.content.Intent
import android.content.Intent.ACTION_SENDTO
import android.net.Uri
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.text.ClickableText
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Email
import androidx.compose.material.icons.filled.Info
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon
Expand All @@ -16,15 +18,20 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.text.withStyle
import androidx.compose.ui.unit.dp
import org.sirekanyan.outline.BuildConfig
import org.sirekanyan.outline.R
import org.sirekanyan.outline.ext.logDebug
import org.sirekanyan.outline.ext.showToast
import org.sirekanyan.outline.ui.icons.IconOpenInNew
import org.sirekanyan.outline.ui.icons.IconPlayStore

Expand Down Expand Up @@ -57,24 +64,41 @@ fun AboutDialogContent(onDismiss: () -> Unit) {
onDismissRequest = onDismiss,
confirmButton = {
val context = LocalContext.current
val clipboard = LocalClipboardManager.current
AboutItem(Icons.Default.Email, "Send feedback") {
val email = "[email protected]"
val intent = Intent(ACTION_SENDTO, Uri.parse("mailto:$email"))
try {
context.startActivity(intent)
} catch (exception: Exception) {
logDebug("Cannot find email app", exception)
clipboard.setText(AnnotatedString(email))
context.showToast("Email is copied")
}
}
val playUri = "https://play.google.com/store/apps/details?id=${context.packageName}"
TextButton(
onClick = {
context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(playUri)))
onDismiss()
},
modifier = Modifier.fillMaxWidth().heightIn(min = 56.dp),
border = BorderStroke(1.dp, MaterialTheme.colorScheme.primary),
) {
Icon(IconPlayStore, null, Modifier.padding(horizontal = 4.dp))
Text(
text = "Rate on Play Store",
modifier = Modifier.weight(1f).padding(horizontal = 8.dp),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
Icon(IconOpenInNew, null, Modifier.padding(horizontal = 8.dp))
AboutItem(IconPlayStore, "Rate on Play Store") {
context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(playUri)))
onDismiss()
}
},
)
}

@Composable
private fun AboutItem(icon: ImageVector, text: String, onClick: () -> Unit) {
TextButton(
onClick = onClick,
modifier = Modifier.fillMaxWidth().heightIn(min = 56.dp),
border = BorderStroke(1.dp, MaterialTheme.colorScheme.primary),
) {
Icon(icon, null, Modifier.padding(horizontal = 4.dp))
Text(
text = text,
modifier = Modifier.weight(1f).padding(horizontal = 8.dp),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
Icon(IconOpenInNew, null, Modifier.padding(horizontal = 8.dp))
}
}

0 comments on commit 2dcc950

Please sign in to comment.