mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-14 22:30:30 +05:30
fix lifecycle issue
This commit is contained in:
parent
60f2741b7d
commit
07a4838e6f
@ -1,10 +1,8 @@
|
||||
package com.github.libretube.dialogs
|
||||
|
||||
import android.app.Dialog
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import androidx.activity.result.ActivityResultLauncher
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.github.libretube.R
|
||||
@ -13,25 +11,15 @@ import com.github.libretube.databinding.DialogBackupBinding
|
||||
import com.github.libretube.db.DatabaseHolder
|
||||
import com.github.libretube.extensions.await
|
||||
import com.github.libretube.obj.BackupFile
|
||||
import com.github.libretube.util.BackupHelper
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
||||
class BackupDialog() : DialogFragment() {
|
||||
class BackupDialog(
|
||||
private val createBackupFile: (BackupFile) -> Unit
|
||||
) : DialogFragment() {
|
||||
private lateinit var binding: DialogBackupBinding
|
||||
private lateinit var createBackupFile: ActivityResultLauncher<String>
|
||||
|
||||
val backupFile = BackupFile()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
createBackupFile = registerForActivityResult(
|
||||
ActivityResultContracts.CreateDocument("application/json")
|
||||
) { uri: Uri? ->
|
||||
BackupHelper(requireContext()).advancedBackup(uri, backupFile)
|
||||
}
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
}
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val backupOptions = listOf(
|
||||
R.string.watch_history,
|
||||
@ -77,7 +65,7 @@ class BackupDialog() : DialogFragment() {
|
||||
}
|
||||
}.await()
|
||||
|
||||
createBackupFile.launch("libretube_backup.json")
|
||||
createBackupFile(backupFile)
|
||||
}
|
||||
.create()
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import com.github.libretube.R
|
||||
import com.github.libretube.activities.SettingsActivity
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.dialogs.BackupDialog
|
||||
import com.github.libretube.obj.BackupFile
|
||||
import com.github.libretube.util.BackupHelper
|
||||
import com.github.libretube.util.ImageHelper
|
||||
import com.github.libretube.util.PreferenceHelper
|
||||
@ -25,6 +26,8 @@ class AdvancedSettings : MaterialPreferenceFragment() {
|
||||
|
||||
// backup and restore database
|
||||
private lateinit var getBackupFile: ActivityResultLauncher<String>
|
||||
private lateinit var createBackupFile: ActivityResultLauncher<String>
|
||||
private var backupFile = BackupFile()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
getPrefFile =
|
||||
@ -45,6 +48,13 @@ class AdvancedSettings : MaterialPreferenceFragment() {
|
||||
) { uri: Uri? ->
|
||||
BackupHelper(requireContext()).restoreAdvancedBackup(uri)
|
||||
}
|
||||
|
||||
createBackupFile = registerForActivityResult(
|
||||
CreateDocument("application/json")
|
||||
) { uri: Uri? ->
|
||||
BackupHelper(requireContext()).advancedBackup(uri, backupFile)
|
||||
}
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
}
|
||||
|
||||
@ -83,7 +93,10 @@ class AdvancedSettings : MaterialPreferenceFragment() {
|
||||
|
||||
val advancesBackup = findPreference<Preference>("backup")
|
||||
advancesBackup?.setOnPreferenceClickListener {
|
||||
BackupDialog()
|
||||
BackupDialog {
|
||||
backupFile = it
|
||||
createBackupFile.launch("backup.json")
|
||||
}
|
||||
.show(childFragmentManager, null)
|
||||
true
|
||||
}
|
||||
|
@ -2,10 +2,12 @@ package com.github.libretube.util
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import android.util.Log
|
||||
import androidx.core.content.edit
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.fasterxml.jackson.databind.ObjectMapper
|
||||
import com.github.libretube.db.DatabaseHolder
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.query
|
||||
import com.github.libretube.obj.BackupFile
|
||||
import java.io.FileInputStream
|
||||
|
Loading…
Reference in New Issue
Block a user