diff --git a/app/src/main/java/org/tasks/dialogs/ExportTasksDialog.kt b/app/src/main/java/org/tasks/dialogs/ExportTasksDialog.kt index ddd7c2f1d..17959f490 100644 --- a/app/src/main/java/org/tasks/dialogs/ExportTasksDialog.kt +++ b/app/src/main/java/org/tasks/dialogs/ExportTasksDialog.kt @@ -1,9 +1,12 @@ package org.tasks.dialogs +import android.app.Activity.RESULT_OK import android.app.Dialog import android.app.ProgressDialog +import android.content.DialogInterface import android.os.Bundle import androidx.fragment.app.DialogFragment +import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.NonCancellable @@ -31,9 +34,15 @@ class ExportTasksDialog : DialogFragment() { return progressDialog } + override fun onDismiss(dialog: DialogInterface) { + super.onDismiss(dialog) + + targetFragment?.onActivityResult(targetRequestCode, RESULT_OK, null) + } + companion object { - fun newExportTasksDialog(): ExportTasksDialog { - return ExportTasksDialog() + fun newExportTasksDialog(target: Fragment, rc: Int) = ExportTasksDialog().apply { + setTargetFragment(target, rc) } } } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/preferences/PreferencesViewModel.kt b/app/src/main/java/org/tasks/preferences/PreferencesViewModel.kt index 97817343c..174c3fd87 100644 --- a/app/src/main/java/org/tasks/preferences/PreferencesViewModel.kt +++ b/app/src/main/java/org/tasks/preferences/PreferencesViewModel.kt @@ -60,7 +60,7 @@ class PreferencesViewModel @ViewModelInject constructor( lastDriveBackup.value = files.firstOrNull()?.let { BackupConstants.getTimestamp(it) } } - private fun updateLocalBackup() = viewModelScope.launch { + fun updateLocalBackup() = viewModelScope.launch { val uri = preferences.backupDirectory val timestamps: List? = withContext(Dispatchers.IO) { when (uri?.scheme) { diff --git a/app/src/main/java/org/tasks/preferences/fragments/Backups.kt b/app/src/main/java/org/tasks/preferences/fragments/Backups.kt index 67e384aaf..4c19c4bf3 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/Backups.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/Backups.kt @@ -26,6 +26,7 @@ import javax.inject.Inject private const val REQUEST_CODE_BACKUP_DIR = 10001 const val REQUEST_DRIVE_BACKUP = 12002 private const val REQUEST_PICKER = 10003 +private const val REQUEST_BACKUP_NOW = 10004 private const val FRAG_TAG_EXPORT_TASKS = "frag_tag_export_tasks" private const val FRAG_TAG_IMPORT_TASKS = "frag_tag_import_tasks" @@ -55,7 +56,7 @@ class Backups : InjectingPreferenceFragment() { findPreference(R.string.backup_BAc_export) .setOnPreferenceClickListener { - ExportTasksDialog.newExportTasksDialog() + ExportTasksDialog.newExportTasksDialog(this, REQUEST_BACKUP_NOW) .show(parentFragmentManager, FRAG_TAG_EXPORT_TASKS) false } @@ -138,6 +139,7 @@ class Backups : InjectingPreferenceFragment() { ) preferences.setUri(R.string.p_backup_dir, uri) updateBackupDirectory() + viewModel.updateLocalBackup() } } else if (requestCode == REQUEST_PICKER) { if (resultCode == RESULT_OK) { @@ -154,6 +156,10 @@ class Backups : InjectingPreferenceFragment() { .show(parentFragmentManager, FRAG_TAG_IMPORT_TASKS) } } + } else if (requestCode == REQUEST_BACKUP_NOW) { + if (resultCode == RESULT_OK) { + viewModel.updateLocalBackup() + } } else { super.onActivityResult(requestCode, resultCode, data) }