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