summaryrefslogtreecommitdiffstats
path: root/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt91
1 files changed, 35 insertions, 56 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
index 872553ac4..110aa2960 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddonsFragment.kt
@@ -3,7 +3,6 @@
package org.yuzu.yuzu_emu.fragments
-import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
@@ -16,9 +15,6 @@ import androidx.core.view.updatePadding
import androidx.documentfile.provider.DocumentFile
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
-import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.lifecycleScope
-import androidx.lifecycle.repeatOnLifecycle
import androidx.navigation.findNavController
import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.LinearLayoutManager
@@ -32,6 +28,7 @@ import org.yuzu.yuzu_emu.model.HomeViewModel
import org.yuzu.yuzu_emu.utils.AddonUtil
import org.yuzu.yuzu_emu.utils.FileUtil.copyFilesTo
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
+import org.yuzu.yuzu_emu.utils.collect
import java.io.File
class AddonsFragment : Fragment() {
@@ -60,8 +57,6 @@ class AddonsFragment : Fragment() {
return binding.root
}
- // This is using the correct scope, lint is just acting up
- @SuppressLint("UnsafeRepeatOnLifecycleDetector")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
homeViewModel.setNavigationVisibility(visible = false, animated = false)
@@ -78,57 +73,41 @@ class AddonsFragment : Fragment() {
adapter = AddonAdapter(addonViewModel)
}
- viewLifecycleOwner.lifecycleScope.apply {
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- addonViewModel.addonList.collect {
- (binding.listAddons.adapter as AddonAdapter).submitList(it)
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- addonViewModel.showModInstallPicker.collect {
- if (it) {
- installAddon.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data)
- addonViewModel.showModInstallPicker(false)
- }
- }
- }
- }
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- addonViewModel.showModNoticeDialog.collect {
- if (it) {
- MessageDialogFragment.newInstance(
- requireActivity(),
- titleId = R.string.addon_notice,
- descriptionId = R.string.addon_notice_description,
- dismissible = false,
- positiveAction = { addonViewModel.showModInstallPicker(true) },
- negativeAction = {},
- negativeButtonTitleId = R.string.close
- ).show(parentFragmentManager, MessageDialogFragment.TAG)
- addonViewModel.showModNoticeDialog(false)
- }
- }
- }
+ addonViewModel.addonList.collect(viewLifecycleOwner) {
+ (binding.listAddons.adapter as AddonAdapter).submitList(it)
+ }
+ addonViewModel.showModInstallPicker.collect(
+ viewLifecycleOwner,
+ resetState = { addonViewModel.showModInstallPicker(false) }
+ ) { if (it) installAddon.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data) }
+ addonViewModel.showModNoticeDialog.collect(
+ viewLifecycleOwner,
+ resetState = { addonViewModel.showModNoticeDialog(false) }
+ ) {
+ if (it) {
+ MessageDialogFragment.newInstance(
+ requireActivity(),
+ titleId = R.string.addon_notice,
+ descriptionId = R.string.addon_notice_description,
+ dismissible = false,
+ positiveAction = { addonViewModel.showModInstallPicker(true) },
+ negativeAction = {},
+ negativeButtonTitleId = R.string.close
+ ).show(parentFragmentManager, MessageDialogFragment.TAG)
}
- launch {
- repeatOnLifecycle(Lifecycle.State.STARTED) {
- addonViewModel.addonToDelete.collect {
- if (it != null) {
- MessageDialogFragment.newInstance(
- requireActivity(),
- titleId = R.string.confirm_uninstall,
- descriptionId = R.string.confirm_uninstall_description,
- positiveAction = { addonViewModel.onDeleteAddon(it) },
- negativeAction = {}
- ).show(parentFragmentManager, MessageDialogFragment.TAG)
- addonViewModel.setAddonToDelete(null)
- }
- }
- }
+ }
+ addonViewModel.addonToDelete.collect(
+ viewLifecycleOwner,
+ resetState = { addonViewModel.setAddonToDelete(null) }
+ ) {
+ if (it != null) {
+ MessageDialogFragment.newInstance(
+ requireActivity(),
+ titleId = R.string.confirm_uninstall,
+ descriptionId = R.string.confirm_uninstall_description,
+ positiveAction = { addonViewModel.onDeleteAddon(it) },
+ negativeAction = {}
+ ).show(parentFragmentManager, MessageDialogFragment.TAG)
}
}