mirror of
https://github.com/skyline-emu/skyline.git
synced 2025-02-17 00:06:20 +01:00
Use coroutines
This commit is contained in:
parent
c57d572936
commit
5c4973e141
@ -28,7 +28,12 @@ import emu.skyline.databinding.AppDialogBinding
|
|||||||
import emu.skyline.loader.LoaderResult
|
import emu.skyline.loader.LoaderResult
|
||||||
import emu.skyline.provider.DocumentsProvider
|
import emu.skyline.provider.DocumentsProvider
|
||||||
import emu.skyline.settings.SettingsActivity
|
import emu.skyline.settings.SettingsActivity
|
||||||
|
import emu.skyline.utils.ZipUtils
|
||||||
import emu.skyline.utils.serializable
|
import emu.skyline.utils.serializable
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
import java.io.BufferedOutputStream
|
import java.io.BufferedOutputStream
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
@ -64,10 +69,14 @@ class AppDialog : BottomSheetDialogFragment() {
|
|||||||
val saveFolder = File(savesFolderRoot + item.titleId)
|
val saveFolder = File(savesFolderRoot + item.titleId)
|
||||||
val inputZip = requireContext().contentResolver.openInputStream(uri)
|
val inputZip = requireContext().contentResolver.openInputStream(uri)
|
||||||
if (inputZip != null) {
|
if (inputZip != null) {
|
||||||
emu.skyline.utils.ZipUtils.Companion.unzip(inputZip, saveFolder)
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
|
ZipUtils.unzip(inputZip, saveFolder)
|
||||||
|
withContext(Dispatchers.Main){
|
||||||
binding.deleteSave.isEnabled = true
|
binding.deleteSave.isEnabled = true
|
||||||
binding.exportSave.isEnabled = true
|
binding.exportSave.isEnabled = true
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Snackbar.make(binding.root, "Zip file must have as name the TitleID of the game", Snackbar.LENGTH_LONG).show()
|
Snackbar.make(binding.root, "Zip file must have as name the TitleID of the game", Snackbar.LENGTH_LONG).show()
|
||||||
}
|
}
|
||||||
@ -152,6 +161,7 @@ class AppDialog : BottomSheetDialogFragment() {
|
|||||||
|
|
||||||
binding.exportSave.isEnabled = saveExists
|
binding.exportSave.isEnabled = saveExists
|
||||||
binding.exportSave.setOnClickListener {
|
binding.exportSave.setOnClickListener {
|
||||||
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
val saveFolder = File(saveFolderPath)
|
val saveFolder = File(saveFolderPath)
|
||||||
//val outputZipFile = File.createTempFile("out", ".zip")
|
//val outputZipFile = File.createTempFile("out", ".zip")
|
||||||
val outputZipFile = File("$saveFolderPath.zip")
|
val outputZipFile = File("$saveFolderPath.zip")
|
||||||
@ -168,14 +178,15 @@ class AppDialog : BottomSheetDialogFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
withContext(Dispatchers.Main) {
|
||||||
val file = DocumentFile.fromSingleUri(requireContext(), DocumentsContract.buildDocumentUri(DocumentsProvider.AUTHORITY, "${DocumentsProvider.ROOT_ID}/switch/nand/user/save/0000000000000000/00000000000000000000000000000001/${item.titleId}.zip"))!!
|
val file = DocumentFile.fromSingleUri(requireContext(), DocumentsContract.buildDocumentUri(DocumentsProvider.AUTHORITY, "${DocumentsProvider.ROOT_ID}/switch/nand/user/save/0000000000000000/00000000000000000000000000000001/${item.titleId}.zip"))!!
|
||||||
val intent = Intent(Intent.ACTION_SEND)
|
val intent = Intent(Intent.ACTION_SEND)
|
||||||
.setDataAndType(file.uri, "application/zip")
|
.setDataAndType(file.uri, "application/zip")
|
||||||
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||||
.putExtra(Intent.EXTRA_STREAM, file.uri)
|
.putExtra(Intent.EXTRA_STREAM, file.uri)
|
||||||
startActivity(Intent.createChooser(intent, "Share save file"))
|
startActivity(Intent.createChooser(intent, "Share save file"))
|
||||||
//outputZipFile.deleteOnExit()
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.gameTitleId.setOnLongClickListener {
|
binding.gameTitleId.setOnLongClickListener {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user