DeviceSpoofFragment: Drop dependency upon kovenant

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-07-18 20:19:34 +05:30
parent 4b26454ea0
commit 54824485fa
2 changed files with 37 additions and 16 deletions

View File

@@ -23,19 +23,20 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.providers.NativeDeviceInfoProvider import com.aurora.store.data.providers.NativeDeviceInfoProvider
import com.aurora.store.data.providers.SpoofDeviceProvider
import com.aurora.store.data.providers.SpoofProvider import com.aurora.store.data.providers.SpoofProvider
import com.aurora.store.databinding.FragmentGenericRecyclerBinding import com.aurora.store.databinding.FragmentGenericRecyclerBinding
import com.aurora.store.util.Log
import com.aurora.store.view.epoxy.views.preference.DeviceViewModel_ import com.aurora.store.view.epoxy.views.preference.DeviceViewModel_
import com.aurora.store.view.ui.commons.BaseFragment import com.aurora.store.view.ui.commons.BaseFragment
import nl.komponents.kovenant.task import com.aurora.store.viewmodel.spoof.SpoofViewModel
import nl.komponents.kovenant.ui.failUi
import nl.komponents.kovenant.ui.successUi
import java.util.* import java.util.*
import kotlinx.coroutines.launch
class DeviceSpoofFragment : BaseFragment() { class DeviceSpoofFragment : BaseFragment() {
@@ -45,6 +46,8 @@ class DeviceSpoofFragment : BaseFragment() {
private var properties: Properties = Properties() private var properties: Properties = Properties()
private val viewModel: SpoofViewModel by viewModels()
companion object { companion object {
@JvmStatic @JvmStatic
fun newInstance(): DeviceSpoofFragment { fun newInstance(): DeviceSpoofFragment {
@@ -79,13 +82,12 @@ class DeviceSpoofFragment : BaseFragment() {
if (spoofProvider.isDeviceSpoofEnabled()) if (spoofProvider.isDeviceSpoofEnabled())
properties = spoofProvider.getSpoofDeviceProperties() properties = spoofProvider.getSpoofDeviceProperties()
task { viewLifecycleOwner.lifecycleScope.launch {
fetchAvailableDevices() repeatOnLifecycle(Lifecycle.State.STARTED) {
} successUi { viewModel.availableDevices.collect { updateController(it) }
updateController(it) }
} failUi {
Log.e("Could not get spoof device properties")
} }
viewModel.fetchAvailableDevices(view.context)
} }
private fun updateController(locales: List<Properties>) { private fun updateController(locales: List<Properties>) {
@@ -115,10 +117,6 @@ class DeviceSpoofFragment : BaseFragment() {
} }
} }
private fun fetchAvailableDevices(): List<Properties> {
return SpoofDeviceProvider.with(requireContext()).availableDevice
}
private fun saveSelection(properties: Properties) { private fun saveSelection(properties: Properties) {
requireContext().toast(R.string.spoof_apply) requireContext().toast(R.string.spoof_apply)
spoofProvider.setSpoofDeviceProperties(properties) spoofProvider.setSpoofDeviceProperties(properties)

View File

@@ -0,0 +1,23 @@
package com.aurora.store.viewmodel.spoof
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.aurora.store.data.providers.SpoofDeviceProvider
import java.util.Properties
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
class SpoofViewModel: ViewModel() {
private val _availableDevices: MutableStateFlow<List<Properties>> = MutableStateFlow(emptyList())
val availableDevices = _availableDevices.asStateFlow()
fun fetchAvailableDevices(context: Context) {
viewModelScope.launch(Dispatchers.IO) {
_availableDevices.value = SpoofDeviceProvider.with(context).availableDevice
}
}
}