Add purchased app history
This commit is contained in:
@@ -26,7 +26,7 @@ import com.aurora.gplayapi.data.models.StreamCluster
|
|||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.view.epoxy.groups.CarouselModelGroup
|
import com.aurora.store.view.epoxy.groups.CarouselModelGroup
|
||||||
import com.aurora.store.view.epoxy.groups.CarouselShimmerGroup
|
import com.aurora.store.view.epoxy.groups.CarouselShimmerGroup
|
||||||
import com.aurora.store.view.epoxy.views.AppListViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
|
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import com.aurora.store.R
|
|||||||
import com.aurora.store.util.Log
|
import com.aurora.store.util.Log
|
||||||
import com.aurora.store.view.epoxy.controller.GenericCarouselController
|
import com.aurora.store.view.epoxy.controller.GenericCarouselController
|
||||||
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.AppViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
||||||
|
|
||||||
class CarouselModelGroup(
|
class CarouselModelGroup(
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ package com.aurora.store.view.epoxy.views
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.animation.AnimationUtils
|
import android.view.animation.AnimationUtils
|
||||||
import com.airbnb.epoxy.EpoxyModel
|
import com.airbnb.epoxy.EpoxyModel
|
||||||
|
import com.aurora.store.view.epoxy.views.app.AppListView
|
||||||
|
|
||||||
abstract class BaseView<T : View?> : EpoxyModel<T>() {
|
abstract class BaseView<T : View?> : EpoxyModel<T>() {
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.aurora.store.view.epoxy.views
|
package com.aurora.store.view.epoxy.views.app
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
@@ -33,6 +33,7 @@ import com.aurora.store.util.CommonUtil
|
|||||||
import com.aurora.store.util.extensions.clear
|
import com.aurora.store.util.extensions.clear
|
||||||
import com.aurora.store.util.extensions.getString
|
import com.aurora.store.util.extensions.getString
|
||||||
import com.aurora.store.util.extensions.load
|
import com.aurora.store.util.extensions.load
|
||||||
|
import com.aurora.store.view.epoxy.views.BaseView
|
||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||||
|
|
||||||
@ModelView(
|
@ModelView(
|
||||||
@@ -90,7 +91,7 @@ class AppListView : RelativeLayout {
|
|||||||
if (app.dependencies.dependentPackages.isNotEmpty())
|
if (app.dependencies.dependentPackages.isNotEmpty())
|
||||||
extras.add(getString(R.string.details_gsf_dependent))
|
extras.add(getString(R.string.details_gsf_dependent))
|
||||||
|
|
||||||
B.txtLine3.text = extras.joinToString(separator = " • ")
|
B.txtLine3.text = extras.joinToString(separator = " • ")
|
||||||
}
|
}
|
||||||
|
|
||||||
@CallbackProp
|
@CallbackProp
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.aurora.store.view.epoxy.views
|
package com.aurora.store.view.epoxy.views.app
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
@@ -34,6 +34,7 @@ import com.aurora.store.databinding.ViewAppUpdateBinding
|
|||||||
import com.aurora.store.util.CommonUtil
|
import com.aurora.store.util.CommonUtil
|
||||||
import com.aurora.store.util.extensions.clear
|
import com.aurora.store.util.extensions.clear
|
||||||
import com.aurora.store.util.extensions.load
|
import com.aurora.store.util.extensions.load
|
||||||
|
import com.aurora.store.view.epoxy.views.BaseView
|
||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||||
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade
|
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.aurora.store.view.epoxy.views
|
package com.aurora.store.view.epoxy.views.app
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
@@ -32,6 +32,7 @@ import com.aurora.store.databinding.ViewAppBinding
|
|||||||
import com.aurora.store.util.CommonUtil
|
import com.aurora.store.util.CommonUtil
|
||||||
import com.aurora.store.util.extensions.clear
|
import com.aurora.store.util.extensions.clear
|
||||||
import com.aurora.store.util.extensions.load
|
import com.aurora.store.util.extensions.load
|
||||||
|
import com.aurora.store.view.epoxy.views.BaseView
|
||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ class AppsGamesActivity : BaseActivity() {
|
|||||||
when (position) {
|
when (position) {
|
||||||
0 -> tab.text = getString(R.string.title_installed)
|
0 -> tab.text = getString(R.string.title_installed)
|
||||||
1 -> tab.text = getString(R.string.title_library)
|
1 -> tab.text = getString(R.string.title_library)
|
||||||
|
2 -> tab.text = getString(R.string.title_purchase_history)
|
||||||
else -> {
|
else -> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -89,6 +90,7 @@ class AppsGamesActivity : BaseActivity() {
|
|||||||
return when (position) {
|
return when (position) {
|
||||||
0 -> InstalledAppsFragment.newInstance()
|
0 -> InstalledAppsFragment.newInstance()
|
||||||
1 -> LibraryAppsFragment.newInstance()
|
1 -> LibraryAppsFragment.newInstance()
|
||||||
|
2 -> PurchasedAppsFragment.newInstance()
|
||||||
else -> Fragment()
|
else -> Fragment()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -97,7 +99,7 @@ class AppsGamesActivity : BaseActivity() {
|
|||||||
return if (isAnonymous)
|
return if (isAnonymous)
|
||||||
1
|
1
|
||||||
else
|
else
|
||||||
2
|
3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,7 +28,7 @@ import com.aurora.Constants
|
|||||||
import com.aurora.gplayapi.data.models.App
|
import com.aurora.gplayapi.data.models.App
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.databinding.FragmentUpdatesBinding
|
import com.aurora.store.databinding.FragmentUpdatesBinding
|
||||||
import com.aurora.store.view.epoxy.views.AppListViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import com.aurora.gplayapi.data.models.StreamCluster
|
|||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.databinding.FragmentUpdatesBinding
|
import com.aurora.store.databinding.FragmentUpdatesBinding
|
||||||
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
||||||
import com.aurora.store.view.epoxy.views.AppListViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
||||||
|
|||||||
@@ -0,0 +1,145 @@
|
|||||||
|
/*
|
||||||
|
* 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.all
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import com.aurora.Constants
|
||||||
|
import com.aurora.gplayapi.data.models.App
|
||||||
|
import com.aurora.store.R
|
||||||
|
import com.aurora.store.databinding.FragmentUpdatesBinding
|
||||||
|
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
||||||
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
|
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
||||||
|
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
||||||
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
|
import com.aurora.store.view.ui.sheets.AppMenuSheet
|
||||||
|
import com.aurora.store.viewmodel.all.InstalledViewModel
|
||||||
|
import com.aurora.store.viewmodel.all.PurchasedViewModel
|
||||||
|
|
||||||
|
class PurchasedAppsFragment : BaseFragment() {
|
||||||
|
|
||||||
|
private lateinit var VM: PurchasedViewModel
|
||||||
|
private lateinit var B: FragmentUpdatesBinding
|
||||||
|
lateinit var endlessRecyclerOnScrollListener: EndlessRecyclerOnScrollListener
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
@JvmStatic
|
||||||
|
fun newInstance(): PurchasedAppsFragment {
|
||||||
|
return PurchasedAppsFragment().apply {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateView(
|
||||||
|
inflater: LayoutInflater,
|
||||||
|
container: ViewGroup?,
|
||||||
|
savedInstanceState: Bundle?
|
||||||
|
): View {
|
||||||
|
B = FragmentUpdatesBinding.bind(
|
||||||
|
inflater.inflate(
|
||||||
|
R.layout.fragment_updates,
|
||||||
|
container,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
VM = ViewModelProvider(requireActivity()).get(PurchasedViewModel::class.java)
|
||||||
|
|
||||||
|
return B.root
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
VM.liveData.observe(viewLifecycleOwner, {
|
||||||
|
updateController(it)
|
||||||
|
B.swipeRefreshLayout.isRefreshing = false
|
||||||
|
})
|
||||||
|
|
||||||
|
B.swipeRefreshLayout.setOnRefreshListener {
|
||||||
|
VM.observe()
|
||||||
|
}
|
||||||
|
|
||||||
|
attachRecycler()
|
||||||
|
|
||||||
|
updateController(null)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun attachRecycler() {
|
||||||
|
endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() {
|
||||||
|
override fun onLoadMore(currentPage: Int) {
|
||||||
|
VM.observe()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
B.recycler.addOnScrollListener(endlessRecyclerOnScrollListener)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun updateController(appList: List<App>?) {
|
||||||
|
B.recycler.withModels {
|
||||||
|
setFilterDuplicates(true)
|
||||||
|
if (appList == null) {
|
||||||
|
for (i in 1..6) {
|
||||||
|
add(
|
||||||
|
AppListViewShimmerModel_()
|
||||||
|
.id(i)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
add(
|
||||||
|
HeaderViewModel_()
|
||||||
|
.id("header")
|
||||||
|
.title("${appList.size} apps purchased")
|
||||||
|
)
|
||||||
|
appList.forEach { app ->
|
||||||
|
add(
|
||||||
|
AppListViewModel_()
|
||||||
|
.id(app.id)
|
||||||
|
.app(app)
|
||||||
|
.click { _ -> openDetailsActivity(app) }
|
||||||
|
.longClick { _ ->
|
||||||
|
openAppMenuSheet(app)
|
||||||
|
false
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun openAppMenuSheet(app: App) {
|
||||||
|
val fragment = childFragmentManager.findFragmentByTag(AppMenuSheet.TAG)
|
||||||
|
if (fragment != null)
|
||||||
|
childFragmentManager.beginTransaction().remove(fragment)
|
||||||
|
|
||||||
|
AppMenuSheet().apply {
|
||||||
|
arguments = Bundle().apply {
|
||||||
|
putString(Constants.STRING_EXTRA, gson.toJson(app))
|
||||||
|
}
|
||||||
|
}.show(
|
||||||
|
childFragmentManager,
|
||||||
|
AppMenuSheet.TAG
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,7 +29,7 @@ import com.aurora.gplayapi.data.models.StreamCluster
|
|||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.databinding.FragmentTopContainerBinding
|
import com.aurora.store.databinding.FragmentTopContainerBinding
|
||||||
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
||||||
import com.aurora.store.view.epoxy.views.AppListViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import com.aurora.gplayapi.data.models.StreamCluster
|
|||||||
import com.aurora.store.databinding.ActivityGenericRecyclerBinding
|
import com.aurora.store.databinding.ActivityGenericRecyclerBinding
|
||||||
import com.aurora.store.util.extensions.close
|
import com.aurora.store.util.extensions.close
|
||||||
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
||||||
import com.aurora.store.view.epoxy.views.AppListViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
||||||
import com.aurora.store.viewmodel.browse.StreamBrowseViewModel
|
import com.aurora.store.viewmodel.browse.StreamBrowseViewModel
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import com.aurora.gplayapi.data.models.SearchBundle
|
|||||||
import com.aurora.store.databinding.ActivityGenericRecyclerBinding
|
import com.aurora.store.databinding.ActivityGenericRecyclerBinding
|
||||||
import com.aurora.store.util.extensions.close
|
import com.aurora.store.util.extensions.close
|
||||||
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
||||||
import com.aurora.store.view.epoxy.views.AppListViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseActivity
|
import com.aurora.store.view.ui.commons.BaseActivity
|
||||||
import com.aurora.store.viewmodel.search.SearchResultViewModel
|
import com.aurora.store.viewmodel.search.SearchResultViewModel
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ import com.aurora.store.util.extensions.close
|
|||||||
import com.aurora.store.util.extensions.load
|
import com.aurora.store.util.extensions.load
|
||||||
import com.aurora.store.util.extensions.toast
|
import com.aurora.store.util.extensions.toast
|
||||||
import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_
|
import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_
|
||||||
import com.aurora.store.view.epoxy.views.AppListViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.AppViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.details.ScreenshotViewModel_
|
import com.aurora.store.view.epoxy.views.details.ScreenshotViewModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseActivity
|
import com.aurora.store.view.ui.commons.BaseActivity
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import com.aurora.gplayapi.data.models.StreamCluster
|
|||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.databinding.FragmentTopContainerBinding
|
import com.aurora.store.databinding.FragmentTopContainerBinding
|
||||||
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
||||||
import com.aurora.store.view.epoxy.views.AppListViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseFragment
|
import com.aurora.store.view.ui.commons.BaseFragment
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import com.aurora.store.R
|
|||||||
import com.aurora.store.databinding.ActivityGenericRecyclerBinding
|
import com.aurora.store.databinding.ActivityGenericRecyclerBinding
|
||||||
import com.aurora.store.util.extensions.close
|
import com.aurora.store.util.extensions.close
|
||||||
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
||||||
import com.aurora.store.view.epoxy.views.AppListViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseActivity
|
import com.aurora.store.view.ui.commons.BaseActivity
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import com.aurora.store.databinding.ActivitySearchResultBinding
|
|||||||
import com.aurora.store.util.extensions.close
|
import com.aurora.store.util.extensions.close
|
||||||
import com.aurora.store.util.extensions.open
|
import com.aurora.store.util.extensions.open
|
||||||
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
|
||||||
import com.aurora.store.view.epoxy.views.AppListViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppListViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
import com.aurora.store.view.epoxy.views.AppProgressViewModel_
|
||||||
import com.aurora.store.view.ui.commons.BaseActivity
|
import com.aurora.store.view.ui.commons.BaseActivity
|
||||||
import com.aurora.store.view.ui.downloads.DownloadActivity
|
import com.aurora.store.view.ui.downloads.DownloadActivity
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import com.aurora.store.databinding.FragmentUpdatesBinding
|
|||||||
import com.aurora.store.util.Log
|
import com.aurora.store.util.Log
|
||||||
import com.aurora.store.util.extensions.flushAndAdd
|
import com.aurora.store.util.extensions.flushAndAdd
|
||||||
import com.aurora.store.util.extensions.toast
|
import com.aurora.store.util.extensions.toast
|
||||||
import com.aurora.store.view.epoxy.views.AppUpdateViewModel_
|
import com.aurora.store.view.epoxy.views.app.AppUpdateViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.UpdateHeaderViewModel_
|
import com.aurora.store.view.epoxy.views.UpdateHeaderViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
|
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
|
||||||
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
|
||||||
|
|||||||
@@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
* 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.all
|
||||||
|
|
||||||
|
import android.app.Application
|
||||||
|
import androidx.lifecycle.MutableLiveData
|
||||||
|
import androidx.lifecycle.viewModelScope
|
||||||
|
import com.aurora.gplayapi.data.models.App
|
||||||
|
import com.aurora.gplayapi.helpers.PurchaseHelper
|
||||||
|
import com.aurora.store.data.RequestState
|
||||||
|
import com.aurora.store.data.network.HttpClient
|
||||||
|
import com.aurora.store.data.providers.AuthProvider
|
||||||
|
import com.aurora.store.viewmodel.BaseAndroidViewModel
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.supervisorScope
|
||||||
|
import org.greenrobot.eventbus.EventBus
|
||||||
|
|
||||||
|
class PurchasedViewModel(application: Application) : BaseAndroidViewModel(application) {
|
||||||
|
|
||||||
|
private val authData = AuthProvider
|
||||||
|
.with(application)
|
||||||
|
.getAuthData()
|
||||||
|
|
||||||
|
private val purchaseHelper = PurchaseHelper(authData)
|
||||||
|
.using(HttpClient.getPreferredClient())
|
||||||
|
|
||||||
|
val liveData: MutableLiveData<List<App>> = MutableLiveData()
|
||||||
|
|
||||||
|
var appList: MutableList<App> = mutableListOf()
|
||||||
|
|
||||||
|
init {
|
||||||
|
requestState = RequestState.Init
|
||||||
|
observe()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun observe() {
|
||||||
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
|
supervisorScope {
|
||||||
|
try {
|
||||||
|
appList.addAll(purchaseHelper.getPurchaseHistory(appList.size))
|
||||||
|
liveData.postValue(appList)
|
||||||
|
requestState = RequestState.Complete
|
||||||
|
} catch (e: Exception) {
|
||||||
|
requestState = RequestState.Pending
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCleared() {
|
||||||
|
super.onCleared()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -117,13 +117,13 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.Aurora.Tab" parent="Widget.AppCompat.Light.ActionBar.TabText">
|
<style name="TextAppearance.Aurora.Tab" parent="Widget.AppCompat.Light.ActionBar.TabText">
|
||||||
<item name="android:fontFamily">@font/gilroy_extra_bold</item>
|
<item name="android:textSize">14sp</item>
|
||||||
<item name="android:textSize">12sp</item>
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.Aurora.Tab.Title" parent="TextAppearance.Aurora.Tab">
|
<style name="TextAppearance.Aurora.Tab.Title" parent="TextAppearance.Aurora.Tab">
|
||||||
<item name="android:letterSpacing">0.075</item>
|
<item name="android:letterSpacing">0.075</item>
|
||||||
<item name="textAllCaps">true</item>
|
<item name="textAllCaps">false</item>
|
||||||
|
<item name="android:textStyle">bold</item>
|
||||||
<item name="android:textSize">14sp</item>
|
<item name="android:textSize">14sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
@@ -286,6 +286,7 @@
|
|||||||
<string name="title_installed">"Installed"</string>
|
<string name="title_installed">"Installed"</string>
|
||||||
<string name="title_language">"Language"</string>
|
<string name="title_language">"Language"</string>
|
||||||
<string name="title_library">"Library"</string>
|
<string name="title_library">"Library"</string>
|
||||||
|
<string name="title_purchase_history">"Purchase history"</string>
|
||||||
<string name="title_settings">"Settings"</string>
|
<string name="title_settings">"Settings"</string>
|
||||||
<string name="title_spoof_manager">"Spoof manager"</string>
|
<string name="title_spoof_manager">"Spoof manager"</string>
|
||||||
<string name="title_updates">"Updates"</string>
|
<string name="title_updates">"Updates"</string>
|
||||||
|
|||||||
@@ -125,13 +125,11 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.Aurora.Tab" parent="Widget.AppCompat.Light.ActionBar.TabText">
|
<style name="TextAppearance.Aurora.Tab" parent="Widget.AppCompat.Light.ActionBar.TabText">
|
||||||
<item name="android:fontFamily">@font/gilroy_extra_bold</item>
|
<item name="android:textSize">14sp</item>
|
||||||
<item name="android:textSize">12sp</item>
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.Aurora.Tab.Title" parent="TextAppearance.Aurora.Tab">
|
<style name="TextAppearance.Aurora.Tab.Title" parent="TextAppearance.Aurora.Tab">
|
||||||
<item name="textAllCaps">true</item>
|
<item name="textAllCaps">false</item>
|
||||||
<item name="android:textSize">14sp</item>
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="TextAppearance.Aurora.Chip" parent="TextAppearance.Aurora.SubTitle">
|
<style name="TextAppearance.Aurora.Chip" parent="TextAppearance.Aurora.SubTitle">
|
||||||
|
|||||||
Reference in New Issue
Block a user