summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiel Lebeck <niel.lebeck@gmail.com>2025-02-02 11:58:45 -0800
committerNiel Lebeck <niel.lebeck@gmail.com>2025-02-02 12:24:51 -0800
commit56fd1f39d82d13cbfecd8b75937dd93bb8205e2f (patch)
treee7f7c33c816bba7867a03309668d8b1a211c3806
parent84d28a4272f53df30550b43aaafafde1a520aeb0 (diff)
Eliminate TaskViewModel's mustRestartApp field
Instead of having UserDataImportWarningDialog set an `onResultDismiss` callback that examines `mustRestartApp`, and having UserDataActivity set `mustRestartApp`, just have UserDataActivity set the callback directly. This approach is no more data-race-y than the previous approach, and it simplifies the code. (The behavior of restarting the app when the task finishes is specific to the user data import flow, and there is no reason for TaskViewModel to be directly aware of it.)
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/UserDataActivity.kt6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/UserDataImportWarningDialog.kt7
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/TaskViewModel.kt2
3 files changed, 5 insertions, 10 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/UserDataActivity.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/UserDataActivity.kt
index edf4a0a257..39ba64b657 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/UserDataActivity.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/UserDataActivity.kt
@@ -31,6 +31,7 @@ import java.io.IOException
import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream
import java.util.zip.ZipOutputStream
+import kotlin.system.exitProcess
class UserDataActivity : AppCompatActivity() {
private lateinit var taskViewModel: TaskViewModel
@@ -180,7 +181,10 @@ class UserDataActivity : AppCompatActivity() {
if (!isDolphinUserDataBackup(source))
return R.string.user_data_import_invalid_file
- taskViewModel.mustRestartApp = true
+ taskViewModel.onResultDismiss = {
+ // Restart the app to apply the imported user data.
+ exitProcess(0)
+ }
contentResolver.openInputStream(source).use { `is` ->
ZipInputStream(`is`).use { zis ->
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/UserDataImportWarningDialog.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/UserDataImportWarningDialog.kt
index 0648b7075a..5b018bee7d 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/UserDataImportWarningDialog.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/UserDataImportWarningDialog.kt
@@ -12,7 +12,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.dolphinemu.dolphinemu.R
import org.dolphinemu.dolphinemu.activities.UserDataActivity
import org.dolphinemu.dolphinemu.model.TaskViewModel
-import kotlin.system.exitProcess
class UserDataImportWarningDialog : DialogFragment() {
private lateinit var taskViewModel: TaskViewModel
@@ -37,12 +36,6 @@ class UserDataImportWarningDialog : DialogFragment() {
)
}
- taskViewModel.onResultDismiss = {
- if (taskViewModel.mustRestartApp) {
- exitProcess(0)
- }
- }
-
val taskDialog = TaskDialog()
taskDialog.arguments = taskArguments
taskDialog.show(requireActivity().supportFragmentManager, TaskDialog.TAG)
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/TaskViewModel.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/TaskViewModel.kt
index 2ebc641b83..d9568bf2a0 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/TaskViewModel.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/TaskViewModel.kt
@@ -38,7 +38,6 @@ class TaskViewModel : ViewModel() {
}
var cancelled = false
- var mustRestartApp = false
private val state = MutableLiveData<State>(NotStartedState())
@@ -57,7 +56,6 @@ class TaskViewModel : ViewModel() {
fun clear() {
state.value = NotStartedState()
cancelled = false
- mustRestartApp = false
onResultDismiss = null
}