feat: Add contact methods

Signed-off-by: Myzel394 <50424412+Myzel394@users.noreply.github.com>
This commit is contained in:
Myzel394 2024-03-22 21:08:45 +01:00
parent eb6baac503
commit 4e93ff4bb2
No known key found for this signature in database
GPG Key ID: DEC4AAB876F73185
3 changed files with 73 additions and 1 deletions

View File

@ -2,6 +2,7 @@ package app.myzel394.alibi.ui
import android.os.Build import android.os.Build
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import java.util.Base64
val BIG_PRIMARY_BUTTON_SIZE = 64.dp val BIG_PRIMARY_BUTTON_SIZE = 64.dp
val BIG_PRIMARY_BUTTON_MAX_WIDTH = 450.dp val BIG_PRIMARY_BUTTON_MAX_WIDTH = 450.dp
@ -63,3 +64,17 @@ val CRYPTO_DONATIONS = mapOf(
"Litecoin" to "LZayhTosZ9ToRvcbeR1gEDgb76Z7ZA2drN", "Litecoin" to "LZayhTosZ9ToRvcbeR1gEDgb76Z7ZA2drN",
"Filecoin" to "f1j6pm3chzhgadpf6iwmtux33jb5gccj5arkg4dsq", "Filecoin" to "f1j6pm3chzhgadpf6iwmtux33jb5gccj5arkg4dsq",
) )
// Base64encoding these values so that bots can't easily scrape them.
val b64d = Base64.getDecoder()
val CONTACT_METHODS = mapOf<String, String>(
"E-Mail" to String(b64d.decode("Z2" + "9vZ2xlLXBsYX" + "k" + "uMjlrMWFAYWxlZWFzL" + "mNvbQo=")).trim(),
"GitHub" to String(
b64d.decode(
"aHR" +
"0cHM6Ly9n" + "a" + "XRodWIuY29t" + "L015emVsMzk0L2NvbnRhY3QtbWUK"
)
).trim(),
"Mastodon" to String(b64d.decode("T" + "X" + "l6Z" + "WwzOTRAbWFzdG9kb24uc29" + "jaWFsCg" + "==")).trim(),
"Reddit" to "https://reddit.com/u/Myzel394"
)

View File

@ -1,8 +1,12 @@
package app.myzel394.alibi.ui.screens package app.myzel394.alibi.ui.screens
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -18,6 +22,7 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.automirrored.filled.OpenInNew import androidx.compose.material.icons.automirrored.filled.OpenInNew
import androidx.compose.material.icons.filled.ContentCopy
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@ -34,6 +39,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@ -43,6 +49,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import app.myzel394.alibi.BuildConfig import app.myzel394.alibi.BuildConfig
import app.myzel394.alibi.R import app.myzel394.alibi.R
import app.myzel394.alibi.ui.CONTACT_METHODS
import app.myzel394.alibi.ui.REPO_URL import app.myzel394.alibi.ui.REPO_URL
import app.myzel394.alibi.ui.TRANSLATION_HELP_URL import app.myzel394.alibi.ui.TRANSLATION_HELP_URL
import app.myzel394.alibi.ui.components.AboutScreen.atoms.DonationsTile import app.myzel394.alibi.ui.components.AboutScreen.atoms.DonationsTile
@ -125,7 +132,7 @@ fun AboutScreen(
) )
Text( Text(
stringResource(R.string.ui_about_contribute_message), stringResource(R.string.ui_about_contribute_message),
style = MaterialTheme.typography.titleMedium, style = MaterialTheme.typography.bodySmall,
) )
val githubLabel = stringResource(R.string.accessibility_open_in_browser, REPO_URL) val githubLabel = stringResource(R.string.accessibility_open_in_browser, REPO_URL)
@ -203,6 +210,54 @@ fun AboutScreen(
DonationsTile() DonationsTile()
Text(
stringResource(R.string.ui_about_support_title),
style = MaterialTheme.typography.titleMedium,
)
Text(
stringResource(R.string.ui_about_support_message),
style = MaterialTheme.typography.bodySmall,
)
Column(
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
val clipboardManager =
LocalContext.current.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
for (contact in CONTACT_METHODS) {
val name = contact.key
val uri = contact.value
Row(
modifier = Modifier
.fillMaxWidth()
.clip(MaterialTheme.shapes.medium)
.clickable {
val clip = ClipData.newPlainText("text", uri)
clipboardManager.setPrimaryClip(clip)
}
.padding(16.dp)
.horizontalScroll(rememberScrollState()),
horizontalArrangement = Arrangement.spacedBy(8.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Icon(
Icons.Default.ContentCopy,
contentDescription = null,
)
Text(
name,
style = MaterialTheme.typography.bodyMedium,
fontWeight = FontWeight.Bold,
)
Text(
uri,
fontSize = MaterialTheme.typography.bodyMedium.fontSize.times(0.5),
)
}
}
}
GPGKeyOverview() GPGKeyOverview()
} }
} }

View File

@ -219,4 +219,6 @@
<string name="ui_welcome_ready_title">You are ready!</string> <string name="ui_welcome_ready_title">You are ready!</string>
<string name="ui_welcome_ready_message">You are ready to start using Alibi! Go ahead and try it out!</string> <string name="ui_welcome_ready_message">You are ready to start using Alibi! Go ahead and try it out!</string>
<string name="ui_welcome_ready_start">Start Alibi</string> <string name="ui_welcome_ready_start">Start Alibi</string>
<string name="ui_about_support_title">Get Support</string>
<string name="ui_about_support_message">If you have any questions, feedback or face any issues, please don\'t hesitate to contact me. I\'m happy to help you! Below is a list of ways to get in touch with me:</string>
</resources> </resources>