Remove AppsOnsale page

Why?
- Unecessary bloat, lets stick to only what is important
This commit is contained in:
Rahul Patel
2024-07-12 21:47:35 +05:30
parent 588a1f9edf
commit 0af93474ed
5 changed files with 0 additions and 237 deletions

View File

@@ -103,12 +103,6 @@ abstract class BaseFragment<ViewBindingType : ViewBinding> : Fragment() {
}
}
fun openEditorStreamBrowseFragment(browseUrl: String, title: String = "") {
findNavController().navigate(
MobileNavigationDirections.actionGlobalEditorStreamBrowseFragment(title, browseUrl)
)
}
fun openScreenshotFragment(app: App, position: Int) {
findNavController().navigate(
MobileNavigationDirections.actionGlobalScreenshotFragment(

View File

@@ -270,11 +270,6 @@ class MoreDialogFragment : DialogFragment() {
icon = R.drawable.ic_apps,
destinationID = R.id.appsGamesFragment
),
Option(
title = R.string.title_apps_sale,
icon = R.drawable.ic_sale,
destinationID = R.id.appSalesFragment
),
Option(
title = R.string.title_blacklist_manager,
icon = R.drawable.ic_blacklist,

View File

@@ -1,113 +0,0 @@
/*
* Aurora Store
* Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
*
* Aurora Store is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Aurora Store is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.aurora.store.view.ui.sale
import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.aurora.store.R
import com.aurora.store.data.model.PaginatedAppList
import com.aurora.store.databinding.FragmentGenericWithToolbarBinding
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
import com.aurora.store.view.epoxy.views.HeaderViewModel_
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.viewmodel.sale.AppSalesViewModel
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class AppSalesFragment : BaseFragment<FragmentGenericWithToolbarBinding>() {
private val viewModel: AppSalesViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.layoutToolbarAction.txtTitle.text = getString(R.string.title_apps_sale)
binding.layoutToolbarAction.imgActionPrimary.setOnClickListener {
findNavController().navigateUp()
}
val endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() {
override fun onLoadMore(currentPage: Int) {
viewModel.observe()
}
}
binding.recycler.addOnScrollListener(endlessRecyclerOnScrollListener)
updateController(null)
viewModel.liveData.observe(viewLifecycleOwner) {
updateController(it)
}
}
private fun updateController(paginatedAppList: PaginatedAppList?) {
binding.recycler
.withModels {
setFilterDuplicates(true)
if (paginatedAppList == null) {
for (i in 1..6) {
add(
AppListViewShimmerModel_()
.id(i)
)
}
} else {
add(
HeaderViewModel_()
.id("header")
.title(getString(R.string.title_apps_sale_provider))
)
paginatedAppList.appList
.filter { it.packageName.isNotEmpty() }
.forEach {
add(
AppListViewModel_()
.id(it.packageName.hashCode())
.app(it)
.click { _ -> openDetailsFragment(it.packageName, it) }
)
setFilterDuplicates(true)
}
if (paginatedAppList.hasMore) {
add(
AppProgressViewModel_()
.id("progress")
)
}
if (!paginatedAppList.hasMore && paginatedAppList.appList.isEmpty()) {
add(
NoAppViewModel_()
.id("no_app_sale")
.icon(R.drawable.ic_apps)
.message(getString(R.string.details_no_apps_on_sale))
)
}
}
}
}
}

View File

@@ -1,95 +0,0 @@
/*
* Aurora Store
* Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
*
* Aurora Store is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Aurora Store is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.aurora.store.viewmodel.sale
import android.annotation.SuppressLint
import android.content.Context
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.helpers.AppSalesHelper
import com.aurora.store.data.model.PaginatedAppList
import com.aurora.store.data.network.HttpClient
import com.aurora.store.data.providers.AuthProvider
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope
import javax.inject.Inject
@HiltViewModel
@SuppressLint("StaticFieldLeak") // false positive, see https://github.com/google/dagger/issues/3253
class AppSalesViewModel @Inject constructor(
@ApplicationContext private val context: Context,
private val authProvider: AuthProvider
) : ViewModel() {
private val appSalesHelper: AppSalesHelper = AppSalesHelper(authProvider.authData)
.using(HttpClient.getPreferredClient(context))
private var page: Int = 0
private val appList: MutableList<App> = mutableListOf()
val liveData: MutableLiveData<PaginatedAppList> = MutableLiveData()
init {
observe()
}
fun observe() {
viewModelScope.launch(Dispatchers.IO) {
supervisorScope {
try {
val nextAppList = getSearchResults()
if (nextAppList.isEmpty()) {
liveData.postValue(
PaginatedAppList(
appList,
hasMore = false
)
)
} else {
appList.addAll(nextAppList)
liveData.postValue(
PaginatedAppList(
appList,
hasMore = true
)
)
}
} catch (_: Exception) {
}
}
}
}
private fun getSearchResults(): List<App> {
return try {
appSalesHelper.getAppsOnSale(page = page++, offer = 100)
} catch (e: Exception) {
e.printStackTrace()
emptyList()
}
}
}