From ac4102d5cd0a8cf4d3cfae2975913f447ccc2250 Mon Sep 17 00:00:00 2001
From: Myzel394 <50424412+Myzel394@users.noreply.github.com>
Date: Mon, 23 Oct 2023 18:22:49 +0200
Subject: [PATCH] feat: Add CustomNotificationTile.kt to SettingsScreen
---
.../java/app/myzel394/alibi/db/AppSettings.kt | 3 +-
.../atoms/CustomNotificationTile.kt | 53 +++++++++++++++++++
.../alibi/ui/screens/SettingsScreen.kt | 2 +
app/src/main/res/values/strings.xml | 3 ++
4 files changed, 60 insertions(+), 1 deletion(-)
create mode 100644 app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/CustomNotificationTile.kt
diff --git a/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt b/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt
index cda7f9a..be44487 100644
--- a/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt
+++ b/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt
@@ -16,7 +16,7 @@ import java.time.format.DateTimeFormatter.ISO_DATE_TIME
@Serializable
data class AppSettings(
val audioRecorderSettings: AudioRecorderSettings = AudioRecorderSettings(),
- val notificationSettings: NotificationSettings = NotificationSettings.fromPreset(NotificationSettings.Preset.Default),
+ val notificationSettings: NotificationSettings? = null,
val hasSeenOnboarding: Boolean = false,
val showAdvancedSettings: Boolean = false,
val theme: Theme = Theme.SYSTEM,
@@ -433,6 +433,7 @@ data class NotificationSettings(
R.string.ui_audioRecorder_state_recording_description,
true,
)
+
data object Weather : Preset(
R.string.ui_audioRecorder_state_recording_fake_weather_title,
R.string.ui_audioRecorder_state_recording_fake_weather_description,
diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/CustomNotificationTile.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/CustomNotificationTile.kt
new file mode 100644
index 0000000..288d88c
--- /dev/null
+++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/CustomNotificationTile.kt
@@ -0,0 +1,53 @@
+package app.myzel394.alibi.ui.components.SettingsScreen.atoms
+
+import androidx.compose.foundation.clickable
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.ChevronRight
+import androidx.compose.material.icons.filled.Notifications
+import androidx.compose.material3.Icon
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.collectAsState
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.semantics.contentDescription
+import androidx.compose.ui.semantics.semantics
+import app.myzel394.alibi.R
+import app.myzel394.alibi.dataStore
+import app.myzel394.alibi.db.AppSettings
+import app.myzel394.alibi.ui.components.atoms.SettingsTile
+
+@Composable
+fun CustomNotificationTile() {
+ val dataStore = LocalContext.current.dataStore
+ val settings = dataStore
+ .data
+ .collectAsState(initial = AppSettings.getDefaultInstance())
+ .value
+
+ val label = if (settings.notificationSettings == null)
+ stringResource(R.string.ui_settings_option_customNotification_description_setup)
+ else stringResource(
+ R.string.ui_settings_option_customNotification_description_edit
+ )
+
+ SettingsTile(
+ firstModifier = Modifier
+ .clickable { }
+ .semantics { contentDescription = label },
+ title = stringResource(R.string.ui_settings_option_customNotification_title),
+ description = label,
+ leading = {
+ Icon(
+ Icons.Default.Notifications,
+ contentDescription = null,
+ )
+ },
+ trailing = {
+ Icon(
+ Icons.Default.ChevronRight,
+ contentDescription = null,
+ )
+ }
+ )
+}
\ No newline at end of file
diff --git a/app/src/main/java/app/myzel394/alibi/ui/screens/SettingsScreen.kt b/app/src/main/java/app/myzel394/alibi/ui/screens/SettingsScreen.kt
index 420c117..5235937 100644
--- a/app/src/main/java/app/myzel394/alibi/ui/screens/SettingsScreen.kt
+++ b/app/src/main/java/app/myzel394/alibi/ui/screens/SettingsScreen.kt
@@ -40,6 +40,7 @@ import app.myzel394.alibi.dataStore
import app.myzel394.alibi.db.AppSettings
import app.myzel394.alibi.ui.SUPPORTS_DARK_MODE_NATIVELY
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.BitrateTile
+import app.myzel394.alibi.ui.components.SettingsScreen.atoms.CustomNotificationTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.EncoderTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ForceExactMaxDurationTile
import app.myzel394.alibi.ui.components.SettingsScreen.atoms.ImportExport
@@ -145,6 +146,7 @@ fun SettingsScreen(
IntervalDurationTile()
ForceExactMaxDurationTile()
InAppLanguagePicker()
+ CustomNotificationTile()
AnimatedVisibility(visible = settings.showAdvancedSettings) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3ca07f3..abe5e8a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -71,4 +71,7 @@
Are you sure you want to import these settings? Your current settings will be overwritten!
Import settings
Settings have been imported successfully!
+ Custom Notifications
+ Setup custom recording notifications now
+ Edit recording notifications
\ No newline at end of file