UpdatesFragment: Listen to install & uninstall events

Similar logic as AppDetailsFragment to update list of updates

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-12-27 18:15:00 +05:30
parent 14c8da2db5
commit e0cda7eadf

View File

@@ -30,10 +30,13 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import com.aurora.extensions.isRAndAbove
import com.aurora.extensions.toast
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.data.event.BusEvent
import com.aurora.store.data.event.InstallerEvent
import com.aurora.store.data.room.download.Download
import com.aurora.store.databinding.FragmentUpdatesBinding
import com.aurora.store.util.PathUtil
@@ -49,6 +52,9 @@ import java.io.File
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@AndroidEntryPoint
class UpdatesFragment : BaseFragment(R.layout.fragment_updates) {
@@ -73,6 +79,11 @@ class UpdatesFragment : BaseFragment(R.layout.fragment_updates) {
if (perm) viewModel.download(app) else toast(R.string.permissions_denied)
}
override fun onStart() {
super.onStart()
EventBus.getDefault().register(this)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = FragmentUpdatesBinding.bind(view)
@@ -101,6 +112,22 @@ class UpdatesFragment : BaseFragment(R.layout.fragment_updates) {
_binding = null
}
override fun onStop() {
EventBus.getDefault().unregister(this)
super.onStop()
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onEventMainThread(event: Any) {
when (event) {
is BusEvent.InstallEvent, is BusEvent.UninstallEvent -> {
viewModel.observe()
}
else -> {}
}
}
private fun updateController(appList: Map<App, Download?>?) {
binding.recycler.withModels {
setFilterDuplicates(true)