Move hilt injected objects into viewmodels everywhere
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -24,6 +24,7 @@ import android.os.Bundle
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.activity.addCallback
|
import androidx.activity.addCallback
|
||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.activity.enableEdgeToEdge
|
||||||
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.WindowInsetsCompat.Type.displayCutout
|
import androidx.core.view.WindowInsetsCompat.Type.displayCutout
|
||||||
@@ -34,30 +35,23 @@ import androidx.navigation.FloatingWindow
|
|||||||
import androidx.navigation.fragment.NavHostFragment
|
import androidx.navigation.fragment.NavHostFragment
|
||||||
import androidx.navigation.ui.setupWithNavController
|
import androidx.navigation.ui.setupWithNavController
|
||||||
import com.aurora.extensions.isNAndAbove
|
import com.aurora.extensions.isNAndAbove
|
||||||
import com.aurora.store.data.helper.UpdateHelper
|
|
||||||
import com.aurora.store.data.model.NetworkStatus
|
import com.aurora.store.data.model.NetworkStatus
|
||||||
import com.aurora.store.data.receiver.MigrationReceiver
|
import com.aurora.store.data.receiver.MigrationReceiver
|
||||||
import com.aurora.store.databinding.ActivityMainBinding
|
import com.aurora.store.databinding.ActivityMainBinding
|
||||||
import com.aurora.store.util.Preferences
|
import com.aurora.store.util.Preferences
|
||||||
import com.aurora.store.util.Preferences.PREFERENCE_DEFAULT_SELECTED_TAB
|
import com.aurora.store.util.Preferences.PREFERENCE_DEFAULT_SELECTED_TAB
|
||||||
import com.aurora.store.view.ui.sheets.NetworkDialogSheet
|
import com.aurora.store.view.ui.sheets.NetworkDialogSheet
|
||||||
import com.aurora.store.data.providers.NetworkProvider
|
|
||||||
import com.aurora.store.util.PackageUtil
|
import com.aurora.store.util.PackageUtil
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import javax.inject.Inject
|
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
@Inject
|
private val viewModel: MainViewModel by viewModels()
|
||||||
lateinit var networkProvider: NetworkProvider
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
lateinit var updateHelper: UpdateHelper
|
|
||||||
|
|
||||||
private lateinit var B: ActivityMainBinding
|
private lateinit var B: ActivityMainBinding
|
||||||
|
|
||||||
@@ -91,7 +85,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
val navController = navHostFragment.navController
|
val navController = navHostFragment.navController
|
||||||
|
|
||||||
if (isNAndAbove && !PackageUtil.isTv(this)) {
|
if (isNAndAbove && !PackageUtil.isTv(this)) {
|
||||||
networkProvider.status.onEach { networkStatus ->
|
viewModel.networkProvider.status.onEach { networkStatus ->
|
||||||
when (networkStatus) {
|
when (networkStatus) {
|
||||||
NetworkStatus.AVAILABLE -> {
|
NetworkStatus.AVAILABLE -> {
|
||||||
if (!supportFragmentManager.isDestroyed && isIntroDone()) {
|
if (!supportFragmentManager.isDestroyed && isIntroDone()) {
|
||||||
@@ -152,7 +146,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
// Updates
|
// Updates
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
updateHelper.updates.collectLatest { list ->
|
viewModel.updateHelper.updates.collectLatest { list ->
|
||||||
B.navView.getOrCreateBadge(R.id.updatesFragment).apply {
|
B.navView.getOrCreateBadge(R.id.updatesFragment).apply {
|
||||||
isVisible = !list.isNullOrEmpty()
|
isVisible = !list.isNullOrEmpty()
|
||||||
number = list?.size ?: 0
|
number = list?.size ?: 0
|
||||||
|
|||||||
18
app/src/main/java/com/aurora/store/MainViewModel.kt
Normal file
18
app/src/main/java/com/aurora/store/MainViewModel.kt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.aurora.store.data.helper.UpdateHelper
|
||||||
|
import com.aurora.store.data.providers.NetworkProvider
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class MainViewModel @Inject constructor(
|
||||||
|
val networkProvider: NetworkProvider,
|
||||||
|
val updateHelper: UpdateHelper
|
||||||
|
) : ViewModel()
|
||||||
@@ -21,6 +21,7 @@ package com.aurora.store.view.ui.account
|
|||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import coil3.load
|
import coil3.load
|
||||||
import coil3.request.placeholder
|
import coil3.request.placeholder
|
||||||
@@ -31,17 +32,15 @@ import com.aurora.Constants.URL_LICENSE
|
|||||||
import com.aurora.Constants.URL_TOS
|
import com.aurora.Constants.URL_TOS
|
||||||
import com.aurora.extensions.browse
|
import com.aurora.extensions.browse
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.providers.AuthProvider
|
|
||||||
import com.aurora.store.databinding.FragmentAccountBinding
|
import com.aurora.store.databinding.FragmentAccountBinding
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
|
import com.aurora.store.viewmodel.account.AccountViewModel
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class AccountFragment : BaseFragment<FragmentAccountBinding>() {
|
class AccountFragment : BaseFragment<FragmentAccountBinding>() {
|
||||||
|
|
||||||
@Inject
|
private val viewModel: AccountViewModel by viewModels()
|
||||||
lateinit var authProvider: AuthProvider
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
@@ -56,15 +55,16 @@ class AccountFragment : BaseFragment<FragmentAccountBinding>() {
|
|||||||
binding.chipTos.setOnClickListener { browse(URL_TOS) }
|
binding.chipTos.setOnClickListener { browse(URL_TOS) }
|
||||||
}
|
}
|
||||||
|
|
||||||
authProvider.authData?.userProfile?.let {
|
viewModel.authProvider.authData?.userProfile?.let {
|
||||||
val avatar = if (authProvider.isAnonymous) R.mipmap.ic_launcher else it.artwork.url
|
val avatar =
|
||||||
|
if (viewModel.authProvider.isAnonymous) R.mipmap.ic_launcher else it.artwork.url
|
||||||
binding.imgAvatar.load(avatar) {
|
binding.imgAvatar.load(avatar) {
|
||||||
placeholder(R.drawable.bg_placeholder)
|
placeholder(R.drawable.bg_placeholder)
|
||||||
transformations(RoundedCornersTransformation(32F))
|
transformations(RoundedCornersTransformation(32F))
|
||||||
}
|
}
|
||||||
binding.txtName.text = if (authProvider.isAnonymous) "Anonymous" else it.name
|
binding.txtName.text = if (viewModel.authProvider.isAnonymous) "Anonymous" else it.name
|
||||||
binding.txtEmail.text =
|
binding.txtEmail.text =
|
||||||
if (authProvider.isAnonymous) "anonymous@gmail.com" else it.email
|
if (viewModel.authProvider.isAnonymous) "anonymous@gmail.com" else it.email
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.btnLogout.addOnClickListener {
|
binding.btnLogout.addOnClickListener {
|
||||||
|
|||||||
@@ -23,28 +23,27 @@ import android.os.Bundle
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||||
import com.aurora.store.MobileNavigationDirections
|
import com.aurora.store.MobileNavigationDirections
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.providers.AuthProvider
|
|
||||||
import com.aurora.store.databinding.FragmentAppsGamesBinding
|
import com.aurora.store.databinding.FragmentAppsGamesBinding
|
||||||
import com.aurora.store.util.Preferences
|
import com.aurora.store.util.Preferences
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
import com.aurora.store.view.ui.commons.CategoryFragment
|
import com.aurora.store.view.ui.commons.CategoryFragment
|
||||||
import com.aurora.store.view.ui.commons.ForYouFragment
|
import com.aurora.store.view.ui.commons.ForYouFragment
|
||||||
import com.aurora.store.view.ui.commons.TopChartContainerFragment
|
import com.aurora.store.view.ui.commons.TopChartContainerFragment
|
||||||
|
import com.aurora.store.viewmodel.apps.AppsContainerViewModel
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import com.google.android.material.tabs.TabLayoutMediator
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class AppsContainerFragment : BaseFragment<FragmentAppsGamesBinding>() {
|
class AppsContainerFragment : BaseFragment<FragmentAppsGamesBinding>() {
|
||||||
|
|
||||||
@Inject
|
private val viewModel: AppsContainerViewModel by viewModels()
|
||||||
lateinit var authProvider: AuthProvider
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
@@ -77,7 +76,7 @@ class AppsContainerFragment : BaseFragment<FragmentAppsGamesBinding>() {
|
|||||||
binding.pager.adapter = ViewPagerAdapter(
|
binding.pager.adapter = ViewPagerAdapter(
|
||||||
childFragmentManager,
|
childFragmentManager,
|
||||||
viewLifecycleOwner.lifecycle,
|
viewLifecycleOwner.lifecycle,
|
||||||
!authProvider.isAnonymous,
|
!viewModel.authProvider.isAnonymous,
|
||||||
isForYouEnabled
|
isForYouEnabled
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ import androidx.compose.ui.unit.dp
|
|||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import androidx.compose.ui.util.fastForEach
|
import androidx.compose.ui.util.fastForEach
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import coil3.compose.AsyncImage
|
import coil3.compose.AsyncImage
|
||||||
import coil3.request.ImageRequest
|
import coil3.request.ImageRequest
|
||||||
@@ -59,18 +60,16 @@ import com.aurora.extensions.getStyledAttributeColor
|
|||||||
import com.aurora.extensions.setAppTheme
|
import com.aurora.extensions.setAppTheme
|
||||||
import com.aurora.store.MR
|
import com.aurora.store.MR
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.providers.AuthProvider
|
|
||||||
import com.aurora.store.util.Preferences
|
import com.aurora.store.util.Preferences
|
||||||
import com.aurora.store.view.theme.AuroraTheme
|
import com.aurora.store.view.theme.AuroraTheme
|
||||||
|
import com.aurora.store.viewmodel.commons.MoreViewModel
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class MoreDialogFragment : DialogFragment() {
|
class MoreDialogFragment : DialogFragment() {
|
||||||
|
|
||||||
@Inject
|
private val viewModel: MoreViewModel by viewModels()
|
||||||
lateinit var authProvider: AuthProvider
|
|
||||||
|
|
||||||
private var primaryColor: Color = Color.White
|
private var primaryColor: Color = Color.White
|
||||||
private var onPrimaryColor: Color = Color.Black
|
private var onPrimaryColor: Color = Color.Black
|
||||||
@@ -240,10 +239,10 @@ class MoreDialogFragment : DialogFragment() {
|
|||||||
AsyncImage(
|
AsyncImage(
|
||||||
model = ImageRequest.Builder(LocalContext.current)
|
model = ImageRequest.Builder(LocalContext.current)
|
||||||
.data(
|
.data(
|
||||||
if (authProvider.isAnonymous) {
|
if (viewModel.authProvider.isAnonymous) {
|
||||||
R.mipmap.ic_launcher
|
R.mipmap.ic_launcher
|
||||||
} else {
|
} else {
|
||||||
authProvider.authData?.userProfile?.artwork?.url
|
viewModel.authProvider.authData?.userProfile?.artwork?.url
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.crossfade(true)
|
.crossfade(true)
|
||||||
@@ -260,10 +259,10 @@ class MoreDialogFragment : DialogFragment() {
|
|||||||
horizontalAlignment = Alignment.Start
|
horizontalAlignment = Alignment.Start
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = if (authProvider.isAnonymous) {
|
text = if (viewModel.authProvider.isAnonymous) {
|
||||||
stringResource(R.string.account_anonymous)
|
stringResource(R.string.account_anonymous)
|
||||||
} else {
|
} else {
|
||||||
authProvider.authData?.userProfile?.name
|
viewModel.authProvider.authData?.userProfile?.name
|
||||||
?: stringResource(R.string.status_unavailable)
|
?: stringResource(R.string.status_unavailable)
|
||||||
},
|
},
|
||||||
fontWeight = FontWeight.Normal,
|
fontWeight = FontWeight.Normal,
|
||||||
@@ -273,10 +272,10 @@ class MoreDialogFragment : DialogFragment() {
|
|||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
Text(
|
Text(
|
||||||
text = if (authProvider.isAnonymous) {
|
text = if (viewModel.authProvider.isAnonymous) {
|
||||||
stringResource(R.string.account_anonymous_email)
|
stringResource(R.string.account_anonymous_email)
|
||||||
} else {
|
} else {
|
||||||
authProvider.authData?.userProfile?.email
|
viewModel.authProvider.authData?.userProfile?.email
|
||||||
?: stringResource(R.string.status_unavailable)
|
?: stringResource(R.string.status_unavailable)
|
||||||
},
|
},
|
||||||
fontWeight = FontWeight.Light,
|
fontWeight = FontWeight.Light,
|
||||||
|
|||||||
@@ -70,7 +70,6 @@ import com.aurora.store.data.model.DownloadStatus
|
|||||||
import com.aurora.store.data.model.PermissionType
|
import com.aurora.store.data.model.PermissionType
|
||||||
import com.aurora.store.data.model.ViewState
|
import com.aurora.store.data.model.ViewState
|
||||||
import com.aurora.store.data.model.ViewState.Loading.getDataAs
|
import com.aurora.store.data.model.ViewState.Loading.getDataAs
|
||||||
import com.aurora.store.data.providers.AuthProvider
|
|
||||||
import com.aurora.store.databinding.FragmentDetailsBinding
|
import com.aurora.store.databinding.FragmentDetailsBinding
|
||||||
import com.aurora.store.util.CertUtil
|
import com.aurora.store.util.CertUtil
|
||||||
import com.aurora.store.util.CommonUtil
|
import com.aurora.store.util.CommonUtil
|
||||||
@@ -94,7 +93,6 @@ import kotlinx.coroutines.flow.launchIn
|
|||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import javax.inject.Inject
|
|
||||||
import com.aurora.gplayapi.data.models.datasafety.Report as DataSafetyReport
|
import com.aurora.gplayapi.data.models.datasafety.Report as DataSafetyReport
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
@@ -105,9 +103,6 @@ class AppDetailsFragment : BaseFragment<FragmentDetailsBinding>() {
|
|||||||
|
|
||||||
private val args: AppDetailsFragmentArgs by navArgs()
|
private val args: AppDetailsFragmentArgs by navArgs()
|
||||||
|
|
||||||
@Inject
|
|
||||||
lateinit var authProvider: AuthProvider
|
|
||||||
|
|
||||||
private lateinit var app: App
|
private lateinit var app: App
|
||||||
private lateinit var iconDrawable: Drawable
|
private lateinit var iconDrawable: Drawable
|
||||||
|
|
||||||
@@ -198,7 +193,7 @@ class AppDetailsFragment : BaseFragment<FragmentDetailsBinding>() {
|
|||||||
|
|
||||||
// App User Review
|
// App User Review
|
||||||
// We can not fetch it outside of this block, as we need the testing program status
|
// We can not fetch it outside of this block, as we need the testing program status
|
||||||
if (!authProvider.isAnonymous && app.isInstalled) {
|
if (!viewModel.authProvider.isAnonymous && app.isInstalled) {
|
||||||
viewModel.fetchUserAppReview(app)
|
viewModel.fetchUserAppReview(app)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -680,7 +675,7 @@ class AppDetailsFragment : BaseFragment<FragmentDetailsBinding>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
binding.layoutDetailsApp.btnPrimaryAction.setOnClickListener {
|
binding.layoutDetailsApp.btnPrimaryAction.setOnClickListener {
|
||||||
if (authProvider.isAnonymous && !app.isFree) {
|
if (viewModel.authProvider.isAnonymous && !app.isFree) {
|
||||||
toast(R.string.toast_purchase_blocked)
|
toast(R.string.toast_purchase_blocked)
|
||||||
return@setOnClickListener
|
return@setOnClickListener
|
||||||
} else if (app.versionCode == 0) {
|
} else if (app.versionCode == 0) {
|
||||||
@@ -744,7 +739,7 @@ class AppDetailsFragment : BaseFragment<FragmentDetailsBinding>() {
|
|||||||
updateAppPermission(app)
|
updateAppPermission(app)
|
||||||
|
|
||||||
// Allow users to handle beta subscriptions, if logged in by own account.
|
// Allow users to handle beta subscriptions, if logged in by own account.
|
||||||
if (!authProvider.isAnonymous) {
|
if (!viewModel.authProvider.isAnonymous) {
|
||||||
// Update app name to the testing program name, if subscribed
|
// Update app name to the testing program name, if subscribed
|
||||||
app.testingProgram?.let {
|
app.testingProgram?.let {
|
||||||
if (it.isAvailable && it.isSubscribed) {
|
if (it.isAvailable && it.isSubscribed) {
|
||||||
@@ -853,7 +848,7 @@ class AppDetailsFragment : BaseFragment<FragmentDetailsBinding>() {
|
|||||||
|
|
||||||
private fun updateUserReview(review: Review? = null) {
|
private fun updateUserReview(review: Review? = null) {
|
||||||
binding.layoutDetailsReview.apply {
|
binding.layoutDetailsReview.apply {
|
||||||
layoutUserReview.isVisible = !authProvider.isAnonymous
|
layoutUserReview.isVisible = !viewModel.authProvider.isAnonymous
|
||||||
btnPostReview.setOnClickListener {
|
btnPostReview.setOnClickListener {
|
||||||
viewModel.postAppReview(
|
viewModel.postAppReview(
|
||||||
app.packageName,
|
app.packageName,
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ package com.aurora.store.view.ui.details
|
|||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.navigation.fragment.navArgs
|
import androidx.navigation.fragment.navArgs
|
||||||
import com.aurora.Constants
|
import com.aurora.Constants
|
||||||
@@ -32,18 +33,15 @@ import com.aurora.store.databinding.FragmentGenericWithToolbarBinding
|
|||||||
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.details.ExodusViewModel_
|
import com.aurora.store.view.epoxy.views.details.ExodusViewModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
|
import com.aurora.store.viewmodel.details.DetailsExodusViewModel
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import org.json.JSONObject
|
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class DetailsExodusFragment : BaseFragment<FragmentGenericWithToolbarBinding>() {
|
class DetailsExodusFragment : BaseFragment<FragmentGenericWithToolbarBinding>() {
|
||||||
|
|
||||||
|
private val viewModel: DetailsExodusViewModel by viewModels()
|
||||||
private val args: DetailsExodusFragmentArgs by navArgs()
|
private val args: DetailsExodusFragmentArgs by navArgs()
|
||||||
|
|
||||||
@Inject
|
|
||||||
lateinit var exodusTrackers: JSONObject
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
@@ -80,7 +78,7 @@ class DetailsExodusFragment : BaseFragment<FragmentGenericWithToolbarBinding>()
|
|||||||
|
|
||||||
private fun getExodusTrackersFromReport(report: Report): List<ExodusTracker> {
|
private fun getExodusTrackersFromReport(report: Report): List<ExodusTracker> {
|
||||||
val trackerObjects = report.trackers.map {
|
val trackerObjects = report.trackers.map {
|
||||||
exodusTrackers.getJSONObject(it.toString())
|
viewModel.exodusTrackers.getJSONObject(it.toString())
|
||||||
}.toList()
|
}.toList()
|
||||||
|
|
||||||
return trackerObjects.map {
|
return trackerObjects.map {
|
||||||
|
|||||||
@@ -22,30 +22,29 @@ package com.aurora.store.view.ui.downloads
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.format.DateUtils
|
import android.text.format.DateUtils
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.aurora.Constants.GITLAB_URL
|
import com.aurora.Constants.GITLAB_URL
|
||||||
import com.aurora.extensions.browse
|
import com.aurora.extensions.browse
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.helper.DownloadHelper
|
|
||||||
import com.aurora.store.data.room.download.Download
|
import com.aurora.store.data.room.download.Download
|
||||||
import com.aurora.store.databinding.FragmentDownloadBinding
|
import com.aurora.store.databinding.FragmentDownloadBinding
|
||||||
import com.aurora.store.view.epoxy.views.DownloadViewModel_
|
import com.aurora.store.view.epoxy.views.DownloadViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.TextDividerViewModel_
|
import com.aurora.store.view.epoxy.views.TextDividerViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
|
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
|
import com.aurora.store.viewmodel.downloads.DownloadViewModel
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlinx.coroutines.NonCancellable
|
import kotlinx.coroutines.NonCancellable
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class DownloadFragment : BaseFragment<FragmentDownloadBinding>() {
|
class DownloadFragment : BaseFragment<FragmentDownloadBinding>() {
|
||||||
|
|
||||||
@Inject
|
private val viewModel: DownloadViewModel by viewModels()
|
||||||
lateinit var downloadHelper: DownloadHelper
|
|
||||||
|
|
||||||
private lateinit var downloadList: List<Download>
|
private lateinit var downloadList: List<Download>
|
||||||
|
|
||||||
@@ -59,19 +58,19 @@ class DownloadFragment : BaseFragment<FragmentDownloadBinding>() {
|
|||||||
when (it.itemId) {
|
when (it.itemId) {
|
||||||
R.id.action_force_clear_all -> {
|
R.id.action_force_clear_all -> {
|
||||||
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
||||||
downloadHelper.clearAllDownloads()
|
viewModel.downloadHelper.clearAllDownloads()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.action_cancel_all -> {
|
R.id.action_cancel_all -> {
|
||||||
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
||||||
downloadHelper.cancelAll()
|
viewModel.downloadHelper.cancelAll()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.action_clear_completed -> {
|
R.id.action_clear_completed -> {
|
||||||
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
|
||||||
downloadHelper.clearFinishedDownloads()
|
viewModel.downloadHelper.clearFinishedDownloads()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -80,7 +79,7 @@ class DownloadFragment : BaseFragment<FragmentDownloadBinding>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
viewLifecycleOwner.lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
downloadHelper.downloadsList.collectLatest {
|
viewModel.downloadHelper.downloadsList.collectLatest {
|
||||||
downloadList = it
|
downloadList = it
|
||||||
updateController(it.reversed())
|
updateController(it.reversed())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,28 +23,27 @@ import android.os.Bundle
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||||
import com.aurora.store.MobileNavigationDirections
|
import com.aurora.store.MobileNavigationDirections
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.providers.AuthProvider
|
|
||||||
import com.aurora.store.databinding.FragmentAppsGamesBinding
|
import com.aurora.store.databinding.FragmentAppsGamesBinding
|
||||||
import com.aurora.store.util.Preferences
|
import com.aurora.store.util.Preferences
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
import com.aurora.store.view.ui.commons.CategoryFragment
|
import com.aurora.store.view.ui.commons.CategoryFragment
|
||||||
import com.aurora.store.view.ui.commons.ForYouFragment
|
import com.aurora.store.view.ui.commons.ForYouFragment
|
||||||
import com.aurora.store.view.ui.commons.TopChartContainerFragment
|
import com.aurora.store.view.ui.commons.TopChartContainerFragment
|
||||||
|
import com.aurora.store.viewmodel.games.GamesContainerViewModel
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import com.google.android.material.tabs.TabLayoutMediator
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class GamesContainerFragment : BaseFragment<FragmentAppsGamesBinding>() {
|
class GamesContainerFragment : BaseFragment<FragmentAppsGamesBinding>() {
|
||||||
|
|
||||||
@Inject
|
private val viewModel: GamesContainerViewModel by viewModels()
|
||||||
lateinit var authProvider: AuthProvider
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
@@ -77,7 +76,7 @@ class GamesContainerFragment : BaseFragment<FragmentAppsGamesBinding>() {
|
|||||||
binding.pager.adapter = ViewPagerAdapter(
|
binding.pager.adapter = ViewPagerAdapter(
|
||||||
childFragmentManager,
|
childFragmentManager,
|
||||||
viewLifecycleOwner.lifecycle,
|
viewLifecycleOwner.lifecycle,
|
||||||
!authProvider.isAnonymous,
|
!viewModel.authProvider.isAnonymous,
|
||||||
isForYouEnabled
|
isForYouEnabled
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import androidx.core.view.ViewCompat
|
|||||||
import androidx.core.view.WindowInsetsCompat
|
import androidx.core.view.WindowInsetsCompat
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||||
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
|
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
|
||||||
@@ -32,7 +33,6 @@ import com.aurora.Constants
|
|||||||
import com.aurora.extensions.areNotificationsEnabled
|
import com.aurora.extensions.areNotificationsEnabled
|
||||||
import com.aurora.extensions.isIgnoringBatteryOptimizations
|
import com.aurora.extensions.isIgnoringBatteryOptimizations
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.helper.UpdateHelper
|
|
||||||
import com.aurora.store.data.model.UpdateMode
|
import com.aurora.store.data.model.UpdateMode
|
||||||
import com.aurora.store.data.work.CacheWorker
|
import com.aurora.store.data.work.CacheWorker
|
||||||
import com.aurora.store.databinding.FragmentOnboardingBinding
|
import com.aurora.store.databinding.FragmentOnboardingBinding
|
||||||
@@ -56,16 +56,15 @@ import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_EXTENDED
|
|||||||
import com.aurora.store.util.Preferences.PREFERENCE_VENDING_VERSION
|
import com.aurora.store.util.Preferences.PREFERENCE_VENDING_VERSION
|
||||||
import com.aurora.store.util.save
|
import com.aurora.store.util.save
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
|
import com.aurora.store.viewmodel.onboarding.OnboardingViewModel
|
||||||
import com.google.android.material.tabs.TabLayoutMediator
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
import com.jakewharton.processphoenix.ProcessPhoenix
|
import com.jakewharton.processphoenix.ProcessPhoenix
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class OnboardingFragment : BaseFragment<FragmentOnboardingBinding>() {
|
class OnboardingFragment : BaseFragment<FragmentOnboardingBinding>() {
|
||||||
|
|
||||||
@Inject
|
private val viewModel: OnboardingViewModel by viewModels()
|
||||||
lateinit var updateHelper: UpdateHelper
|
|
||||||
|
|
||||||
private var lastPosition = 0
|
private var lastPosition = 0
|
||||||
|
|
||||||
@@ -193,6 +192,6 @@ class OnboardingFragment : BaseFragment<FragmentOnboardingBinding>() {
|
|||||||
else -> UpdateMode.DISABLED
|
else -> UpdateMode.DISABLED
|
||||||
}
|
}
|
||||||
save(PREFERENCE_UPDATES_AUTO, updateMode.ordinal)
|
save(PREFERENCE_UPDATES_AUTO, updateMode.ordinal)
|
||||||
updateHelper.scheduleAutomatedCheck()
|
viewModel.updateHelper.scheduleAutomatedCheck()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.app.Dialog
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.aurora.extensions.showKeyboard
|
import com.aurora.extensions.showKeyboard
|
||||||
import com.aurora.extensions.toast
|
import com.aurora.extensions.toast
|
||||||
@@ -15,17 +16,15 @@ import com.aurora.store.util.Preferences
|
|||||||
import com.aurora.store.util.Preferences.PREFERENCE_PROXY_INFO
|
import com.aurora.store.util.Preferences.PREFERENCE_PROXY_INFO
|
||||||
import com.aurora.store.util.Preferences.PREFERENCE_PROXY_URL
|
import com.aurora.store.util.Preferences.PREFERENCE_PROXY_URL
|
||||||
import com.aurora.store.util.save
|
import com.aurora.store.util.save
|
||||||
|
import com.aurora.store.viewmodel.preferences.ProxyURLViewModel
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.google.android.material.textfield.TextInputLayout
|
import com.google.android.material.textfield.TextInputLayout
|
||||||
import com.google.gson.Gson
|
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class ProxyURLDialog: DialogFragment() {
|
class ProxyURLDialog: DialogFragment() {
|
||||||
|
|
||||||
@Inject
|
private val viewModel: ProxyURLViewModel by viewModels()
|
||||||
lateinit var gson: Gson
|
|
||||||
|
|
||||||
private val textInputLayout: TextInputLayout?
|
private val textInputLayout: TextInputLayout?
|
||||||
get() = dialog?.findViewById(R.id.textInputLayout)
|
get() = dialog?.findViewById(R.id.textInputLayout)
|
||||||
@@ -67,7 +66,7 @@ class ProxyURLDialog: DialogFragment() {
|
|||||||
val proxyInfo = CommonUtil.parseProxyUrl(url)
|
val proxyInfo = CommonUtil.parseProxyUrl(url)
|
||||||
if (proxyInfo != null) {
|
if (proxyInfo != null) {
|
||||||
save(PREFERENCE_PROXY_URL, url)
|
save(PREFERENCE_PROXY_URL, url)
|
||||||
save(PREFERENCE_PROXY_INFO, gson.toJson(proxyInfo))
|
save(PREFERENCE_PROXY_INFO, viewModel.gson.toJson(proxyInfo))
|
||||||
toast(R.string.toast_proxy_success)
|
toast(R.string.toast_proxy_success)
|
||||||
findNavController().navigate(R.id.forceRestartDialog)
|
findNavController().navigate(R.id.forceRestartDialog)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -22,12 +22,12 @@ package com.aurora.store.view.ui.preferences
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.appcompat.widget.Toolbar
|
import androidx.appcompat.widget.Toolbar
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.preference.ListPreference
|
import androidx.preference.ListPreference
|
||||||
import androidx.preference.SeekBarPreference
|
import androidx.preference.SeekBarPreference
|
||||||
import androidx.preference.SwitchPreferenceCompat
|
import androidx.preference.SwitchPreferenceCompat
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.helper.UpdateHelper
|
|
||||||
import com.aurora.store.data.model.PermissionType
|
import com.aurora.store.data.model.PermissionType
|
||||||
import com.aurora.store.data.model.UpdateMode
|
import com.aurora.store.data.model.UpdateMode
|
||||||
import com.aurora.store.util.Preferences
|
import com.aurora.store.util.Preferences
|
||||||
@@ -37,14 +37,13 @@ import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_AUTO
|
|||||||
import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_CHECK_INTERVAL
|
import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_CHECK_INTERVAL
|
||||||
import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_EXTENDED
|
import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_EXTENDED
|
||||||
import com.aurora.store.util.save
|
import com.aurora.store.util.save
|
||||||
|
import com.aurora.store.viewmodel.all.UpdatesViewModel
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class UpdatesPreference : BasePreferenceFragment() {
|
class UpdatesPreference : BasePreferenceFragment() {
|
||||||
|
|
||||||
@Inject
|
private val viewModel: UpdatesViewModel by viewModels()
|
||||||
lateinit var updateHelper: UpdateHelper
|
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.preferences_updates, rootKey)
|
setPreferencesFromResource(R.xml.preferences_updates, rootKey)
|
||||||
@@ -56,7 +55,7 @@ class UpdatesPreference : BasePreferenceFragment() {
|
|||||||
when (UpdateMode.entries[newValue.toString().toInt()]) {
|
when (UpdateMode.entries[newValue.toString().toInt()]) {
|
||||||
UpdateMode.DISABLED -> {
|
UpdateMode.DISABLED -> {
|
||||||
updateCheckIntervalPref?.isEnabled = false
|
updateCheckIntervalPref?.isEnabled = false
|
||||||
updateHelper.cancelAutomatedCheck()
|
viewModel.updateHelper.cancelAutomatedCheck()
|
||||||
requireContext().save(PREFERENCE_UPDATES_AUTO, 0)
|
requireContext().save(PREFERENCE_UPDATES_AUTO, 0)
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
@@ -64,14 +63,14 @@ class UpdatesPreference : BasePreferenceFragment() {
|
|||||||
UpdateMode.CHECK_AND_NOTIFY -> {
|
UpdateMode.CHECK_AND_NOTIFY -> {
|
||||||
if (permissionProvider.isGranted(PermissionType.POST_NOTIFICATIONS)) {
|
if (permissionProvider.isGranted(PermissionType.POST_NOTIFICATIONS)) {
|
||||||
updateCheckIntervalPref?.isEnabled = true
|
updateCheckIntervalPref?.isEnabled = true
|
||||||
updateHelper.scheduleAutomatedCheck()
|
viewModel.updateHelper.scheduleAutomatedCheck()
|
||||||
true
|
true
|
||||||
} else {
|
} else {
|
||||||
permissionProvider.request(PermissionType.POST_NOTIFICATIONS) {
|
permissionProvider.request(PermissionType.POST_NOTIFICATIONS) {
|
||||||
if (it) {
|
if (it) {
|
||||||
updateCheckIntervalPref?.isEnabled = true
|
updateCheckIntervalPref?.isEnabled = true
|
||||||
requireContext().save(PREFERENCE_UPDATES_AUTO, 1)
|
requireContext().save(PREFERENCE_UPDATES_AUTO, 1)
|
||||||
updateHelper.scheduleAutomatedCheck()
|
viewModel.updateHelper.scheduleAutomatedCheck()
|
||||||
activity?.recreate()
|
activity?.recreate()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -82,14 +81,14 @@ class UpdatesPreference : BasePreferenceFragment() {
|
|||||||
UpdateMode.CHECK_AND_INSTALL -> {
|
UpdateMode.CHECK_AND_INSTALL -> {
|
||||||
if (permissionProvider.isGranted(PermissionType.DOZE_WHITELIST)) {
|
if (permissionProvider.isGranted(PermissionType.DOZE_WHITELIST)) {
|
||||||
updateCheckIntervalPref?.isEnabled = true
|
updateCheckIntervalPref?.isEnabled = true
|
||||||
updateHelper.scheduleAutomatedCheck()
|
viewModel.updateHelper.scheduleAutomatedCheck()
|
||||||
true
|
true
|
||||||
} else {
|
} else {
|
||||||
permissionProvider.request(PermissionType.DOZE_WHITELIST) {
|
permissionProvider.request(PermissionType.DOZE_WHITELIST) {
|
||||||
if (it) {
|
if (it) {
|
||||||
updateCheckIntervalPref?.isEnabled = true
|
updateCheckIntervalPref?.isEnabled = true
|
||||||
requireContext().save(PREFERENCE_UPDATES_AUTO, 2)
|
requireContext().save(PREFERENCE_UPDATES_AUTO, 2)
|
||||||
updateHelper.scheduleAutomatedCheck()
|
viewModel.updateHelper.scheduleAutomatedCheck()
|
||||||
activity?.recreate()
|
activity?.recreate()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -104,7 +103,7 @@ class UpdatesPreference : BasePreferenceFragment() {
|
|||||||
findPreference<SeekBarPreference>(PREFERENCE_UPDATES_CHECK_INTERVAL)?.apply {
|
findPreference<SeekBarPreference>(PREFERENCE_UPDATES_CHECK_INTERVAL)?.apply {
|
||||||
isEnabled = Preferences.getInteger(requireContext(), PREFERENCE_UPDATES_AUTO) != 0
|
isEnabled = Preferences.getInteger(requireContext(), PREFERENCE_UPDATES_AUTO) != 0
|
||||||
setOnPreferenceChangeListener { _, _ ->
|
setOnPreferenceChangeListener { _, _ ->
|
||||||
updateHelper.updateAutomatedCheck()
|
viewModel.updateHelper.updateAutomatedCheck()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -113,21 +112,21 @@ class UpdatesPreference : BasePreferenceFragment() {
|
|||||||
?.setOnPreferenceChangeListener { _, newValue ->
|
?.setOnPreferenceChangeListener { _, newValue ->
|
||||||
findPreference<SwitchPreferenceCompat>(PREFERENCE_FILTER_FDROID)?.isEnabled =
|
findPreference<SwitchPreferenceCompat>(PREFERENCE_FILTER_FDROID)?.isEnabled =
|
||||||
!newValue.toString().toBoolean()
|
!newValue.toString().toBoolean()
|
||||||
updateHelper.checkUpdatesNow()
|
viewModel.updateHelper.checkUpdatesNow()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
findPreference<SwitchPreferenceCompat>(PREFERENCE_FILTER_FDROID)?.apply {
|
findPreference<SwitchPreferenceCompat>(PREFERENCE_FILTER_FDROID)?.apply {
|
||||||
isEnabled = !Preferences.getBoolean(requireContext(), PREFERENCE_FILTER_AURORA_ONLY)
|
isEnabled = !Preferences.getBoolean(requireContext(), PREFERENCE_FILTER_AURORA_ONLY)
|
||||||
setOnPreferenceChangeListener { _, _ ->
|
setOnPreferenceChangeListener { _, _ ->
|
||||||
updateHelper.checkUpdatesNow()
|
viewModel.updateHelper.checkUpdatesNow()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
findPreference<SwitchPreferenceCompat>(PREFERENCE_UPDATES_EXTENDED)
|
findPreference<SwitchPreferenceCompat>(PREFERENCE_UPDATES_EXTENDED)
|
||||||
?.setOnPreferenceChangeListener { _, _ ->
|
?.setOnPreferenceChangeListener { _, _ ->
|
||||||
updateHelper.checkUpdatesNow()
|
viewModel.updateHelper.checkUpdatesNow()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,12 +32,10 @@ import com.aurora.store.AuroraApp
|
|||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.event.BusEvent
|
import com.aurora.store.data.event.BusEvent
|
||||||
import com.aurora.store.data.installer.AppInstaller
|
import com.aurora.store.data.installer.AppInstaller
|
||||||
import com.aurora.store.data.providers.BlacklistProvider
|
|
||||||
import com.aurora.store.databinding.SheetAppMenuBinding
|
import com.aurora.store.databinding.SheetAppMenuBinding
|
||||||
import com.aurora.store.util.PackageUtil
|
import com.aurora.store.util.PackageUtil
|
||||||
import com.aurora.store.viewmodel.sheets.SheetsViewModel
|
import com.aurora.store.viewmodel.sheets.AppMenuViewModel
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class AppMenuSheet : BaseDialogSheet<SheetAppMenuBinding>() {
|
class AppMenuSheet : BaseDialogSheet<SheetAppMenuBinding>() {
|
||||||
@@ -46,10 +44,7 @@ class AppMenuSheet : BaseDialogSheet<SheetAppMenuBinding>() {
|
|||||||
const val TAG = "APP_MENU_SHEET"
|
const val TAG = "APP_MENU_SHEET"
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
private val viewModel: AppMenuViewModel by viewModels()
|
||||||
lateinit var blacklistProvider: BlacklistProvider
|
|
||||||
|
|
||||||
private val viewModel: SheetsViewModel by viewModels()
|
|
||||||
private val args: AppMenuSheetArgs by navArgs()
|
private val args: AppMenuSheetArgs by navArgs()
|
||||||
|
|
||||||
private val exportMimeType = "application/zip"
|
private val exportMimeType = "application/zip"
|
||||||
@@ -67,7 +62,7 @@ class AppMenuSheet : BaseDialogSheet<SheetAppMenuBinding>() {
|
|||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
val isBlacklisted: Boolean = blacklistProvider.isBlacklisted(args.app.packageName)
|
val isBlacklisted: Boolean = viewModel.blacklistProvider.isBlacklisted(args.app.packageName)
|
||||||
|
|
||||||
with(binding.navigationView) {
|
with(binding.navigationView) {
|
||||||
//Switch strings for Add/Remove Blacklist
|
//Switch strings for Add/Remove Blacklist
|
||||||
@@ -89,10 +84,10 @@ class AppMenuSheet : BaseDialogSheet<SheetAppMenuBinding>() {
|
|||||||
R.id.action_blacklist -> {
|
R.id.action_blacklist -> {
|
||||||
|
|
||||||
if (isBlacklisted) {
|
if (isBlacklisted) {
|
||||||
blacklistProvider.whitelist(args.app.packageName)
|
viewModel.blacklistProvider.whitelist(args.app.packageName)
|
||||||
requireContext().toast(R.string.toast_apk_whitelisted)
|
requireContext().toast(R.string.toast_apk_whitelisted)
|
||||||
} else {
|
} else {
|
||||||
blacklistProvider.blacklist(args.app.packageName)
|
viewModel.blacklistProvider.blacklist(args.app.packageName)
|
||||||
requireContext().toast(R.string.toast_apk_blacklisted)
|
requireContext().toast(R.string.toast_apk_blacklisted)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,22 +30,20 @@ import androidx.navigation.fragment.navArgs
|
|||||||
import com.aurora.extensions.copyToClipBoard
|
import com.aurora.extensions.copyToClipBoard
|
||||||
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.helper.DownloadHelper
|
|
||||||
import com.aurora.store.data.installer.AppInstaller
|
|
||||||
import com.aurora.store.data.model.DownloadStatus
|
import com.aurora.store.data.model.DownloadStatus
|
||||||
import com.aurora.store.databinding.SheetDownloadMenuBinding
|
import com.aurora.store.databinding.SheetDownloadMenuBinding
|
||||||
import com.aurora.store.util.PathUtil
|
import com.aurora.store.util.PathUtil
|
||||||
import com.aurora.store.viewmodel.sheets.SheetsViewModel
|
import com.aurora.store.viewmodel.sheets.DownloadMenuViewModel
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlinx.coroutines.NonCancellable
|
import kotlinx.coroutines.NonCancellable
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class DownloadMenuSheet : BaseDialogSheet<SheetDownloadMenuBinding>() {
|
class DownloadMenuSheet : BaseDialogSheet<SheetDownloadMenuBinding>() {
|
||||||
|
|
||||||
private val TAG = DownloadMenuSheet::class.java.simpleName
|
private val TAG = DownloadMenuSheet::class.java.simpleName
|
||||||
private val viewModel: SheetsViewModel by viewModels()
|
|
||||||
|
private val viewModel: DownloadMenuViewModel by viewModels()
|
||||||
private val args: DownloadMenuSheetArgs by navArgs()
|
private val args: DownloadMenuSheetArgs by navArgs()
|
||||||
private val playStoreURL = "https://play.google.com/store/apps/details?id="
|
private val playStoreURL = "https://play.google.com/store/apps/details?id="
|
||||||
|
|
||||||
@@ -61,12 +59,6 @@ class DownloadMenuSheet : BaseDialogSheet<SheetDownloadMenuBinding>() {
|
|||||||
dismissAllowingStateLoss()
|
dismissAllowingStateLoss()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
|
||||||
lateinit var downloadHelper: DownloadHelper
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
lateinit var appInstaller: AppInstaller
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
@@ -101,14 +93,14 @@ class DownloadMenuSheet : BaseDialogSheet<SheetDownloadMenuBinding>() {
|
|||||||
|
|
||||||
R.id.action_cancel -> {
|
R.id.action_cancel -> {
|
||||||
findViewTreeLifecycleOwner()?.lifecycleScope?.launch(NonCancellable) {
|
findViewTreeLifecycleOwner()?.lifecycleScope?.launch(NonCancellable) {
|
||||||
downloadHelper.cancelDownload(args.download.packageName)
|
viewModel.downloadHelper.cancelDownload(args.download.packageName)
|
||||||
}
|
}
|
||||||
dismissAllowingStateLoss()
|
dismissAllowingStateLoss()
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.action_clear -> {
|
R.id.action_clear -> {
|
||||||
findViewTreeLifecycleOwner()?.lifecycleScope?.launch(NonCancellable) {
|
findViewTreeLifecycleOwner()?.lifecycleScope?.launch(NonCancellable) {
|
||||||
downloadHelper.clearDownload(
|
viewModel.downloadHelper.clearDownload(
|
||||||
args.download.packageName,
|
args.download.packageName,
|
||||||
args.download.versionCode
|
args.download.versionCode
|
||||||
)
|
)
|
||||||
@@ -127,7 +119,7 @@ class DownloadMenuSheet : BaseDialogSheet<SheetDownloadMenuBinding>() {
|
|||||||
|
|
||||||
private fun install() {
|
private fun install() {
|
||||||
try {
|
try {
|
||||||
appInstaller.getPreferredInstaller().install(args.download)
|
viewModel.appInstaller.getPreferredInstaller().install(args.download)
|
||||||
} catch (exception: Exception) {
|
} catch (exception: Exception) {
|
||||||
Log.e(TAG, "Failed to install ${args.download.packageName}", exception)
|
Log.e(TAG, "Failed to install ${args.download.packageName}", exception)
|
||||||
if (exception is NullPointerException) {
|
if (exception is NullPointerException) {
|
||||||
|
|||||||
@@ -22,25 +22,24 @@ package com.aurora.store.view.ui.sheets
|
|||||||
import android.content.DialogInterface
|
import android.content.DialogInterface
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.fragment.app.viewModels
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.data.model.Filter
|
import com.aurora.store.data.model.Filter
|
||||||
import com.aurora.store.data.providers.FilterProvider
|
|
||||||
import com.aurora.store.databinding.SheetFilterBinding
|
import com.aurora.store.databinding.SheetFilterBinding
|
||||||
|
import com.aurora.store.viewmodel.sheets.FilterViewModel
|
||||||
import com.google.android.material.chip.Chip
|
import com.google.android.material.chip.Chip
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
|
class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
|
||||||
|
|
||||||
@Inject
|
private val viewModel: FilterViewModel by viewModels()
|
||||||
lateinit var filterProvider: FilterProvider
|
|
||||||
|
|
||||||
private lateinit var filter: Filter
|
private lateinit var filter: Filter
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
filter = filterProvider.getSavedFilter()
|
filter = viewModel.filterProvider.getSavedFilter()
|
||||||
|
|
||||||
attachSingleChips()
|
attachSingleChips()
|
||||||
attachMultipleChips()
|
attachMultipleChips()
|
||||||
@@ -48,7 +47,7 @@ class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
|
|||||||
|
|
||||||
override fun onDismiss(dialog: DialogInterface) {
|
override fun onDismiss(dialog: DialogInterface) {
|
||||||
super.onDismiss(dialog)
|
super.onDismiss(dialog)
|
||||||
filterProvider.saveFilter(filter)
|
viewModel.filterProvider.saveFilter(filter)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun attachSingleChips() {
|
private fun attachSingleChips() {
|
||||||
|
|||||||
@@ -32,14 +32,14 @@ import coil3.transform.RoundedCornersTransformation
|
|||||||
import com.aurora.extensions.toast
|
import com.aurora.extensions.toast
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.databinding.SheetManualDownloadBinding
|
import com.aurora.store.databinding.SheetManualDownloadBinding
|
||||||
import com.aurora.store.viewmodel.sheets.SheetsViewModel
|
import com.aurora.store.viewmodel.sheets.ManualDownloadViewModel
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class ManualDownloadSheet : BaseDialogSheet<SheetManualDownloadBinding>() {
|
class ManualDownloadSheet : BaseDialogSheet<SheetManualDownloadBinding>() {
|
||||||
private val viewModel: SheetsViewModel by viewModels()
|
private val viewModel: ManualDownloadViewModel by viewModels()
|
||||||
private val args: ManualDownloadSheetArgs by navArgs()
|
private val args: ManualDownloadSheetArgs by navArgs()
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.viewmodel.account
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.aurora.store.data.providers.AuthProvider
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class AccountViewModel @Inject constructor(val authProvider: AuthProvider) : ViewModel()
|
||||||
@@ -30,7 +30,7 @@ import javax.inject.Inject
|
|||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class UpdatesViewModel @Inject constructor(
|
class UpdatesViewModel @Inject constructor(
|
||||||
private val updateHelper: UpdateHelper,
|
val updateHelper: UpdateHelper,
|
||||||
private val downloadHelper: DownloadHelper,
|
private val downloadHelper: DownloadHelper,
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.viewmodel.apps
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.aurora.store.data.providers.AuthProvider
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class AppsContainerViewModel @Inject constructor(val authProvider: AuthProvider) : ViewModel()
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.viewmodel.commons
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.aurora.store.data.providers.AuthProvider
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class MoreViewModel @Inject constructor(val authProvider: AuthProvider) : ViewModel()
|
||||||
@@ -19,6 +19,7 @@ import com.aurora.store.data.helper.DownloadHelper
|
|||||||
import com.aurora.store.data.model.ExodusReport
|
import com.aurora.store.data.model.ExodusReport
|
||||||
import com.aurora.store.data.model.PlexusReport
|
import com.aurora.store.data.model.PlexusReport
|
||||||
import com.aurora.store.data.model.Report
|
import com.aurora.store.data.model.Report
|
||||||
|
import com.aurora.store.data.providers.AuthProvider
|
||||||
import com.aurora.store.data.room.favourite.Favourite
|
import com.aurora.store.data.room.favourite.Favourite
|
||||||
import com.aurora.store.data.room.favourite.FavouriteDao
|
import com.aurora.store.data.room.favourite.FavouriteDao
|
||||||
import com.aurora.store.util.PackageUtil
|
import com.aurora.store.util.PackageUtil
|
||||||
@@ -40,6 +41,7 @@ import com.aurora.gplayapi.data.models.datasafety.Report as DataSafetyReport
|
|||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class AppDetailsViewModel @Inject constructor(
|
class AppDetailsViewModel @Inject constructor(
|
||||||
|
val authProvider: AuthProvider,
|
||||||
@ApplicationContext private val context: Context,
|
@ApplicationContext private val context: Context,
|
||||||
private val appDetailsHelper: AppDetailsHelper,
|
private val appDetailsHelper: AppDetailsHelper,
|
||||||
private val reviewsHelper: ReviewsHelper,
|
private val reviewsHelper: ReviewsHelper,
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.viewmodel.details
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import org.json.JSONObject
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class DetailsExodusViewModel @Inject constructor(val exodusTrackers: JSONObject) : ViewModel()
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.viewmodel.downloads
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.aurora.store.data.helper.DownloadHelper
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class DownloadViewModel @Inject constructor(val downloadHelper: DownloadHelper) : ViewModel()
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.viewmodel.games
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.aurora.store.data.providers.AuthProvider
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class GamesContainerViewModel @Inject constructor(val authProvider: AuthProvider) : ViewModel()
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.viewmodel.onboarding
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.aurora.store.data.helper.UpdateHelper
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class OnboardingViewModel @Inject constructor(val updateHelper: UpdateHelper) : ViewModel()
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.viewmodel.preferences
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.google.gson.Gson
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class ProxyURLViewModel @Inject constructor(val gson: Gson) : ViewModel()
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.viewmodel.sheets
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.net.Uri
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.aurora.store.data.model.MinimalApp
|
||||||
|
import com.aurora.store.data.providers.BlacklistProvider
|
||||||
|
import com.aurora.store.data.work.ExportWorker
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class AppMenuViewModel @Inject constructor(val blacklistProvider: BlacklistProvider) : ViewModel() {
|
||||||
|
|
||||||
|
fun copyInstalledApp(context: Context, app: MinimalApp, uri: Uri) {
|
||||||
|
ExportWorker.exportInstalledApp(context, app, uri)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.viewmodel.sheets
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.net.Uri
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.aurora.store.data.helper.DownloadHelper
|
||||||
|
import com.aurora.store.data.installer.AppInstaller
|
||||||
|
import com.aurora.store.data.room.download.Download
|
||||||
|
import com.aurora.store.data.work.ExportWorker
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class DownloadMenuViewModel @Inject constructor(
|
||||||
|
val downloadHelper: DownloadHelper,
|
||||||
|
val appInstaller: AppInstaller
|
||||||
|
) : ViewModel() {
|
||||||
|
|
||||||
|
fun copyDownloadedApp(context: Context, download: Download, uri: Uri) {
|
||||||
|
ExportWorker.exportDownloadedApp(context, download, uri)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The Calyx Institute
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.aurora.store.viewmodel.sheets
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import com.aurora.store.data.providers.FilterProvider
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
|
class FilterViewModel @Inject constructor(val filterProvider: FilterProvider) : ViewModel()
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
package com.aurora.store.viewmodel.sheets
|
package com.aurora.store.viewmodel.sheets
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.net.Uri
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
@@ -9,9 +7,6 @@ import com.aurora.gplayapi.data.models.App
|
|||||||
import com.aurora.gplayapi.helpers.PurchaseHelper
|
import com.aurora.gplayapi.helpers.PurchaseHelper
|
||||||
import com.aurora.store.AuroraApp
|
import com.aurora.store.AuroraApp
|
||||||
import com.aurora.store.data.event.BusEvent
|
import com.aurora.store.data.event.BusEvent
|
||||||
import com.aurora.store.data.model.MinimalApp
|
|
||||||
import com.aurora.store.data.room.download.Download
|
|
||||||
import com.aurora.store.data.work.ExportWorker
|
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
@@ -20,11 +15,11 @@ import kotlinx.coroutines.launch
|
|||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class SheetsViewModel @Inject constructor(
|
class ManualDownloadViewModel @Inject constructor(
|
||||||
private val purchaseHelper: PurchaseHelper
|
private val purchaseHelper: PurchaseHelper
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
private val TAG = SheetsViewModel::class.java.simpleName
|
private val TAG = ManualDownloadViewModel::class.java.simpleName
|
||||||
|
|
||||||
private val _purchaseStatus = MutableSharedFlow<Boolean>()
|
private val _purchaseStatus = MutableSharedFlow<Boolean>()
|
||||||
val purchaseStatus = _purchaseStatus.asSharedFlow()
|
val purchaseStatus = _purchaseStatus.asSharedFlow()
|
||||||
@@ -45,12 +40,4 @@ class SheetsViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun copyInstalledApp(context: Context, app: MinimalApp, uri: Uri) {
|
|
||||||
ExportWorker.exportInstalledApp(context, app, uri)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun copyDownloadedApp(context: Context, download: Download, uri: Uri) {
|
|
||||||
ExportWorker.exportDownloadedApp(context, download, uri)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user