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