Improve viewbinding - [1/3]

This commit is contained in:
Rahul Patel
2024-07-10 23:31:42 +05:30
committed by Aayush Gupta
parent cb4f36c2d5
commit 47760b7407
43 changed files with 107 additions and 473 deletions

View File

@@ -21,7 +21,6 @@ package com.aurora.store.view.ui.about
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@@ -33,18 +32,14 @@ import com.aurora.store.R
import com.aurora.store.data.model.Link import com.aurora.store.data.model.Link
import com.aurora.store.databinding.FragmentAboutBinding import com.aurora.store.databinding.FragmentAboutBinding
import com.aurora.store.view.epoxy.views.preference.LinkViewModel_ import com.aurora.store.view.epoxy.views.preference.LinkViewModel_
import com.aurora.store.view.ui.commons.BaseFragment
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class AboutFragment : Fragment(R.layout.fragment_about) { class AboutFragment : BaseFragment<FragmentAboutBinding>() {
private var _binding: FragmentAboutBinding? = null
private val binding: FragmentAboutBinding
get() = _binding!!
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentAboutBinding.bind(view)
// Toolbar // Toolbar
binding.layoutToolbarAction.txtTitle.text = getString(R.string.title_about) binding.layoutToolbarAction.txtTitle.text = getString(R.string.title_about)
@@ -66,11 +61,6 @@ class AboutFragment : Fragment(R.layout.fragment_about) {
updateController() updateController()
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController() { private fun updateController() {
val linkURLS = resources.getStringArray(R.array.link_urls) val linkURLS = resources.getStringArray(R.array.link_urls)
val linkTitles = resources.getStringArray(R.array.link_titles) val linkTitles = resources.getStringArray(R.array.link_titles)

View File

@@ -21,7 +21,6 @@ package com.aurora.store.view.ui.account
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import coil.load import coil.load
import coil.transform.RoundedCornersTransformation import coil.transform.RoundedCornersTransformation
@@ -33,22 +32,18 @@ import com.aurora.store.R
import com.aurora.store.data.providers.AccountProvider import com.aurora.store.data.providers.AccountProvider
import com.aurora.store.data.providers.AuthProvider import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.databinding.FragmentAccountBinding import com.aurora.store.databinding.FragmentAccountBinding
import com.aurora.store.view.ui.commons.BaseFragment
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class AccountFragment : Fragment(R.layout.fragment_account) { class AccountFragment : BaseFragment<FragmentAccountBinding>() {
private var _binding: FragmentAccountBinding? = null
private val binding: FragmentAccountBinding
get() = _binding!!
@Inject @Inject
lateinit var authProvider: AuthProvider lateinit var authProvider: AuthProvider
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentAccountBinding.bind(view)
// Toolbar // Toolbar
binding.layoutToolbarAction.txtTitle.text = getString(R.string.title_account_manager) binding.layoutToolbarAction.txtTitle.text = getString(R.string.title_account_manager)
@@ -70,7 +65,8 @@ class AccountFragment : Fragment(R.layout.fragment_account) {
transformations(RoundedCornersTransformation(32F)) transformations(RoundedCornersTransformation(32F))
} }
binding.txtName.text = if (authProvider.isAnonymous) "Anonymous" else it.name binding.txtName.text = if (authProvider.isAnonymous) "Anonymous" else it.name
binding.txtEmail.text = if (authProvider.isAnonymous) "anonymous@gmail.com" else it.email binding.txtEmail.text =
if (authProvider.isAnonymous) "anonymous@gmail.com" else it.email
} }
binding.btnLogout.addOnClickListener { binding.btnLogout.addOnClickListener {
@@ -81,9 +77,4 @@ class AccountFragment : Fragment(R.layout.fragment_account) {
) )
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
} }

View File

@@ -29,7 +29,6 @@ import android.webkit.WebView
import android.webkit.WebViewClient import android.webkit.WebViewClient
import android.widget.Toast import android.widget.Toast
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
@@ -38,12 +37,13 @@ import com.aurora.store.R
import com.aurora.store.data.event.BusEvent import com.aurora.store.data.event.BusEvent
import com.aurora.store.databinding.FragmentGoogleBinding import com.aurora.store.databinding.FragmentGoogleBinding
import com.aurora.store.util.AC2DMUtil import com.aurora.store.util.AC2DMUtil
import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.viewmodel.auth.AuthViewModel import com.aurora.store.viewmodel.auth.AuthViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@AndroidEntryPoint @AndroidEntryPoint
class GoogleFragment : Fragment(R.layout.fragment_google) { class GoogleFragment : BaseFragment<FragmentGoogleBinding>() {
private val viewModel: AuthViewModel by activityViewModels() private val viewModel: AuthViewModel by activityViewModels()
@@ -54,13 +54,8 @@ class GoogleFragment : Fragment(R.layout.fragment_google) {
"(function() { return document.getElementById('profileIdentifier').innerHTML; })();" "(function() { return document.getElementById('profileIdentifier').innerHTML; })();"
} }
private var _binding: FragmentGoogleBinding? = null
private val binding: FragmentGoogleBinding
get() = _binding!!
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentGoogleBinding.bind(view)
val cookieManager = CookieManager.getInstance() val cookieManager = CookieManager.getInstance()
@@ -119,11 +114,6 @@ class GoogleFragment : Fragment(R.layout.fragment_google) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun onEventReceived(event: BusEvent) { private fun onEventReceived(event: BusEvent) {
when (event) { when (event) {
is BusEvent.GoogleAAS -> { is BusEvent.GoogleAAS -> {

View File

@@ -30,24 +30,19 @@ import androidx.viewpager2.adapter.FragmentStateAdapter
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.providers.AuthProvider import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.databinding.ActivityGenericPagerBinding import com.aurora.store.databinding.ActivityGenericPagerBinding
import com.aurora.store.view.ui.commons.BaseFragment
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class AppsGamesFragment : Fragment(R.layout.activity_generic_pager) { class AppsGamesFragment : BaseFragment<ActivityGenericPagerBinding>() {
private var _binding: ActivityGenericPagerBinding? = null
private val binding: ActivityGenericPagerBinding
get() = _binding!!
@Inject @Inject
lateinit var authProvider: AuthProvider lateinit var authProvider: AuthProvider
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericPagerBinding.bind(view)
// Toolbar // Toolbar
binding.layoutActionToolbar.toolbar.apply { binding.layoutActionToolbar.toolbar.apply {
@@ -77,11 +72,6 @@ class AppsGamesFragment : Fragment(R.layout.activity_generic_pager) {
}.attach() }.attach()
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
internal class ViewPagerAdapter( internal class ViewPagerAdapter(
fragment: FragmentManager, fragment: FragmentManager,
lifecycle: Lifecycle, lifecycle: Lifecycle,

View File

@@ -26,7 +26,6 @@ import androidx.fragment.app.activityViewModels
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.AuroraApp import com.aurora.store.AuroraApp
import com.aurora.store.R
import com.aurora.store.data.event.BusEvent import com.aurora.store.data.event.BusEvent
import com.aurora.store.databinding.FragmentAppsBinding import com.aurora.store.databinding.FragmentAppsBinding
import com.aurora.store.view.epoxy.views.HeaderViewModel_ import com.aurora.store.view.epoxy.views.HeaderViewModel_
@@ -38,14 +37,9 @@ import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@AndroidEntryPoint @AndroidEntryPoint
class InstalledAppsFragment : BaseFragment(R.layout.fragment_apps) { class InstalledAppsFragment : BaseFragment<FragmentAppsBinding>() {
private val TAG = InstalledAppsFragment::class.java.simpleName private val TAG = InstalledAppsFragment::class.java.simpleName
private var _binding: FragmentAppsBinding? = null
private val binding: FragmentAppsBinding
get() = _binding!!
private val viewModel: InstalledViewModel by activityViewModels() private val viewModel: InstalledViewModel by activityViewModels()
companion object { companion object {
@@ -71,7 +65,6 @@ class InstalledAppsFragment : BaseFragment(R.layout.fragment_apps) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentAppsBinding.bind(view)
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
viewModel.installedApps.collect { viewModel.installedApps.collect {
@@ -84,11 +77,6 @@ class InstalledAppsFragment : BaseFragment(R.layout.fragment_apps) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(appList: List<App>?) { private fun updateController(appList: List<App>?) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)

View File

@@ -35,12 +35,7 @@ import com.aurora.store.viewmodel.all.LibraryAppsViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class LibraryAppsFragment : BaseFragment(R.layout.fragment_apps) { class LibraryAppsFragment : BaseFragment<FragmentAppsBinding>() {
private var _binding: FragmentAppsBinding? = null
private val binding: FragmentAppsBinding
get() = _binding!!
private val viewModel: LibraryAppsViewModel by viewModels() private val viewModel: LibraryAppsViewModel by viewModels()
companion object { companion object {
@@ -54,7 +49,6 @@ class LibraryAppsFragment : BaseFragment(R.layout.fragment_apps) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentAppsBinding.bind(view)
val endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() { val endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() {
override fun onLoadMore(currentPage: Int) { override fun onLoadMore(currentPage: Int) {
@@ -70,11 +64,6 @@ class LibraryAppsFragment : BaseFragment(R.layout.fragment_apps) {
updateController(null) updateController(null)
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(streamCluster: StreamCluster?) { private fun updateController(streamCluster: StreamCluster?) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)

View File

@@ -34,12 +34,7 @@ import com.aurora.store.viewmodel.all.PurchasedViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class PurchasedAppsFragment : BaseFragment(R.layout.fragment_apps) { class PurchasedAppsFragment : BaseFragment<FragmentAppsBinding>() {
private var _binding: FragmentAppsBinding? = null
private val binding: FragmentAppsBinding
get() = _binding!!
private val viewModel: PurchasedViewModel by viewModels() private val viewModel: PurchasedViewModel by viewModels()
companion object { companion object {
@@ -51,7 +46,6 @@ class PurchasedAppsFragment : BaseFragment(R.layout.fragment_apps) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentAppsBinding.bind(view)
val endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener(8) { val endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener(8) {
override fun onLoadMore(currentPage: Int) { override fun onLoadMore(currentPage: Int) {
@@ -68,12 +62,6 @@ class PurchasedAppsFragment : BaseFragment(R.layout.fragment_apps) {
updateController(null) updateController(null)
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(paginatedAppList: PaginatedAppList?) { private fun updateController(paginatedAppList: PaginatedAppList?) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)
@@ -98,7 +86,7 @@ class PurchasedAppsFragment : BaseFragment(R.layout.fragment_apps) {
) )
} }
if (paginatedAppList.hasMore){ if (paginatedAppList.hasMore) {
add( add(
AppProgressViewModel_() AppProgressViewModel_()
.id("progress") .id("progress")

View File

@@ -31,6 +31,7 @@ import com.aurora.store.R
import com.aurora.store.data.providers.AuthProvider import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.databinding.FragmentAppsGamesBinding import com.aurora.store.databinding.FragmentAppsGamesBinding
import com.aurora.store.util.Preferences 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.CategoryFragment
import com.aurora.store.view.ui.commons.EditorChoiceFragment import com.aurora.store.view.ui.commons.EditorChoiceFragment
import com.aurora.store.view.ui.commons.ForYouFragment import com.aurora.store.view.ui.commons.ForYouFragment
@@ -41,17 +42,13 @@ import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class AppsContainerFragment : Fragment(R.layout.fragment_apps_games) { class AppsContainerFragment : BaseFragment<FragmentAppsGamesBinding>() {
private var _binding: FragmentAppsGamesBinding? = null
private val binding get() = _binding!!
@Inject @Inject
lateinit var authProvider: AuthProvider lateinit var authProvider: AuthProvider
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentAppsGamesBinding.bind(view)
// Toolbar // Toolbar
binding.toolbar.apply { binding.toolbar.apply {
@@ -61,6 +58,7 @@ class AppsContainerFragment : Fragment(R.layout.fragment_apps_games) {
R.id.menu_download_manager -> { R.id.menu_download_manager -> {
findNavController().navigate(R.id.downloadFragment) findNavController().navigate(R.id.downloadFragment)
} }
R.id.menu_more -> { R.id.menu_more -> {
findNavController().navigate( findNavController().navigate(
MobileNavigationDirections.actionGlobalMoreDialogFragment() MobileNavigationDirections.actionGlobalMoreDialogFragment()
@@ -114,9 +112,8 @@ class AppsContainerFragment : Fragment(R.layout.fragment_apps_games) {
} }
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView()
binding.pager.adapter = null binding.pager.adapter = null
_binding = null super.onDestroyView()
} }
internal class ViewPagerAdapter( internal class ViewPagerAdapter(

View File

@@ -19,24 +19,49 @@
package com.aurora.store.view.ui.commons package com.aurora.store.view.ui.commons
import androidx.annotation.LayoutRes import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.viewbinding.ViewBinding
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.Category
import com.aurora.store.MobileNavigationDirections import com.aurora.store.MobileNavigationDirections
import com.google.gson.Gson import com.google.gson.Gson
import java.lang.reflect.ParameterizedType
import javax.inject.Inject import javax.inject.Inject
abstract class BaseFragment : Fragment { abstract class BaseFragment<ViewBindingType : ViewBinding> : Fragment() {
constructor(): super()
constructor(@LayoutRes contentLayoutId: Int) : super(contentLayoutId)
@Inject @Inject
lateinit var gson: Gson lateinit var gson: Gson
private var _binding: ViewBindingType? = null
protected val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val type =
(javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<ViewBindingType>
val method = type.getMethod(
"inflate",
LayoutInflater::class.java,
ViewGroup::class.java,
Boolean::class.java
)
_binding = method.invoke(null, inflater, container, false) as ViewBindingType
return binding.root
}
override fun onDestroyView() {
_binding = null
super.onDestroyView()
}
fun openDetailsFragment(packageName: String, app: App? = null) { fun openDetailsFragment(packageName: String, app: App? = null) {
findNavController().navigate( findNavController().navigate(
MobileNavigationDirections.actionGlobalAppDetailsFragment(packageName, app) MobileNavigationDirections.actionGlobalAppDetailsFragment(packageName, app)

View File

@@ -21,7 +21,6 @@ package com.aurora.store.view.ui.commons
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
@@ -36,12 +35,7 @@ import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@AndroidEntryPoint @AndroidEntryPoint
class BlacklistFragment : Fragment(R.layout.activity_generic_recycler) { class BlacklistFragment : BaseFragment<ActivityGenericRecyclerBinding>() {
private var _binding: ActivityGenericRecyclerBinding? = null
private val binding: ActivityGenericRecyclerBinding
get() = _binding!!
private val viewModel: BlacklistViewModel by activityViewModels() private val viewModel: BlacklistViewModel by activityViewModels()
private lateinit var blacklistProvider: BlacklistProvider private lateinit var blacklistProvider: BlacklistProvider
@@ -49,7 +43,6 @@ class BlacklistFragment : Fragment(R.layout.activity_generic_recycler) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericRecyclerBinding.bind(view)
blacklistProvider = BlacklistProvider.with(requireContext()) blacklistProvider = BlacklistProvider.with(requireContext())
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
@@ -70,11 +63,6 @@ class BlacklistFragment : Fragment(R.layout.activity_generic_recycler) {
blacklistProvider.save(viewModel.selected) blacklistProvider.save(viewModel.selected)
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(blackList: List<App>?) { private fun updateController(blackList: List<App>?) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)

View File

@@ -28,7 +28,6 @@ import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.StreamBundle import com.aurora.gplayapi.data.models.StreamBundle
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.gplayapi.helpers.contracts.StreamContract import com.aurora.gplayapi.helpers.contracts.StreamContract
import com.aurora.store.R
import com.aurora.store.data.model.ViewState import com.aurora.store.data.model.ViewState
import com.aurora.store.data.model.ViewState.Loading.getDataAs import com.aurora.store.data.model.ViewState.Loading.getDataAs
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
@@ -39,13 +38,8 @@ import com.aurora.store.viewmodel.subcategory.SubCategoryClusterViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class CategoryBrowseFragment : BaseFragment(R.layout.activity_generic_recycler), class CategoryBrowseFragment : BaseFragment<ActivityGenericRecyclerBinding>(),
GenericCarouselController.Callbacks { GenericCarouselController.Callbacks {
private var _binding: ActivityGenericRecyclerBinding? = null
private val binding: ActivityGenericRecyclerBinding
get() = _binding!!
private val args: CategoryBrowseFragmentArgs by navArgs() private val args: CategoryBrowseFragmentArgs by navArgs()
private val viewModel: SubCategoryClusterViewModel by activityViewModels() private val viewModel: SubCategoryClusterViewModel by activityViewModels()
@@ -55,8 +49,6 @@ class CategoryBrowseFragment : BaseFragment(R.layout.activity_generic_recycler),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericRecyclerBinding.bind(view)
val rawCategory = args.browseUrl.split("/").last() val rawCategory = args.browseUrl.split("/").last()
category = StreamContract.Category.NONE.apply { value = rawCategory } category = StreamContract.Category.NONE.apply { value = rawCategory }
@@ -96,11 +88,6 @@ class CategoryBrowseFragment : BaseFragment(R.layout.activity_generic_recycler),
viewModel.observe(category) viewModel.observe(category)
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onHeaderClicked(streamCluster: StreamCluster) { override fun onHeaderClicked(streamCluster: StreamCluster) {
} }

View File

@@ -25,7 +25,6 @@ import androidx.fragment.app.viewModels
import com.aurora.Constants import com.aurora.Constants
import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.Category
import com.aurora.store.CategoryStash import com.aurora.store.CategoryStash
import com.aurora.store.R
import com.aurora.store.data.model.ViewState import com.aurora.store.data.model.ViewState
import com.aurora.store.data.model.ViewState.Empty.getDataAs import com.aurora.store.data.model.ViewState.Empty.getDataAs
import com.aurora.store.databinding.FragmentGenericRecyclerBinding import com.aurora.store.databinding.FragmentGenericRecyclerBinding
@@ -35,11 +34,7 @@ import com.aurora.store.viewmodel.category.CategoryViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class CategoryFragment : BaseFragment(R.layout.fragment_generic_recycler) { class CategoryFragment : BaseFragment<FragmentGenericRecyclerBinding>() {
private var _binding: FragmentGenericRecyclerBinding? = null
private val binding get() = _binding!!
private val viewModel: CategoryViewModel by viewModels() private val viewModel: CategoryViewModel by viewModels()
companion object { companion object {
@@ -55,7 +50,6 @@ class CategoryFragment : BaseFragment(R.layout.fragment_generic_recycler) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentGenericRecyclerBinding.bind(view)
var pageType = 0 var pageType = 0
val bundle = arguments val bundle = arguments
@@ -109,9 +103,4 @@ class CategoryFragment : BaseFragment(R.layout.fragment_generic_recycler) {
} }
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
} }

View File

@@ -25,19 +25,14 @@ import androidx.fragment.app.viewModels
import com.aurora.Constants import com.aurora.Constants
import com.aurora.gplayapi.data.models.editor.EditorChoiceCluster import com.aurora.gplayapi.data.models.editor.EditorChoiceCluster
import com.aurora.gplayapi.helpers.contracts.StreamContract import com.aurora.gplayapi.helpers.contracts.StreamContract
import com.aurora.store.R
import com.aurora.store.databinding.FragmentForYouBinding import com.aurora.store.databinding.FragmentForYouBinding
import com.aurora.store.view.epoxy.controller.EditorChoiceController import com.aurora.store.view.epoxy.controller.EditorChoiceController
import com.aurora.store.viewmodel.editorschoice.EditorChoiceViewModel import com.aurora.store.viewmodel.editorschoice.EditorChoiceViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class EditorChoiceFragment : BaseFragment(R.layout.fragment_for_you), class EditorChoiceFragment : BaseFragment<FragmentForYouBinding>(),
EditorChoiceController.Callbacks { EditorChoiceController.Callbacks {
private var _binding: FragmentForYouBinding? = null
private val binding get() = _binding!!
private val viewModel: EditorChoiceViewModel by viewModels() private val viewModel: EditorChoiceViewModel by viewModels()
companion object { companion object {
@@ -53,7 +48,6 @@ class EditorChoiceFragment : BaseFragment(R.layout.fragment_for_you),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentForYouBinding.bind(view)
var pageType = 0 var pageType = 0
val bundle = arguments val bundle = arguments
@@ -74,11 +68,6 @@ class EditorChoiceFragment : BaseFragment(R.layout.fragment_for_you),
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onClick(editorChoiceCluster: EditorChoiceCluster) { override fun onClick(editorChoiceCluster: EditorChoiceCluster) {
openEditorStreamBrowseFragment( openEditorStreamBrowseFragment(
editorChoiceCluster.clusterBrowseUrl, editorChoiceCluster.clusterBrowseUrl,

View File

@@ -26,7 +26,6 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import com.airbnb.epoxy.EpoxyModel import com.airbnb.epoxy.EpoxyModel
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_ import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_
import com.aurora.store.view.epoxy.views.EditorHeadViewModel_ import com.aurora.store.view.epoxy.views.EditorHeadViewModel_
@@ -39,20 +38,13 @@ import com.aurora.store.viewmodel.editorschoice.EditorBrowseViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class EditorStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycler) { class EditorStreamBrowseFragment : BaseFragment<ActivityGenericRecyclerBinding>() {
private var _binding: ActivityGenericRecyclerBinding? = null
private val binding: ActivityGenericRecyclerBinding
get() = _binding!!
private val args: EditorStreamBrowseFragmentArgs by navArgs() private val args: EditorStreamBrowseFragmentArgs by navArgs()
private val viewModel: EditorBrowseViewModel by viewModels() private val viewModel: EditorBrowseViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericRecyclerBinding.bind(view)
// Toolbar // Toolbar
binding.layoutToolbarAction.apply { binding.layoutToolbarAction.apply {
txtTitle.text = args.title txtTitle.text = args.title
@@ -69,11 +61,6 @@ class EditorStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycl
updateController(null) updateController(null)
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(appList: MutableList<App>?) { private fun updateController(appList: MutableList<App>?) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)

View File

@@ -26,7 +26,6 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import com.airbnb.epoxy.EpoxyModel import com.airbnb.epoxy.EpoxyModel
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.store.R
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_ import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_
@@ -39,12 +38,7 @@ import com.aurora.store.viewmodel.browse.ExpandedStreamBrowseViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class ExpandedStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycler) { class ExpandedStreamBrowseFragment : BaseFragment<ActivityGenericRecyclerBinding>() {
private var _binding: ActivityGenericRecyclerBinding? = null
private val binding: ActivityGenericRecyclerBinding
get() = _binding!!
private val args: ExpandedStreamBrowseFragmentArgs by navArgs() private val args: ExpandedStreamBrowseFragmentArgs by navArgs()
private val viewModel: ExpandedStreamBrowseViewModel by viewModels() private val viewModel: ExpandedStreamBrowseViewModel by viewModels()
@@ -53,7 +47,6 @@ class ExpandedStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recy
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericRecyclerBinding.bind(view)
// Toolbar // Toolbar
binding.layoutToolbarAction.apply { binding.layoutToolbarAction.apply {
@@ -75,11 +68,6 @@ class ExpandedStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recy
updateController(null) updateController(null)
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateTitle(streamCluster: StreamCluster) { private fun updateTitle(streamCluster: StreamCluster) {
if (streamCluster.clusterTitle.isNotEmpty()) if (streamCluster.clusterTitle.isNotEmpty())
binding.layoutToolbarAction.txtTitle.text = streamCluster.clusterTitle binding.layoutToolbarAction.txtTitle.text = streamCluster.clusterTitle

View File

@@ -39,12 +39,7 @@ import kotlinx.coroutines.launch
import java.util.Calendar import java.util.Calendar
@AndroidEntryPoint @AndroidEntryPoint
class FavouriteFragment : BaseFragment(R.layout.fragment_favourite) { class FavouriteFragment : BaseFragment<FragmentFavouriteBinding>() {
private var _binding: FragmentFavouriteBinding? = null
private val binding: FragmentFavouriteBinding
get() = _binding!!
private val viewModel: FavouriteViewModel by viewModels() private val viewModel: FavouriteViewModel by viewModels()
private val mimeType = "application/json" private val mimeType = "application/json"
@@ -60,8 +55,6 @@ class FavouriteFragment : BaseFragment(R.layout.fragment_favourite) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentFavouriteBinding.bind(view)
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
viewModel.favouritesList.collect { viewModel.favouritesList.collect {
updateController(it) updateController(it)
@@ -87,11 +80,6 @@ class FavouriteFragment : BaseFragment(R.layout.fragment_favourite) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(favourites: List<Favourite>?) { private fun updateController(favourites: List<Favourite>?) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)

View File

@@ -29,7 +29,6 @@ import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.gplayapi.helpers.contracts.StreamContract.Category import com.aurora.gplayapi.helpers.contracts.StreamContract.Category
import com.aurora.gplayapi.helpers.contracts.StreamContract.Type import com.aurora.gplayapi.helpers.contracts.StreamContract.Type
import com.aurora.store.HomeStash import com.aurora.store.HomeStash
import com.aurora.store.R
import com.aurora.store.data.model.ViewState import com.aurora.store.data.model.ViewState
import com.aurora.store.data.model.ViewState.Loading.getDataAs import com.aurora.store.data.model.ViewState.Loading.getDataAs
import com.aurora.store.databinding.FragmentForYouBinding import com.aurora.store.databinding.FragmentForYouBinding
@@ -39,12 +38,8 @@ import com.aurora.store.viewmodel.homestream.StreamViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class ForYouFragment : BaseFragment(R.layout.fragment_for_you), class ForYouFragment : BaseFragment<FragmentForYouBinding>(),
GenericCarouselController.Callbacks { GenericCarouselController.Callbacks {
private var _binding: FragmentForYouBinding? = null
private val binding get() = _binding!!
private val viewModel: StreamViewModel by activityViewModels() private val viewModel: StreamViewModel by activityViewModels()
private var category: Category = Category.APPLICATION private var category: Category = Category.APPLICATION
@@ -63,7 +58,6 @@ class ForYouFragment : BaseFragment(R.layout.fragment_for_you),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentForYouBinding.bind(view)
val genericCarouselController = GenericCarouselController(this) val genericCarouselController = GenericCarouselController(this)
@@ -112,11 +106,6 @@ class ForYouFragment : BaseFragment(R.layout.fragment_for_you),
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onHeaderClicked(streamCluster: StreamCluster) { override fun onHeaderClicked(streamCluster: StreamCluster) {
} }

View File

@@ -25,7 +25,6 @@ import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import com.aurora.gplayapi.data.models.StreamCluster import com.aurora.gplayapi.data.models.StreamCluster
import com.aurora.store.R
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.views.AppProgressViewModel_ import com.aurora.store.view.epoxy.views.AppProgressViewModel_
@@ -35,12 +34,7 @@ import com.aurora.store.viewmodel.browse.StreamBrowseViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class StreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycler) { class StreamBrowseFragment : BaseFragment<ActivityGenericRecyclerBinding>() {
private var _binding: ActivityGenericRecyclerBinding? = null
private val binding: ActivityGenericRecyclerBinding
get() = _binding!!
private val args: StreamBrowseFragmentArgs by navArgs() private val args: StreamBrowseFragmentArgs by navArgs()
private val viewModel: StreamBrowseViewModel by viewModels() private val viewModel: StreamBrowseViewModel by viewModels()
@@ -49,7 +43,6 @@ class StreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycler) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericRecyclerBinding.bind(view)
// Toolbar // Toolbar
binding.layoutToolbarAction.apply { binding.layoutToolbarAction.apply {
@@ -79,11 +72,6 @@ class StreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycler) {
updateController(null) updateController(null)
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(streamCluster: StreamCluster?) { private fun updateController(streamCluster: StreamCluster?) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)

View File

@@ -32,11 +32,7 @@ import com.aurora.store.databinding.FragmentTopChartBinding
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class TopChartContainerFragment : Fragment(R.layout.fragment_top_chart) { class TopChartContainerFragment : BaseFragment<FragmentTopChartBinding>() {
private var _binding: FragmentTopChartBinding? = null
private val binding get() = _binding!!
companion object { companion object {
@JvmStatic @JvmStatic
fun newInstance(chartType: Int): TopChartContainerFragment { fun newInstance(chartType: Int): TopChartContainerFragment {
@@ -50,7 +46,6 @@ class TopChartContainerFragment : Fragment(R.layout.fragment_top_chart) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentTopChartBinding.bind(view)
var chartType = 0 var chartType = 0
val bundle = arguments val bundle = arguments
@@ -84,9 +79,8 @@ class TopChartContainerFragment : Fragment(R.layout.fragment_top_chart) {
} }
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView()
binding.pager.adapter = null binding.pager.adapter = null
_binding = null super.onDestroyView()
} }
internal class ViewPagerAdapter( internal class ViewPagerAdapter(

View File

@@ -39,10 +39,7 @@ import com.aurora.store.viewmodel.topchart.TopChartViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class TopChartFragment : BaseFragment(R.layout.fragment_top_container) { class TopChartFragment : BaseFragment<FragmentTopContainerBinding>() {
private var _binding: FragmentTopContainerBinding? = null
private val binding get() = _binding!!
private val viewModel: TopChartViewModel by activityViewModels() private val viewModel: TopChartViewModel by activityViewModels()
@@ -62,7 +59,6 @@ class TopChartFragment : BaseFragment(R.layout.fragment_top_container) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentTopContainerBinding.bind(view)
var type = 0 var type = 0
var category = 0 var category = 0
@@ -112,11 +108,6 @@ class TopChartFragment : BaseFragment(R.layout.fragment_top_container) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(streamCluster: StreamCluster?) { private fun updateController(streamCluster: StreamCluster?) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)

View File

@@ -96,11 +96,7 @@ import java.util.Locale
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class AppDetailsFragment : BaseFragment(R.layout.fragment_details) { class AppDetailsFragment : BaseFragment<FragmentDetailsBinding>() {
private var _binding: FragmentDetailsBinding? = null
private val binding: FragmentDetailsBinding
get() = _binding!!
private val viewModel: AppDetailsViewModel by viewModels() private val viewModel: AppDetailsViewModel by viewModels()
private val detailsClusterViewModel: DetailsClusterViewModel by viewModels() private val detailsClusterViewModel: DetailsClusterViewModel by viewModels()
@@ -190,7 +186,6 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentDetailsBinding.bind(view)
if (args.app != null) { if (args.app != null) {
app = args.app!! app = args.app!!
@@ -674,11 +669,6 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun attachBottomSheet() { private fun attachBottomSheet() {
binding.layoutDetailsInstall.apply { binding.layoutDetailsInstall.apply {
viewFlipper.setInAnimation(requireContext(), R.anim.fade_in) viewFlipper.setInAnimation(requireContext(), R.anim.fade_in)

View File

@@ -29,19 +29,17 @@ import com.aurora.extensions.browse
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.model.ExodusTracker import com.aurora.store.data.model.ExodusTracker
import com.aurora.store.data.model.Report import com.aurora.store.data.model.Report
import com.aurora.store.databinding.ActivityGenericPagerBinding
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.store.view.epoxy.views.HeaderViewModel_ import com.aurora.store.view.epoxy.views.HeaderViewModel_
import com.aurora.store.view.epoxy.views.details.ExodusViewModel_ import com.aurora.store.view.epoxy.views.details.ExodusViewModel_
import com.aurora.store.view.ui.commons.BaseFragment
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import org.json.JSONObject import org.json.JSONObject
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) { class DetailsExodusFragment : BaseFragment<ActivityGenericRecyclerBinding>() {
private var _binding: ActivityGenericRecyclerBinding? = null
private val binding: ActivityGenericRecyclerBinding
get() = _binding!!
private val args: DetailsExodusFragmentArgs by navArgs() private val args: DetailsExodusFragmentArgs by navArgs()
@@ -50,7 +48,6 @@ class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericRecyclerBinding.bind(view)
// Toolbar // Toolbar
binding.layoutToolbarAction.apply { binding.layoutToolbarAction.apply {
@@ -63,11 +60,6 @@ class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) {
updateController(getExodusTrackersFromReport(args.report)) updateController(getExodusTrackersFromReport(args.report))
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(reviews: List<ExodusTracker>) { private fun updateController(reviews: List<ExodusTracker>) {
binding.recycler.withModels { binding.recycler.withModels {
add( add(

View File

@@ -41,18 +41,13 @@ import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@AndroidEntryPoint @AndroidEntryPoint
class DetailsMoreFragment : BaseFragment(R.layout.fragment_details_more) { class DetailsMoreFragment : BaseFragment<FragmentDetailsMoreBinding>() {
private var _binding: FragmentDetailsMoreBinding? = null
private val binding: FragmentDetailsMoreBinding
get() = _binding!!
private val viewModel: DetailsMoreViewModel by viewModels() private val viewModel: DetailsMoreViewModel by viewModels()
private val args: DetailsMoreFragmentArgs by navArgs() private val args: DetailsMoreFragmentArgs by navArgs()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentDetailsMoreBinding.bind(view)
// Toolbar // Toolbar
binding.layoutToolbarActionMore.toolbar.setOnClickListener { binding.layoutToolbarActionMore.toolbar.setOnClickListener {
@@ -89,11 +84,6 @@ class DetailsMoreFragment : BaseFragment(R.layout.fragment_details_more) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun inflateDescription(app: App) { private fun inflateDescription(app: App) {
binding.layoutToolbarActionMore.txtTitle.text = app.displayName binding.layoutToolbarActionMore.txtTitle.text = app.displayName
binding.txtDescription.text = HtmlCompat.fromHtml( binding.txtDescription.text = HtmlCompat.fromHtml(

View File

@@ -32,15 +32,12 @@ import com.aurora.store.databinding.FragmentDetailsReviewBinding
import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.views.AppProgressViewModel_ import com.aurora.store.view.epoxy.views.AppProgressViewModel_
import com.aurora.store.view.epoxy.views.details.ReviewViewModel_ import com.aurora.store.view.epoxy.views.details.ReviewViewModel_
import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.viewmodel.review.ReviewViewModel import com.aurora.store.viewmodel.review.ReviewViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class DetailsReviewFragment : Fragment(R.layout.fragment_details_review) { class DetailsReviewFragment : BaseFragment<FragmentDetailsReviewBinding>() {
private var _binding: FragmentDetailsReviewBinding? = null
private val binding: FragmentDetailsReviewBinding
get() = _binding!!
private val args: DetailsReviewFragmentArgs by navArgs() private val args: DetailsReviewFragmentArgs by navArgs()
private val viewModel: ReviewViewModel by viewModels() private val viewModel: ReviewViewModel by viewModels()
@@ -51,7 +48,6 @@ class DetailsReviewFragment : Fragment(R.layout.fragment_details_review) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentDetailsReviewBinding.bind(view)
// Toolbar // Toolbar
binding.layoutToolbarActionReview.apply { binding.layoutToolbarActionReview.apply {
@@ -101,11 +97,6 @@ class DetailsReviewFragment : Fragment(R.layout.fragment_details_review) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(reviewCluster: ReviewCluster) { private fun updateController(reviewCluster: ReviewCluster) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)

View File

@@ -35,18 +35,13 @@ import com.aurora.store.viewmodel.search.SearchResultViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class DevAppsFragment : BaseFragment(R.layout.activity_generic_recycler) { class DevAppsFragment : BaseFragment<ActivityGenericRecyclerBinding>() {
private var _binding: ActivityGenericRecyclerBinding? = null
private val binding: ActivityGenericRecyclerBinding
get() = _binding!!
private val args: DevAppsFragmentArgs by navArgs() private val args: DevAppsFragmentArgs by navArgs()
private val viewModel: SearchResultViewModel by viewModels() private val viewModel: SearchResultViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericRecyclerBinding.bind(view)
viewModel.liveData.observe(viewLifecycleOwner) { viewModel.liveData.observe(viewLifecycleOwner) {
updateController(it) updateController(it)
@@ -71,11 +66,6 @@ class DevAppsFragment : BaseFragment(R.layout.activity_generic_recycler) {
viewModel.observeSearchResults("pub:${args.developerName}") viewModel.observeSearchResults("pub:${args.developerName}")
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(searchBundle: SearchBundle) { private fun updateController(searchBundle: SearchBundle) {
binding.recycler binding.recycler
.withModels { .withModels {

View File

@@ -38,19 +38,14 @@ import com.aurora.store.viewmodel.details.DevProfileViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class DevProfileFragment : BaseFragment(R.layout.fragment_dev_profile), class DevProfileFragment : BaseFragment<FragmentDevProfileBinding>(),
GenericCarouselController.Callbacks { GenericCarouselController.Callbacks {
private var _binding: FragmentDevProfileBinding? = null
private val binding: FragmentDevProfileBinding
get() = _binding!!
private val args: DevProfileFragmentArgs by navArgs() private val args: DevProfileFragmentArgs by navArgs()
private val viewModel: DevProfileViewModel by viewModels() private val viewModel: DevProfileViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentDevProfileBinding.bind(view)
val developerCarouselController = DeveloperCarouselController(this) val developerCarouselController = DeveloperCarouselController(this)
@@ -98,11 +93,6 @@ class DevProfileFragment : BaseFragment(R.layout.fragment_dev_profile),
viewModel.getStreamBundle(args.devId) viewModel.getStreamBundle(args.devId)
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onHeaderClicked(streamCluster: StreamCluster) { override fun onHeaderClicked(streamCluster: StreamCluster) {
openStreamBrowseFragment(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle) openStreamBrowseFragment(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle)
} }

View File

@@ -32,20 +32,16 @@ import com.aurora.gplayapi.data.models.Artwork
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.databinding.FragmentScreenshotBinding import com.aurora.store.databinding.FragmentScreenshotBinding
import com.aurora.store.view.epoxy.views.details.LargeScreenshotViewModel_ import com.aurora.store.view.epoxy.views.details.LargeScreenshotViewModel_
import com.aurora.store.view.ui.commons.BaseFragment
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class ScreenshotFragment : Fragment(R.layout.fragment_screenshot) { class ScreenshotFragment : BaseFragment<FragmentScreenshotBinding>() {
private var _binding: FragmentScreenshotBinding? = null
private val binding: FragmentScreenshotBinding
get() = _binding!!
private val args: ScreenshotFragmentArgs by navArgs() private val args: ScreenshotFragmentArgs by navArgs()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentScreenshotBinding.bind(view)
// Toolbar // Toolbar
binding.toolbar.apply { binding.toolbar.apply {
@@ -63,11 +59,6 @@ class ScreenshotFragment : Fragment(R.layout.fragment_screenshot) {
updateController(args.arrayOfArtwork, args.position) updateController(args.arrayOfArtwork, args.position)
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(artworks: Array<Artwork>, position: Int) { private fun updateController(artworks: Array<Artwork>, position: Int) {
binding.recyclerView.withModels { binding.recyclerView.withModels {
artworks.forEach { artworks.forEach {

View File

@@ -3,7 +3,6 @@ package com.aurora.store.view.ui.dispenser
import android.content.SharedPreferences import android.content.SharedPreferences
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.aurora.extensions.copyToClipBoard import com.aurora.extensions.copyToClipBoard
import com.aurora.store.R import com.aurora.store.R
@@ -11,15 +10,13 @@ import com.aurora.store.databinding.FragmentDispenserBinding
import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences
import com.aurora.store.util.Preferences.PREFERENCE_DISPENSER_URLS import com.aurora.store.util.Preferences.PREFERENCE_DISPENSER_URLS
import com.aurora.store.view.epoxy.views.DispenserViewModel_ import com.aurora.store.view.epoxy.views.DispenserViewModel_
import com.aurora.store.view.ui.commons.BaseFragment
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class DispenserFragment : Fragment(R.layout.fragment_dispenser), class DispenserFragment : BaseFragment<FragmentDispenserBinding>(),
SharedPreferences.OnSharedPreferenceChangeListener { SharedPreferences.OnSharedPreferenceChangeListener {
private var _binding: FragmentDispenserBinding? = null
private val binding get() = _binding!!
private val dispensers: Set<String> private val dispensers: Set<String>
get() = Preferences.getStringSet(requireContext(), PREFERENCE_DISPENSER_URLS) get() = Preferences.getStringSet(requireContext(), PREFERENCE_DISPENSER_URLS)
@@ -27,7 +24,6 @@ class DispenserFragment : Fragment(R.layout.fragment_dispenser),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentDispenserBinding.bind(view)
sharedPreferences = Preferences.getPrefs(view.context) sharedPreferences = Preferences.getPrefs(view.context)
sharedPreferences.registerOnSharedPreferenceChangeListener(this) sharedPreferences.registerOnSharedPreferenceChangeListener(this)
@@ -40,9 +36,8 @@ class DispenserFragment : Fragment(R.layout.fragment_dispenser),
} }
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView()
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this) sharedPreferences.unregisterOnSharedPreferenceChangeListener(this)
_binding = null super.onDestroyView()
} }
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {

View File

@@ -41,11 +41,7 @@ import kotlinx.coroutines.launch
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class DownloadFragment : BaseFragment(R.layout.fragment_download) { class DownloadFragment : BaseFragment<FragmentDownloadBinding>() {
private var _binding: FragmentDownloadBinding? = null
private val binding: FragmentDownloadBinding
get() = _binding!!
@Inject @Inject
lateinit var downloadWorkerUtil: DownloadWorkerUtil lateinit var downloadWorkerUtil: DownloadWorkerUtil
@@ -55,8 +51,6 @@ class DownloadFragment : BaseFragment(R.layout.fragment_download) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentDownloadBinding.bind(view)
// Toolbar // Toolbar
binding.layoutToolbarAction.toolbar.apply { binding.layoutToolbarAction.toolbar.apply {
elevation = 0f elevation = 0f
@@ -71,11 +65,13 @@ class DownloadFragment : BaseFragment(R.layout.fragment_download) {
downloadWorkerUtil.clearAllDownloads() downloadWorkerUtil.clearAllDownloads()
} }
} }
R.id.action_cancel_all -> { R.id.action_cancel_all -> {
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) { viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
downloadWorkerUtil.cancelAll() downloadWorkerUtil.cancelAll()
} }
} }
R.id.action_clear_completed -> { R.id.action_clear_completed -> {
viewLifecycleOwner.lifecycleScope.launch(NonCancellable) { viewLifecycleOwner.lifecycleScope.launch(NonCancellable) {
downloadWorkerUtil.clearFinishedDownloads() downloadWorkerUtil.clearFinishedDownloads()
@@ -94,11 +90,6 @@ class DownloadFragment : BaseFragment(R.layout.fragment_download) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(downloads: List<Download>) { private fun updateController(downloads: List<Download>) {
binding.recycler.withModels { binding.recycler.withModels {
if (downloads.isEmpty()) { if (downloads.isEmpty()) {

View File

@@ -31,6 +31,7 @@ import com.aurora.store.R
import com.aurora.store.data.providers.AuthProvider import com.aurora.store.data.providers.AuthProvider
import com.aurora.store.databinding.FragmentAppsGamesBinding import com.aurora.store.databinding.FragmentAppsGamesBinding
import com.aurora.store.util.Preferences 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.CategoryFragment
import com.aurora.store.view.ui.commons.EditorChoiceFragment import com.aurora.store.view.ui.commons.EditorChoiceFragment
import com.aurora.store.view.ui.commons.ForYouFragment import com.aurora.store.view.ui.commons.ForYouFragment
@@ -41,17 +42,13 @@ import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class GamesContainerFragment : Fragment(R.layout.fragment_apps_games) { class GamesContainerFragment : BaseFragment<FragmentAppsGamesBinding>() {
private var _binding: FragmentAppsGamesBinding? = null
private val binding get() = _binding!!
@Inject @Inject
lateinit var authProvider: AuthProvider lateinit var authProvider: AuthProvider
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentAppsGamesBinding.bind(view)
// Toolbar // Toolbar
binding.toolbar.apply { binding.toolbar.apply {
@@ -61,6 +58,7 @@ class GamesContainerFragment : Fragment(R.layout.fragment_apps_games) {
R.id.menu_download_manager -> { R.id.menu_download_manager -> {
findNavController().navigate(R.id.downloadFragment) findNavController().navigate(R.id.downloadFragment)
} }
R.id.menu_more -> { R.id.menu_more -> {
findNavController().navigate( findNavController().navigate(
MobileNavigationDirections.actionGlobalMoreDialogFragment() MobileNavigationDirections.actionGlobalMoreDialogFragment()
@@ -113,9 +111,8 @@ class GamesContainerFragment : Fragment(R.layout.fragment_apps_games) {
} }
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView()
binding.pager.adapter = null binding.pager.adapter = null
_binding = null super.onDestroyView()
} }
internal class ViewPagerAdapter( internal class ViewPagerAdapter(

View File

@@ -9,22 +9,18 @@ import android.provider.Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.fragment.app.Fragment
import com.aurora.extensions.isSAndAbove import com.aurora.extensions.isSAndAbove
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.databinding.FragmentAppLinksBinding import com.aurora.store.databinding.FragmentAppLinksBinding
import com.aurora.store.view.ui.commons.BaseFragment
import com.google.android.material.button.MaterialButton import com.google.android.material.button.MaterialButton
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class AppLinksFragment : Fragment(R.layout.fragment_app_links) { class AppLinksFragment : BaseFragment<FragmentAppLinksBinding>() {
private val TAG = AppLinksFragment::class.java.simpleName private val TAG = AppLinksFragment::class.java.simpleName
private var _binding: FragmentAppLinksBinding? = null
private val binding get() = _binding!!
private val playStoreDomain = "play.google.com" private val playStoreDomain = "play.google.com"
private val marketDomain = "market.android.com" private val marketDomain = "market.android.com"
@@ -41,7 +37,6 @@ class AppLinksFragment : Fragment(R.layout.fragment_app_links) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentAppLinksBinding.bind(view)
buttons = mapOf( buttons = mapOf(
playStoreDomain to binding.playStoreButton, playStoreDomain to binding.playStoreButton,
@@ -69,7 +64,6 @@ class AppLinksFragment : Fragment(R.layout.fragment_app_links) {
override fun onDestroyView() { override fun onDestroyView() {
buttons = emptyMap() buttons = emptyMap()
_binding = null
super.onDestroyView() super.onDestroyView()
} }

View File

@@ -56,14 +56,12 @@ import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_CHECK_INTERVAL
import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_EXTENDED import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_EXTENDED
import com.aurora.store.util.Preferences.PREFERENCE_VENDING_VERSION import com.aurora.store.util.Preferences.PREFERENCE_VENDING_VERSION
import com.aurora.store.util.save import com.aurora.store.util.save
import com.aurora.store.view.ui.commons.BaseFragment
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class OnboardingFragment : Fragment(R.layout.fragment_onboarding) { class OnboardingFragment : BaseFragment<FragmentOnboardingBinding>() {
private var _binding: FragmentOnboardingBinding? = null
private val binding get() = _binding!!
private var lastPosition = 0 private var lastPosition = 0
@@ -85,7 +83,6 @@ class OnboardingFragment : Fragment(R.layout.fragment_onboarding) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentOnboardingBinding.bind(view)
val isDefaultPrefLoaded = Preferences.getBoolean(requireContext(), PREFERENCE_DEFAULT) val isDefaultPrefLoaded = Preferences.getBoolean(requireContext(), PREFERENCE_DEFAULT)
if (!isDefaultPrefLoaded) { if (!isDefaultPrefLoaded) {
@@ -124,11 +121,6 @@ class OnboardingFragment : Fragment(R.layout.fragment_onboarding) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
fun refreshButtonState() { fun refreshButtonState() {
binding.btnBackward.isEnabled = lastPosition != 0 binding.btnBackward.isEnabled = lastPosition != 0
binding.btnForward.isEnabled = lastPosition != 2 binding.btnForward.isEnabled = lastPosition != 2

View File

@@ -48,10 +48,7 @@ import com.aurora.store.view.ui.commons.BaseFragment
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class PermissionsFragment : BaseFragment(R.layout.fragment_onboarding_permissions) { class PermissionsFragment : BaseFragment<FragmentOnboardingPermissionsBinding>() {
private var _binding: FragmentOnboardingPermissionsBinding? = null
private val binding get() = _binding!!
private val startForDozeResult = private val startForDozeResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
@@ -89,7 +86,6 @@ class PermissionsFragment : BaseFragment(R.layout.fragment_onboarding_permission
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentOnboardingPermissionsBinding.bind(view)
// RecyclerView // RecyclerView
val installerList = mutableListOf( val installerList = mutableListOf(
@@ -188,11 +184,6 @@ class PermissionsFragment : BaseFragment(R.layout.fragment_onboarding_permission
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun requestDozePermission() { private fun requestDozePermission() {
if (isMAndAbove()) { if (isMAndAbove()) {
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply { val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply {

View File

@@ -31,14 +31,10 @@ import com.aurora.store.view.ui.commons.BaseFragment
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class WelcomeFragment : BaseFragment(R.layout.fragment_onboarding_welcome) { class WelcomeFragment : BaseFragment<FragmentOnboardingWelcomeBinding>() {
private var _binding: FragmentOnboardingWelcomeBinding? = null
private val binding get() = _binding!!
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentOnboardingWelcomeBinding.bind(view)
// RecyclerView // RecyclerView
binding.epoxyRecycler.withModels { binding.epoxyRecycler.withModels {
@@ -106,9 +102,4 @@ class WelcomeFragment : BaseFragment(R.layout.fragment_onboarding_welcome) {
) )
) )
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
} }

View File

@@ -41,10 +41,7 @@ import rikka.shizuku.Shizuku
import rikka.sui.Sui import rikka.sui.Sui
@AndroidEntryPoint @AndroidEntryPoint
class InstallerFragment : BaseFragment(R.layout.fragment_installer) { class InstallerFragment : BaseFragment<FragmentInstallerBinding>() {
private var _binding: FragmentInstallerBinding? = null
private val binding get() = _binding!!
private var installerId: Int = 0 private var installerId: Int = 0
@@ -74,7 +71,6 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentInstallerBinding.bind(view)
// Toolbar // Toolbar
binding.toolbar.setNavigationOnClickListener { findNavController().navigateUp() } binding.toolbar.setNavigationOnClickListener { findNavController().navigateUp() }
@@ -109,11 +105,6 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onDestroy() { override fun onDestroy() {
if (isOAndAbove() && AppInstaller.hasShizukuOrSui(requireContext())) { if (isOAndAbove() && AppInstaller.hasShizukuOrSui(requireContext())) {
Shizuku.removeBinderReceivedListener(shizukuAliveListener) Shizuku.removeBinderReceivedListener(shizukuAliveListener)
@@ -132,6 +123,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) {
this.installerId = installerId this.installerId = installerId
save(PREFERENCE_INSTALLER_ID, installerId) save(PREFERENCE_INSTALLER_ID, installerId)
} }
2 -> { 2 -> {
if (AppInstaller.hasRootAccess()) { if (AppInstaller.hasRootAccess()) {
this.installerId = installerId this.installerId = installerId
@@ -143,6 +135,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) {
) )
} }
} }
3 -> { 3 -> {
if (AppInstaller.hasAuroraService(requireContext())) { if (AppInstaller.hasAuroraService(requireContext())) {
this.installerId = installerId this.installerId = installerId
@@ -154,6 +147,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) {
) )
} }
} }
4 -> { 4 -> {
if (AppInstaller.hasAppManager(requireContext())) { if (AppInstaller.hasAppManager(requireContext())) {
this.installerId = installerId this.installerId = installerId
@@ -165,6 +159,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) {
) )
} }
} }
5 -> { 5 -> {
if (isOAndAbove() && AppInstaller.hasShizukuOrSui(requireContext())) { if (isOAndAbove() && AppInstaller.hasShizukuOrSui(requireContext())) {
if (shizukuAlive && AppInstaller.hasShizukuPerm()) { if (shizukuAlive && AppInstaller.hasShizukuPerm()) {
@@ -185,6 +180,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) {
) )
} }
} }
else -> { else -> {
this.installerId = installerId this.installerId = installerId
save(PREFERENCE_INSTALLER_ID, installerId) save(PREFERENCE_INSTALLER_ID, installerId)

View File

@@ -37,19 +37,13 @@ import com.aurora.store.viewmodel.sale.AppSalesViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class AppSalesFragment : BaseFragment(R.layout.activity_generic_recycler) { class AppSalesFragment : BaseFragment<ActivityGenericRecyclerBinding>() {
private var _binding: ActivityGenericRecyclerBinding? = null
private val binding: ActivityGenericRecyclerBinding
get() = _binding!!
private val viewModel: AppSalesViewModel by viewModels() private val viewModel: AppSalesViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericRecyclerBinding.bind(view)
binding.layoutToolbarAction.txtTitle.text = getString(R.string.title_apps_sale) binding.layoutToolbarAction.txtTitle.text = getString(R.string.title_apps_sale)
binding.layoutToolbarAction.imgActionPrimary.setOnClickListener { binding.layoutToolbarAction.imgActionPrimary.setOnClickListener {
findNavController().navigateUp() findNavController().navigateUp()
@@ -68,11 +62,6 @@ class AppSalesFragment : BaseFragment(R.layout.activity_generic_recycler) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(paginatedAppList: PaginatedAppList?) { private fun updateController(paginatedAppList: PaginatedAppList?) {
binding.recycler binding.recycler
.withModels { .withModels {

View File

@@ -49,13 +49,9 @@ import com.google.android.material.textfield.TextInputEditText
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class SearchResultsFragment : BaseFragment(R.layout.fragment_search_result), class SearchResultsFragment : BaseFragment<FragmentSearchResultBinding>(),
OnSharedPreferenceChangeListener { OnSharedPreferenceChangeListener {
private var _binding: FragmentSearchResultBinding? = null
private val binding: FragmentSearchResultBinding
get() = _binding!!
private val viewModel: SearchResultViewModel by viewModels() private val viewModel: SearchResultViewModel by viewModels()
private lateinit var searchView: TextInputEditText private lateinit var searchView: TextInputEditText
@@ -70,8 +66,6 @@ class SearchResultsFragment : BaseFragment(R.layout.fragment_search_result),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentSearchResultBinding.bind(view)
sharedPreferences = Preferences.getPrefs(view.context) sharedPreferences = Preferences.getPrefs(view.context)
sharedPreferences.registerOnSharedPreferenceChangeListener(this) sharedPreferences.registerOnSharedPreferenceChangeListener(this)
@@ -132,7 +126,6 @@ class SearchResultsFragment : BaseFragment(R.layout.fragment_search_result),
override fun onDestroyView() { override fun onDestroyView() {
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this) sharedPreferences.unregisterOnSharedPreferenceChangeListener(this)
super.onDestroyView() super.onDestroyView()
_binding = null
} }
override fun onDestroy() { override fun onDestroy() {

View File

@@ -26,7 +26,6 @@ import android.view.KeyEvent
import android.view.View import android.view.View
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.widget.TextView import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.aurora.extensions.showKeyboard import com.aurora.extensions.showKeyboard
@@ -34,16 +33,13 @@ import com.aurora.gplayapi.SearchSuggestEntry
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.databinding.FragmentSearchSuggestionBinding import com.aurora.store.databinding.FragmentSearchSuggestionBinding
import com.aurora.store.view.epoxy.views.SearchSuggestionViewModel_ import com.aurora.store.view.epoxy.views.SearchSuggestionViewModel_
import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.viewmodel.search.SearchSuggestionViewModel import com.aurora.store.viewmodel.search.SearchSuggestionViewModel
import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputEditText
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class SearchSuggestionFragment : Fragment(R.layout.fragment_search_suggestion) { class SearchSuggestionFragment : BaseFragment<FragmentSearchSuggestionBinding>() {
private var _binding: FragmentSearchSuggestionBinding? = null
private val binding: FragmentSearchSuggestionBinding
get() = _binding!!
private val viewModel: SearchSuggestionViewModel by viewModels() private val viewModel: SearchSuggestionViewModel by viewModels()
@@ -54,8 +50,6 @@ class SearchSuggestionFragment : Fragment(R.layout.fragment_search_suggestion) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentSearchSuggestionBinding.bind(view)
// Toolbar // Toolbar
binding.layoutToolbarSearch.apply { binding.layoutToolbarSearch.apply {
searchView = inputSearch searchView = inputSearch
@@ -85,11 +79,6 @@ class SearchSuggestionFragment : Fragment(R.layout.fragment_search_suggestion) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(searchSuggestions: List<SearchSuggestEntry>) { private fun updateController(searchSuggestions: List<SearchSuggestEntry>) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)

View File

@@ -22,7 +22,6 @@ package com.aurora.store.view.ui.splash
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.aurora.extensions.hide import com.aurora.extensions.hide
@@ -36,20 +35,17 @@ import com.aurora.store.util.Preferences
import com.aurora.store.util.Preferences.PREFERENCE_DEFAULT_SELECTED_TAB import com.aurora.store.util.Preferences.PREFERENCE_DEFAULT_SELECTED_TAB
import com.aurora.store.util.Preferences.PREFERENCE_INTRO import com.aurora.store.util.Preferences.PREFERENCE_INTRO
import com.aurora.store.util.Preferences.PREFERENCE_SCOPED_RESTART import com.aurora.store.util.Preferences.PREFERENCE_SCOPED_RESTART
import com.aurora.store.view.ui.commons.BaseFragment
import com.aurora.store.viewmodel.auth.AuthViewModel import com.aurora.store.viewmodel.auth.AuthViewModel
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class SplashFragment : Fragment(R.layout.fragment_splash) { class SplashFragment : BaseFragment<FragmentSplashBinding>() {
private var _binding: FragmentSplashBinding? = null
private val binding get() = _binding!!
private val viewModel: AuthViewModel by activityViewModels() private val viewModel: AuthViewModel by activityViewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentSplashBinding.bind(view)
if (!Preferences.getBoolean(requireContext(), PREFERENCE_INTRO)) { if (!Preferences.getBoolean(requireContext(), PREFERENCE_INTRO)) {
findNavController().navigate( findNavController().navigate(
@@ -166,11 +162,6 @@ class SplashFragment : Fragment(R.layout.fragment_splash) {
viewModel.observe() viewModel.observe()
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateStatus(string: String?) { private fun updateStatus(string: String?) {
activity?.runOnUiThread { binding.txtStatus.text = string } activity?.runOnUiThread { binding.txtStatus.text = string }
} }

View File

@@ -38,11 +38,7 @@ import kotlinx.coroutines.launch
import java.util.Properties import java.util.Properties
@AndroidEntryPoint @AndroidEntryPoint
class DeviceSpoofFragment : BaseFragment(R.layout.fragment_generic_recycler) { class DeviceSpoofFragment : BaseFragment<FragmentGenericRecyclerBinding>() {
private var _binding: FragmentGenericRecyclerBinding? = null
private val binding get() = _binding!!
private val viewModel: SpoofViewModel by viewModels() private val viewModel: SpoofViewModel by viewModels()
private lateinit var spoofProvider: SpoofProvider private lateinit var spoofProvider: SpoofProvider
@@ -59,7 +55,6 @@ class DeviceSpoofFragment : BaseFragment(R.layout.fragment_generic_recycler) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentGenericRecyclerBinding.bind(view)
spoofProvider = SpoofProvider(requireContext()) spoofProvider = SpoofProvider(requireContext())
properties = if (spoofProvider.isDeviceSpoofEnabled()) { properties = if (spoofProvider.isDeviceSpoofEnabled()) {
@@ -76,11 +71,6 @@ class DeviceSpoofFragment : BaseFragment(R.layout.fragment_generic_recycler) {
viewModel.fetchAvailableDevices(view.context) viewModel.fetchAvailableDevices(view.context)
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(locales: List<Properties>) { private fun updateController(locales: List<Properties>) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)

View File

@@ -32,13 +32,9 @@ import dagger.hilt.android.AndroidEntryPoint
import java.util.Locale import java.util.Locale
@AndroidEntryPoint @AndroidEntryPoint
class LocaleSpoofFragment : BaseFragment(R.layout.fragment_generic_recycler) { class LocaleSpoofFragment : BaseFragment<FragmentGenericRecyclerBinding>() {
private val TAG = LocaleSpoofFragment::class.java.simpleName private val TAG = LocaleSpoofFragment::class.java.simpleName
private var _binding: FragmentGenericRecyclerBinding? = null
private val binding get() = _binding!!
private lateinit var spoofProvider: SpoofProvider private lateinit var spoofProvider: SpoofProvider
private lateinit var locale: Locale private lateinit var locale: Locale
@@ -53,7 +49,6 @@ class LocaleSpoofFragment : BaseFragment(R.layout.fragment_generic_recycler) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentGenericRecyclerBinding.bind(view)
spoofProvider = SpoofProvider(requireContext()) spoofProvider = SpoofProvider(requireContext())
locale = if (spoofProvider.isLocaleSpoofEnabled()) { locale = if (spoofProvider.isLocaleSpoofEnabled()) {
@@ -69,11 +64,6 @@ class LocaleSpoofFragment : BaseFragment(R.layout.fragment_generic_recycler) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun updateController(locales: List<Locale>) { private fun updateController(locales: List<Locale>) {
binding.recycler.withModels { binding.recycler.withModels {
setFilterDuplicates(true) setFilterDuplicates(true)

View File

@@ -36,17 +36,13 @@ import com.aurora.store.R
import com.aurora.store.data.providers.NativeDeviceInfoProvider import com.aurora.store.data.providers.NativeDeviceInfoProvider
import com.aurora.store.databinding.ActivityGenericPagerBinding import com.aurora.store.databinding.ActivityGenericPagerBinding
import com.aurora.store.util.PathUtil import com.aurora.store.util.PathUtil
import com.aurora.store.view.ui.commons.BaseFragment
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint @AndroidEntryPoint
class SpoofFragment : Fragment(R.layout.activity_generic_pager) { class SpoofFragment : BaseFragment<ActivityGenericPagerBinding>() {
private var _binding: ActivityGenericPagerBinding? = null
private val binding: ActivityGenericPagerBinding
get() = _binding!!
private val TAG = SpoofFragment::class.java.simpleName private val TAG = SpoofFragment::class.java.simpleName
// Android is weird, even if export device config with proper mime type, it will refuse to open // Android is weird, even if export device config with proper mime type, it will refuse to open
@@ -65,7 +61,6 @@ class SpoofFragment : Fragment(R.layout.activity_generic_pager) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericPagerBinding.bind(view)
// Toolbar // Toolbar
binding.layoutActionToolbar.toolbar.apply { binding.layoutActionToolbar.toolbar.apply {
@@ -107,9 +102,8 @@ class SpoofFragment : Fragment(R.layout.activity_generic_pager) {
} }
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView()
binding.pager.adapter = null binding.pager.adapter = null
_binding = null super.onDestroyView()
} }
private fun importDeviceConfig(uri: Uri) { private fun importDeviceConfig(uri: Uri) {

View File

@@ -54,13 +54,10 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@AndroidEntryPoint @AndroidEntryPoint
class UpdatesFragment : BaseFragment(R.layout.fragment_updates) { class UpdatesFragment : BaseFragment<FragmentUpdatesBinding>() {
private lateinit var app: App private lateinit var app: App
private var _binding: FragmentUpdatesBinding? = null
private val binding get() = _binding!!
private val viewModel: UpdatesViewModel by activityViewModels() private val viewModel: UpdatesViewModel by activityViewModels()
private val startForStorageManagerResult = private val startForStorageManagerResult =
@@ -79,7 +76,6 @@ class UpdatesFragment : BaseFragment(R.layout.fragment_updates) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = FragmentUpdatesBinding.bind(view)
// Toolbar // Toolbar
binding.toolbar.setOnMenuItemClickListener { binding.toolbar.setOnMenuItemClickListener {
@@ -151,11 +147,6 @@ class UpdatesFragment : BaseFragment(R.layout.fragment_updates) {
} }
} }
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun onEvent(event: BusEvent) { private fun onEvent(event: BusEvent) {
when (event) { when (event) {
is BusEvent.InstallEvent, is BusEvent.UninstallEvent -> { is BusEvent.InstallEvent, is BusEvent.UninstallEvent -> {