From 54b2e9bee5cdc6d1033bee7de21a69f8cbbd4c0e Mon Sep 17 00:00:00 2001
From: Myzel394 <50424412+Myzel394@users.noreply.github.com>
Date: Sun, 22 Oct 2023 17:05:24 +0200
Subject: [PATCH] fix: Improve snackbar & add import success message
---
.../SettingsScreen/atoms/ImportExport.kt | 16 ++++++++++++++-
.../alibi/ui/screens/SettingsScreen.kt | 20 +++++++++++++++++--
app/src/main/res/values/strings.xml | 1 +
3 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/ImportExport.kt b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/ImportExport.kt
index b42888e..830d550 100644
--- a/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/ImportExport.kt
+++ b/app/src/main/java/app/myzel394/alibi/ui/components/SettingsScreen/atoms/ImportExport.kt
@@ -14,6 +14,9 @@ import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon
+import androidx.compose.material3.SnackbarDuration
+import androidx.compose.material3.SnackbarHostState
+import androidx.compose.material3.SnackbarVisuals
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
@@ -35,7 +38,9 @@ import kotlinx.coroutines.launch
import java.io.File
@Composable
-fun ImportExport() {
+fun ImportExport(
+ snackbarHostState: SnackbarHostState,
+) {
val context = LocalContext.current
val scope = rememberCoroutineScope()
@@ -60,6 +65,8 @@ fun ImportExport() {
}
if (settingsToBeImported != null) {
+ val successMessage = stringResource(R.string.ui_settings_option_import_success)
+
AlertDialog(
onDismissRequest = {
settingsToBeImported = null
@@ -84,7 +91,14 @@ fun ImportExport() {
settingsToBeImported!!
}
settingsToBeImported = null
+
+ snackbarHostState.showSnackbar(
+ message = successMessage,
+ withDismissAction = true,
+ duration = SnackbarDuration.Short,
+ )
}
+
},
) {
Icon(
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 793a601..420c117 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
@@ -16,7 +16,9 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.LargeTopAppBar
+import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
+import androidx.compose.material3.Snackbar
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
@@ -65,7 +67,21 @@ fun SettingsScreen(
)
Scaffold(
- snackbarHost = { SnackbarHost(hostState = snackbarHostState) },
+ snackbarHost = {
+ SnackbarHost(
+ hostState = snackbarHostState,
+ snackbar = {
+ Snackbar(
+ snackbarData = it,
+ containerColor = MaterialTheme.colorScheme.primaryContainer,
+ contentColor = MaterialTheme.colorScheme.onPrimaryContainer,
+ actionColor = MaterialTheme.colorScheme.onPrimaryContainer,
+ actionContentColor = MaterialTheme.colorScheme.onPrimaryContainer,
+ dismissActionContentColor = MaterialTheme.colorScheme.onPrimaryContainer,
+ )
+ }
+ )
+ },
topBar = {
LargeTopAppBar(
title = {
@@ -149,7 +165,7 @@ fun SettingsScreen(
modifier = Modifier
.fillMaxWidth(0.5f)
)
- ImportExport()
+ ImportExport(snackbarHostState = snackbarHostState)
}
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e67d141..baa7240 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -67,4 +67,5 @@
Export Settings
Are you sure you want to import these settings? Your current settings will be overwritten!
Import settings
+ Settings have been imported successfully!
\ No newline at end of file