diff --git a/app/src/main/java/eu/darken/capod/common/debug/recording/ui/RecorderActivity.kt b/app/src/main/java/eu/darken/capod/common/debug/recording/ui/RecorderActivity.kt
index 0fa3b331..efcb0ad3 100644
--- a/app/src/main/java/eu/darken/capod/common/debug/recording/ui/RecorderActivity.kt
+++ b/app/src/main/java/eu/darken/capod/common/debug/recording/ui/RecorderActivity.kt
@@ -13,6 +13,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
+import androidx.lifecycle.compose.LifecycleResumeEffect
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.compose.ui.graphics.luminance
import androidx.compose.ui.graphics.toArgb
@@ -56,15 +57,47 @@ class RecorderActivity : Activity2() {
insetsController.isAppearanceLightNavigationBars = useDarkIcons
}
+ var hasShared by remember { mutableStateOf(false) }
+
LaunchedEffect(Unit) {
vm.events.collect { event ->
when (event) {
- is RecorderActivityVM.Event.ShareIntent -> startActivity(event.intent)
+ is RecorderActivityVM.Event.ShareIntent -> {
+ hasShared = true
+ startActivity(event.intent)
+ }
is RecorderActivityVM.Event.Finish -> finish()
}
}
}
+ var showSentConfirm by remember { mutableStateOf(false) }
+
+ LifecycleResumeEffect(hasShared) {
+ if (hasShared) {
+ showSentConfirm = true
+ hasShared = false
+ }
+ onPauseOrDispose {}
+ }
+
+ if (showSentConfirm) {
+ LaunchedEffect(Unit) {
+ MaterialAlertDialogBuilder(this@RecorderActivity).apply {
+ setTitle(R.string.support_debuglog_sent_title)
+ setMessage(R.string.support_debuglog_sent_message)
+ setPositiveButton(R.string.general_done_action) { _, _ ->
+ showSentConfirm = false
+ vm.discard()
+ }
+ setNegativeButton(R.string.general_cancel_action) { _, _ ->
+ showSentConfirm = false
+ }
+ setOnCancelListener { showSentConfirm = false }
+ }.show()
+ }
+ }
+
var showDeleteConfirm by remember { mutableStateOf(false) }
if (showDeleteConfirm) {
diff --git a/app/src/main/java/eu/darken/capod/main/ui/settings/support/contactform/ContactFormScreen.kt b/app/src/main/java/eu/darken/capod/main/ui/settings/support/contactform/ContactFormScreen.kt
index ea25e312..e096ddb6 100644
--- a/app/src/main/java/eu/darken/capod/main/ui/settings/support/contactform/ContactFormScreen.kt
+++ b/app/src/main/java/eu/darken/capod/main/ui/settings/support/contactform/ContactFormScreen.kt
@@ -69,13 +69,37 @@ fun ContactFormScreenHost(vm: ContactFormViewModel = hiltViewModel()) {
ErrorEventHandler(vm)
NavigationEventHandler(vm)
- LifecycleResumeEffect(Unit) {
+ val context = LocalContext.current
+ val snackbarHostState = remember { SnackbarHostState() }
+
+ var hasSentEmail by remember { mutableStateOf(false) }
+ var showSentConfirm by remember { mutableStateOf(false) }
+
+ LifecycleResumeEffect(hasSentEmail) {
vm.refreshLogSessions()
+ if (hasSentEmail) {
+ showSentConfirm = true
+ hasSentEmail = false
+ }
onPauseOrDispose {}
}
- val context = LocalContext.current
- val snackbarHostState = remember { SnackbarHostState() }
+ if (showSentConfirm) {
+ LaunchedEffect(Unit) {
+ MaterialAlertDialogBuilder(context).apply {
+ setTitle(R.string.support_contact_sent_title)
+ setMessage(R.string.support_contact_sent_message)
+ setPositiveButton(R.string.general_done_action) { _, _ ->
+ showSentConfirm = false
+ vm.confirmSent()
+ }
+ setNegativeButton(R.string.general_cancel_action) { _, _ ->
+ showSentConfirm = false
+ }
+ setOnCancelListener { showSentConfirm = false }
+ }.show()
+ }
+ }
var showShortRecordingWarning by remember { mutableStateOf(false) }
@@ -84,8 +108,10 @@ fun ContactFormScreenHost(vm: ContactFormViewModel = hiltViewModel()) {
when (event) {
is ContactFormViewModel.Event.OpenEmail -> {
try {
+ hasSentEmail = true
context.startActivity(event.intent)
} catch (e: ActivityNotFoundException) {
+ hasSentEmail = false
snackbarHostState.showSnackbar(
context.getString(R.string.support_contact_no_email_app)
)
diff --git a/app/src/main/java/eu/darken/capod/main/ui/settings/support/contactform/ContactFormViewModel.kt b/app/src/main/java/eu/darken/capod/main/ui/settings/support/contactform/ContactFormViewModel.kt
index ebe207cf..fcf6272b 100644
--- a/app/src/main/java/eu/darken/capod/main/ui/settings/support/contactform/ContactFormViewModel.kt
+++ b/app/src/main/java/eu/darken/capod/main/ui/settings/support/contactform/ContactFormViewModel.kt
@@ -151,6 +151,15 @@ class ContactFormViewModel @Inject constructor(
if (result != null) autoSelectSessionId = result.sessionId
}
+ fun confirmSent() = launch {
+ val selectedId = stater.value().selectedSessionId
+ if (selectedId != null) {
+ log(TAG) { "confirmSent() deleting session $selectedId" }
+ sessionManager.deleteSession(selectedId)
+ }
+ navUp()
+ }
+
fun send() = launch {
val currentState = stater.value()
if (!currentState.canSend) return@launch
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3a2d5f6f..99c1d3be 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -399,4 +399,10 @@
Delete debug log?
This debug log will be permanently deleted.
+
+ Log sent?
+ Was the debug log sent successfully? The log will be deleted.
+ Email sent?
+ Was the email sent successfully? The attached debug log will be deleted.
+
\ No newline at end of file