diff options
| author | Niel Lebeck <niel.lebeck@gmail.com> | 2025-02-02 11:58:45 -0800 |
|---|---|---|
| committer | Niel Lebeck <niel.lebeck@gmail.com> | 2025-02-02 12:24:51 -0800 |
| commit | 56fd1f39d82d13cbfecd8b75937dd93bb8205e2f (patch) | |
| tree | e7f7c33c816bba7867a03309668d8b1a211c3806 | |
| parent | 84d28a4272f53df30550b43aaafafde1a520aeb0 (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.)
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 } |
