diff --git a/app/build.gradle b/app/build.gradle
index 20e8e791b..51949eb77 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -22,6 +22,7 @@ android {
buildConfigField "String", "ACRA_LOGIN", "\"$login\""
buildConfigField "String", "ACRA_PASS", "\"$password\""
buildConfigField "String", "ACRA_URI", "\"$uri\""
+ buildConfigField "boolean", "GOOGLE_PLAY_BUILD", "false"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
diff --git a/app/src/main/java/dev/arkbuilders/rate/presentation/App.kt b/app/src/main/java/dev/arkbuilders/rate/presentation/App.kt
index 5c06fe33d..b659e20eb 100644
--- a/app/src/main/java/dev/arkbuilders/rate/presentation/App.kt
+++ b/app/src/main/java/dev/arkbuilders/rate/presentation/App.kt
@@ -29,7 +29,9 @@ class App : Application() {
super.onCreate()
Timber.plant(Timber.DebugTree())
DIManager.init(this)
- initAcra()
+
+ if (!BuildConfig.GOOGLE_PLAY_BUILD)
+ initAcra()
initWorker()
}
diff --git a/app/src/main/java/dev/arkbuilders/rate/presentation/pairalert/PairAlertConditionScreen.kt b/app/src/main/java/dev/arkbuilders/rate/presentation/pairalert/PairAlertConditionScreen.kt
index 5e47a3e08..40638eae6 100644
--- a/app/src/main/java/dev/arkbuilders/rate/presentation/pairalert/PairAlertConditionScreen.kt
+++ b/app/src/main/java/dev/arkbuilders/rate/presentation/pairalert/PairAlertConditionScreen.kt
@@ -14,12 +14,14 @@ import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
+import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.Button
import androidx.compose.material.Card
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.OutlinedTextField
+import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
@@ -31,16 +33,23 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.KeyboardType
+import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
+import androidx.compose.ui.window.Dialog
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
+import dev.arkbuilders.rate.R
import dev.arkbuilders.rate.data.model.PairAlertCondition
import dev.arkbuilders.rate.presentation.destinations.AddCurrencyScreenDestination
import dev.arkbuilders.rate.presentation.destinations.PairAlertConditionScreenDestination
import dev.arkbuilders.rate.presentation.shared.SharedViewModel
+import dev.arkbuilders.rate.presentation.theme.Purple500
import dev.arkbuilders.rate.presentation.utils.activityViewModel
import dev.arkbuilders.rate.utils.removeFractionalPartIfEmpty
@@ -50,8 +59,27 @@ fun PairAlertConditionScreen(
navigator: DestinationsNavigator,
viewModel: SharedViewModel = activityViewModel()
) {
+ var descDialog by remember { mutableStateOf(false) }
+
Box(modifier = Modifier.fillMaxSize()) {
LazyColumn(modifier = Modifier.fillMaxSize()) {
+ item {
+ Box(
+ modifier = Modifier.fillMaxWidth(),
+ contentAlignment = Alignment.CenterEnd
+ ) {
+ IconButton(
+ modifier = Modifier.padding(top = 16.dp, end = 8.dp),
+ onClick = { descDialog = true }
+ ) {
+ Icon(
+ painter = painterResource(R.drawable.ic_question_mark),
+ contentDescription = "",
+ tint = Purple500
+ )
+ }
+ }
+ }
items(
viewModel.pairAlertConditions,
key = { it.id }
@@ -63,6 +91,11 @@ fun PairAlertConditionScreen(
}
}
}
+
+ if (descDialog)
+ DescDialog {
+ descDialog = false
+ }
}
@Composable
@@ -205,4 +238,31 @@ private fun AddOrDeleteBtn(
Icon(Icons.Filled.Delete, "Delete")
}
}
+}
+
+@Composable
+private fun DescDialog(onDismiss: () -> Unit) {
+ Dialog(onDismissRequest = { onDismiss() }) {
+ Surface(
+ shape = RoundedCornerShape(20.dp),
+ color = Color.White
+ ) {
+ Column(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(16.dp),
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ Text(
+ text = stringResource(R.string.pair_alerts_desc),
+ textAlign = TextAlign.Center
+ )
+ Button(
+ modifier = Modifier.padding(top = 10.dp),
+ onClick = { onDismiss() }) {
+ Text(text = stringResource(R.string.ok))
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/dev/arkbuilders/rate/presentation/settings/SettingsScreen.kt b/app/src/main/java/dev/arkbuilders/rate/presentation/settings/SettingsScreen.kt
index 3d4ce44f3..56d322f99 100644
--- a/app/src/main/java/dev/arkbuilders/rate/presentation/settings/SettingsScreen.kt
+++ b/app/src/main/java/dev/arkbuilders/rate/presentation/settings/SettingsScreen.kt
@@ -2,8 +2,11 @@
package dev.arkbuilders.rate.presentation.settings
+import android.content.Intent
+import android.net.Uri
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
+import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@@ -41,14 +44,18 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
+import androidx.core.content.ContextCompat
import androidx.lifecycle.viewmodel.compose.viewModel
import com.ramcosta.composedestinations.annotation.Destination
+import dev.arkbuilders.rate.BuildConfig
import dev.arkbuilders.rate.R
import dev.arkbuilders.rate.data.preferences.PreferenceKey
import dev.arkbuilders.rate.di.DIManager
@@ -68,12 +75,39 @@ fun SettingsScreen() {
}
}
+@Composable
+private fun PrivacyPolicy() {
+ val ctx = LocalContext.current
+ val url = stringResource(id = R.string.privacy_policy_url)
+ Surface(
+ color = Color.Transparent,
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(16.dp),
+ onClick = {
+ val intent = Intent(Intent.ACTION_VIEW)
+ intent.data = Uri.parse(url)
+ ctx.startActivity(intent)
+ },
+ ) {
+ Column {
+ Text(
+ modifier = Modifier.padding(16.dp),
+ text = stringResource(id = R.string.privacy_policy),
+ style = MaterialTheme.typography.body1,
+ )
+ Divider()
+ }
+
+ }
+}
+
@Composable
private fun Settings(vm: SettingsViewModel) {
Column(
modifier = Modifier
- .verticalScroll(rememberScrollState())
.padding(16.dp)
+ .verticalScroll(rememberScrollState())
) {
SettingsGroup(name = R.string.currencies) {
SettingsNumberComp(
@@ -117,14 +151,17 @@ private fun Settings(vm: SettingsViewModel) {
)
}
SettingsGroup(name = R.string.privacy) {
- SettingsSwitchComp(
- name = R.string.crash_reports,
- state = vm.boolPrefs[PreferenceKey.CrashReport]!!
- ) { state ->
- vm.onToggle(
- PreferenceKey.CrashReport,
- state
- )
+ PrivacyPolicy()
+ if (!BuildConfig.GOOGLE_PLAY_BUILD) {
+ SettingsSwitchComp(
+ name = R.string.crash_reports,
+ state = vm.boolPrefs[PreferenceKey.CrashReport]!!
+ ) { state ->
+ vm.onToggle(
+ PreferenceKey.CrashReport,
+ state
+ )
+ }
}
}
}
@@ -245,7 +282,7 @@ fun SettingsNumberComp(
modifier = Modifier.size(24.dp)
)
}
- Spacer(modifier = Modifier.width(16.dp))
+ Spacer(modifier = Modifier.width(8.dp))
Column(modifier = Modifier.padding(8.dp)) {
Text(
text = stringResource(id = name),
diff --git a/app/src/main/res/drawable/ic_question_mark.xml b/app/src/main/res/drawable/ic_question_mark.xml
new file mode 100644
index 000000000..1d4bf0826
--- /dev/null
+++ b/app/src/main/res/drawable/ic_question_mark.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1a1b46d3c..d58d30d23 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -19,4 +19,8 @@
List
Used count
Used time
+ App in the background checks the specified exchange rates once a day and if the condition matches, then displays a notification.
+ OK
+ https://www.ark-builders.dev/apps/rate/privacy-policy
+ Privacy policy