Remove AppsOnsale page
Why? - Unecessary bloat, lets stick to only what is important
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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))
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -29,9 +29,6 @@
|
||||
<action
|
||||
android:id="@+id/action_global_categoryBrowseFragment"
|
||||
app:destination="@id/categoryBrowseFragment" />
|
||||
<action
|
||||
android:id="@+id/action_global_editorStreamBrowseFragment"
|
||||
app:destination="@id/editorStreamBrowseFragment" />
|
||||
<action
|
||||
android:id="@+id/action_global_expandedStreamBrowseFragment"
|
||||
app:destination="@id/expandedStreamBrowseFragment" />
|
||||
@@ -78,11 +75,6 @@
|
||||
android:name="com.aurora.store.view.ui.all.AppsGamesFragment"
|
||||
android:label="@string/title_apps_games"
|
||||
tools:layout="@layout/fragment_generic_with_pager" />
|
||||
<fragment
|
||||
android:id="@+id/appSalesFragment"
|
||||
android:name="com.aurora.store.view.ui.sale.AppSalesFragment"
|
||||
android:label="@string/title_apps_sale"
|
||||
tools:layout="@layout/fragment_generic_with_toolbar" />
|
||||
<fragment
|
||||
android:id="@+id/spoofFragment"
|
||||
android:name="com.aurora.store.view.ui.spoof.SpoofFragment"
|
||||
@@ -220,16 +212,6 @@
|
||||
android:id="@+id/action_categoryBrowseFragment_to_appPeekDialogSheet"
|
||||
app:destination="@id/appPeekDialogSheet" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/editorStreamBrowseFragment"
|
||||
android:name="com.aurora.store.view.ui.commons.EditorStreamBrowseFragment"
|
||||
tools:layout="@layout/fragment_generic_with_toolbar" >
|
||||
<argument android:name="title"
|
||||
app:argType="string" />
|
||||
<argument
|
||||
android:name="browseUrl"
|
||||
app:argType="string" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/expandedStreamBrowseFragment"
|
||||
android:name="com.aurora.store.view.ui.commons.ExpandedStreamBrowseFragment"
|
||||
|
||||
Reference in New Issue
Block a user