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) {
|
fun openScreenshotFragment(app: App, position: Int) {
|
||||||
findNavController().navigate(
|
findNavController().navigate(
|
||||||
MobileNavigationDirections.actionGlobalScreenshotFragment(
|
MobileNavigationDirections.actionGlobalScreenshotFragment(
|
||||||
|
|||||||
@@ -270,11 +270,6 @@ class MoreDialogFragment : DialogFragment() {
|
|||||||
icon = R.drawable.ic_apps,
|
icon = R.drawable.ic_apps,
|
||||||
destinationID = R.id.appsGamesFragment
|
destinationID = R.id.appsGamesFragment
|
||||||
),
|
),
|
||||||
Option(
|
|
||||||
title = R.string.title_apps_sale,
|
|
||||||
icon = R.drawable.ic_sale,
|
|
||||||
destinationID = R.id.appSalesFragment
|
|
||||||
),
|
|
||||||
Option(
|
Option(
|
||||||
title = R.string.title_blacklist_manager,
|
title = R.string.title_blacklist_manager,
|
||||||
icon = R.drawable.ic_blacklist,
|
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
|
<action
|
||||||
android:id="@+id/action_global_categoryBrowseFragment"
|
android:id="@+id/action_global_categoryBrowseFragment"
|
||||||
app:destination="@id/categoryBrowseFragment" />
|
app:destination="@id/categoryBrowseFragment" />
|
||||||
<action
|
|
||||||
android:id="@+id/action_global_editorStreamBrowseFragment"
|
|
||||||
app:destination="@id/editorStreamBrowseFragment" />
|
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_global_expandedStreamBrowseFragment"
|
android:id="@+id/action_global_expandedStreamBrowseFragment"
|
||||||
app:destination="@id/expandedStreamBrowseFragment" />
|
app:destination="@id/expandedStreamBrowseFragment" />
|
||||||
@@ -78,11 +75,6 @@
|
|||||||
android:name="com.aurora.store.view.ui.all.AppsGamesFragment"
|
android:name="com.aurora.store.view.ui.all.AppsGamesFragment"
|
||||||
android:label="@string/title_apps_games"
|
android:label="@string/title_apps_games"
|
||||||
tools:layout="@layout/fragment_generic_with_pager" />
|
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
|
<fragment
|
||||||
android:id="@+id/spoofFragment"
|
android:id="@+id/spoofFragment"
|
||||||
android:name="com.aurora.store.view.ui.spoof.SpoofFragment"
|
android:name="com.aurora.store.view.ui.spoof.SpoofFragment"
|
||||||
@@ -220,16 +212,6 @@
|
|||||||
android:id="@+id/action_categoryBrowseFragment_to_appPeekDialogSheet"
|
android:id="@+id/action_categoryBrowseFragment_to_appPeekDialogSheet"
|
||||||
app:destination="@id/appPeekDialogSheet" />
|
app:destination="@id/appPeekDialogSheet" />
|
||||||
</fragment>
|
</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
|
<fragment
|
||||||
android:id="@+id/expandedStreamBrowseFragment"
|
android:id="@+id/expandedStreamBrowseFragment"
|
||||||
android:name="com.aurora.store.view.ui.commons.ExpandedStreamBrowseFragment"
|
android:name="com.aurora.store.view.ui.commons.ExpandedStreamBrowseFragment"
|
||||||
|
|||||||
Reference in New Issue
Block a user