diff --git a/app/src/main/java/com/aurora/store/view/ui/about/AboutFragment.kt b/app/src/main/java/com/aurora/store/view/ui/about/AboutFragment.kt index 12eeccc34..e1dd16cc9 100644 --- a/app/src/main/java/com/aurora/store/view/ui/about/AboutFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/about/AboutFragment.kt @@ -21,7 +21,6 @@ package com.aurora.store.view.ui.about import android.os.Bundle import android.view.View -import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager 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.databinding.FragmentAboutBinding import com.aurora.store.view.epoxy.views.preference.LinkViewModel_ +import com.aurora.store.view.ui.commons.BaseFragment import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class AboutFragment : Fragment(R.layout.fragment_about) { - - private var _binding: FragmentAboutBinding? = null - private val binding: FragmentAboutBinding - get() = _binding!! +class AboutFragment : BaseFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentAboutBinding.bind(view) // Toolbar binding.layoutToolbarAction.txtTitle.text = getString(R.string.title_about) @@ -66,11 +61,6 @@ class AboutFragment : Fragment(R.layout.fragment_about) { updateController() } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun updateController() { val linkURLS = resources.getStringArray(R.array.link_urls) val linkTitles = resources.getStringArray(R.array.link_titles) diff --git a/app/src/main/java/com/aurora/store/view/ui/account/AccountFragment.kt b/app/src/main/java/com/aurora/store/view/ui/account/AccountFragment.kt index bcdacc5a5..bc8f4881d 100644 --- a/app/src/main/java/com/aurora/store/view/ui/account/AccountFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/account/AccountFragment.kt @@ -21,7 +21,6 @@ package com.aurora.store.view.ui.account import android.os.Bundle import android.view.View -import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import coil.load 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.AuthProvider import com.aurora.store.databinding.FragmentAccountBinding +import com.aurora.store.view.ui.commons.BaseFragment import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject @AndroidEntryPoint -class AccountFragment : Fragment(R.layout.fragment_account) { - - private var _binding: FragmentAccountBinding? = null - private val binding: FragmentAccountBinding - get() = _binding!! +class AccountFragment : BaseFragment() { @Inject lateinit var authProvider: AuthProvider override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentAccountBinding.bind(view) // Toolbar binding.layoutToolbarAction.txtTitle.text = getString(R.string.title_account_manager) @@ -70,7 +65,8 @@ class AccountFragment : Fragment(R.layout.fragment_account) { transformations(RoundedCornersTransformation(32F)) } 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 { @@ -81,9 +77,4 @@ class AccountFragment : Fragment(R.layout.fragment_account) { ) } } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } } diff --git a/app/src/main/java/com/aurora/store/view/ui/account/GoogleFragment.kt b/app/src/main/java/com/aurora/store/view/ui/account/GoogleFragment.kt index 40a96a193..10e486a4f 100644 --- a/app/src/main/java/com/aurora/store/view/ui/account/GoogleFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/account/GoogleFragment.kt @@ -29,7 +29,6 @@ import android.webkit.WebView import android.webkit.WebViewClient import android.widget.Toast import androidx.core.view.isVisible -import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope 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.databinding.FragmentGoogleBinding import com.aurora.store.util.AC2DMUtil +import com.aurora.store.view.ui.commons.BaseFragment import com.aurora.store.viewmodel.auth.AuthViewModel import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch @AndroidEntryPoint -class GoogleFragment : Fragment(R.layout.fragment_google) { +class GoogleFragment : BaseFragment() { private val viewModel: AuthViewModel by activityViewModels() @@ -54,13 +54,8 @@ class GoogleFragment : Fragment(R.layout.fragment_google) { "(function() { return document.getElementById('profileIdentifier').innerHTML; })();" } - private var _binding: FragmentGoogleBinding? = null - private val binding: FragmentGoogleBinding - get() = _binding!! - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentGoogleBinding.bind(view) 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) { when (event) { is BusEvent.GoogleAAS -> { diff --git a/app/src/main/java/com/aurora/store/view/ui/all/AppsGamesFragment.kt b/app/src/main/java/com/aurora/store/view/ui/all/AppsGamesFragment.kt index 49ff31c65..c6db2050d 100644 --- a/app/src/main/java/com/aurora/store/view/ui/all/AppsGamesFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/all/AppsGamesFragment.kt @@ -30,24 +30,19 @@ import androidx.viewpager2.adapter.FragmentStateAdapter import com.aurora.store.R import com.aurora.store.data.providers.AuthProvider 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.TabLayoutMediator import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject @AndroidEntryPoint -class AppsGamesFragment : Fragment(R.layout.activity_generic_pager) { - - private var _binding: ActivityGenericPagerBinding? = null - private val binding: ActivityGenericPagerBinding - get() = _binding!! - +class AppsGamesFragment : BaseFragment() { @Inject lateinit var authProvider: AuthProvider override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = ActivityGenericPagerBinding.bind(view) // Toolbar binding.layoutActionToolbar.toolbar.apply { @@ -77,11 +72,6 @@ class AppsGamesFragment : Fragment(R.layout.activity_generic_pager) { }.attach() } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - internal class ViewPagerAdapter( fragment: FragmentManager, lifecycle: Lifecycle, diff --git a/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt index e6ba2b7db..0579b7f45 100644 --- a/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/all/InstalledAppsFragment.kt @@ -26,7 +26,6 @@ import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import com.aurora.gplayapi.data.models.App import com.aurora.store.AuroraApp -import com.aurora.store.R import com.aurora.store.data.event.BusEvent import com.aurora.store.databinding.FragmentAppsBinding import com.aurora.store.view.epoxy.views.HeaderViewModel_ @@ -38,14 +37,9 @@ import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch @AndroidEntryPoint -class InstalledAppsFragment : BaseFragment(R.layout.fragment_apps) { +class InstalledAppsFragment : BaseFragment() { private val TAG = InstalledAppsFragment::class.java.simpleName - - private var _binding: FragmentAppsBinding? = null - private val binding: FragmentAppsBinding - get() = _binding!! - private val viewModel: InstalledViewModel by activityViewModels() companion object { @@ -71,7 +65,6 @@ class InstalledAppsFragment : BaseFragment(R.layout.fragment_apps) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentAppsBinding.bind(view) viewLifecycleOwner.lifecycleScope.launch { 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?) { binding.recycler.withModels { setFilterDuplicates(true) diff --git a/app/src/main/java/com/aurora/store/view/ui/all/LibraryAppsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/all/LibraryAppsFragment.kt index d87709eaa..aa4155620 100644 --- a/app/src/main/java/com/aurora/store/view/ui/all/LibraryAppsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/all/LibraryAppsFragment.kt @@ -35,12 +35,7 @@ import com.aurora.store.viewmodel.all.LibraryAppsViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class LibraryAppsFragment : BaseFragment(R.layout.fragment_apps) { - - private var _binding: FragmentAppsBinding? = null - private val binding: FragmentAppsBinding - get() = _binding!! - +class LibraryAppsFragment : BaseFragment() { private val viewModel: LibraryAppsViewModel by viewModels() companion object { @@ -54,7 +49,6 @@ class LibraryAppsFragment : BaseFragment(R.layout.fragment_apps) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentAppsBinding.bind(view) val endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener() { override fun onLoadMore(currentPage: Int) { @@ -70,11 +64,6 @@ class LibraryAppsFragment : BaseFragment(R.layout.fragment_apps) { updateController(null) } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun updateController(streamCluster: StreamCluster?) { binding.recycler.withModels { setFilterDuplicates(true) diff --git a/app/src/main/java/com/aurora/store/view/ui/all/PurchasedAppsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/all/PurchasedAppsFragment.kt index c96517a45..bd8893765 100644 --- a/app/src/main/java/com/aurora/store/view/ui/all/PurchasedAppsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/all/PurchasedAppsFragment.kt @@ -34,12 +34,7 @@ import com.aurora.store.viewmodel.all.PurchasedViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class PurchasedAppsFragment : BaseFragment(R.layout.fragment_apps) { - - private var _binding: FragmentAppsBinding? = null - private val binding: FragmentAppsBinding - get() = _binding!! - +class PurchasedAppsFragment : BaseFragment() { private val viewModel: PurchasedViewModel by viewModels() companion object { @@ -51,7 +46,6 @@ class PurchasedAppsFragment : BaseFragment(R.layout.fragment_apps) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentAppsBinding.bind(view) val endlessRecyclerOnScrollListener = object : EndlessRecyclerOnScrollListener(8) { override fun onLoadMore(currentPage: Int) { @@ -68,12 +62,6 @@ class PurchasedAppsFragment : BaseFragment(R.layout.fragment_apps) { updateController(null) } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - - private fun updateController(paginatedAppList: PaginatedAppList?) { binding.recycler.withModels { setFilterDuplicates(true) @@ -98,7 +86,7 @@ class PurchasedAppsFragment : BaseFragment(R.layout.fragment_apps) { ) } - if (paginatedAppList.hasMore){ + if (paginatedAppList.hasMore) { add( AppProgressViewModel_() .id("progress") diff --git a/app/src/main/java/com/aurora/store/view/ui/apps/AppsContainerFragment.kt b/app/src/main/java/com/aurora/store/view/ui/apps/AppsContainerFragment.kt index d6213df0d..a9f887574 100644 --- a/app/src/main/java/com/aurora/store/view/ui/apps/AppsContainerFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/apps/AppsContainerFragment.kt @@ -31,6 +31,7 @@ import com.aurora.store.R import com.aurora.store.data.providers.AuthProvider import com.aurora.store.databinding.FragmentAppsGamesBinding 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.EditorChoiceFragment import com.aurora.store.view.ui.commons.ForYouFragment @@ -41,17 +42,13 @@ import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject @AndroidEntryPoint -class AppsContainerFragment : Fragment(R.layout.fragment_apps_games) { - - private var _binding: FragmentAppsGamesBinding? = null - private val binding get() = _binding!! +class AppsContainerFragment : BaseFragment() { @Inject lateinit var authProvider: AuthProvider override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentAppsGamesBinding.bind(view) // Toolbar binding.toolbar.apply { @@ -61,6 +58,7 @@ class AppsContainerFragment : Fragment(R.layout.fragment_apps_games) { R.id.menu_download_manager -> { findNavController().navigate(R.id.downloadFragment) } + R.id.menu_more -> { findNavController().navigate( MobileNavigationDirections.actionGlobalMoreDialogFragment() @@ -114,9 +112,8 @@ class AppsContainerFragment : Fragment(R.layout.fragment_apps_games) { } override fun onDestroyView() { - super.onDestroyView() binding.pager.adapter = null - _binding = null + super.onDestroyView() } internal class ViewPagerAdapter( diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt index f7f1163f1..9a459a7fb 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt @@ -19,24 +19,49 @@ 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.navigation.fragment.findNavController +import androidx.viewbinding.ViewBinding import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.Category import com.aurora.store.MobileNavigationDirections import com.google.gson.Gson +import java.lang.reflect.ParameterizedType import javax.inject.Inject -abstract class BaseFragment : Fragment { - - constructor(): super() - - constructor(@LayoutRes contentLayoutId: Int) : super(contentLayoutId) - +abstract class BaseFragment : Fragment() { @Inject 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 + 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) { findNavController().navigate( MobileNavigationDirections.actionGlobalAppDetailsFragment(packageName, app) diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/BlacklistFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/BlacklistFragment.kt index 89aff6fbc..792c53f68 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/BlacklistFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/BlacklistFragment.kt @@ -21,7 +21,6 @@ package com.aurora.store.view.ui.commons import android.os.Bundle import android.view.View -import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController @@ -36,12 +35,7 @@ import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch @AndroidEntryPoint -class BlacklistFragment : Fragment(R.layout.activity_generic_recycler) { - - private var _binding: ActivityGenericRecyclerBinding? = null - private val binding: ActivityGenericRecyclerBinding - get() = _binding!! - +class BlacklistFragment : BaseFragment() { private val viewModel: BlacklistViewModel by activityViewModels() private lateinit var blacklistProvider: BlacklistProvider @@ -49,7 +43,6 @@ class BlacklistFragment : Fragment(R.layout.activity_generic_recycler) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = ActivityGenericRecyclerBinding.bind(view) blacklistProvider = BlacklistProvider.with(requireContext()) viewLifecycleOwner.lifecycleScope.launch { @@ -70,11 +63,6 @@ class BlacklistFragment : Fragment(R.layout.activity_generic_recycler) { blacklistProvider.save(viewModel.selected) } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun updateController(blackList: List?) { binding.recycler.withModels { setFilterDuplicates(true) diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt index 676851db1..3e12af5c1 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/CategoryBrowseFragment.kt @@ -28,7 +28,6 @@ import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.StreamBundle import com.aurora.gplayapi.data.models.StreamCluster 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.Loading.getDataAs import com.aurora.store.databinding.ActivityGenericRecyclerBinding @@ -39,13 +38,8 @@ import com.aurora.store.viewmodel.subcategory.SubCategoryClusterViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class CategoryBrowseFragment : BaseFragment(R.layout.activity_generic_recycler), +class CategoryBrowseFragment : BaseFragment(), GenericCarouselController.Callbacks { - - private var _binding: ActivityGenericRecyclerBinding? = null - private val binding: ActivityGenericRecyclerBinding - get() = _binding!! - private val args: CategoryBrowseFragmentArgs by navArgs() 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?) { super.onViewCreated(view, savedInstanceState) - _binding = ActivityGenericRecyclerBinding.bind(view) - val rawCategory = args.browseUrl.split("/").last() category = StreamContract.Category.NONE.apply { value = rawCategory } @@ -96,11 +88,6 @@ class CategoryBrowseFragment : BaseFragment(R.layout.activity_generic_recycler), viewModel.observe(category) } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - override fun onHeaderClicked(streamCluster: StreamCluster) { } diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/CategoryFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/CategoryFragment.kt index f30a0e40c..48b694697 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/CategoryFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/CategoryFragment.kt @@ -25,7 +25,6 @@ import androidx.fragment.app.viewModels import com.aurora.Constants import com.aurora.gplayapi.data.models.Category import com.aurora.store.CategoryStash -import com.aurora.store.R import com.aurora.store.data.model.ViewState import com.aurora.store.data.model.ViewState.Empty.getDataAs import com.aurora.store.databinding.FragmentGenericRecyclerBinding @@ -35,11 +34,7 @@ import com.aurora.store.viewmodel.category.CategoryViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class CategoryFragment : BaseFragment(R.layout.fragment_generic_recycler) { - - private var _binding: FragmentGenericRecyclerBinding? = null - private val binding get() = _binding!! - +class CategoryFragment : BaseFragment() { private val viewModel: CategoryViewModel by viewModels() companion object { @@ -55,7 +50,6 @@ class CategoryFragment : BaseFragment(R.layout.fragment_generic_recycler) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentGenericRecyclerBinding.bind(view) var pageType = 0 val bundle = arguments @@ -109,9 +103,4 @@ class CategoryFragment : BaseFragment(R.layout.fragment_generic_recycler) { } } } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } } diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/EditorChoiceFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/EditorChoiceFragment.kt index e0bc110c0..676128e83 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/EditorChoiceFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/EditorChoiceFragment.kt @@ -25,19 +25,14 @@ import androidx.fragment.app.viewModels import com.aurora.Constants import com.aurora.gplayapi.data.models.editor.EditorChoiceCluster import com.aurora.gplayapi.helpers.contracts.StreamContract -import com.aurora.store.R import com.aurora.store.databinding.FragmentForYouBinding import com.aurora.store.view.epoxy.controller.EditorChoiceController import com.aurora.store.viewmodel.editorschoice.EditorChoiceViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class EditorChoiceFragment : BaseFragment(R.layout.fragment_for_you), +class EditorChoiceFragment : BaseFragment(), EditorChoiceController.Callbacks { - - private var _binding: FragmentForYouBinding? = null - private val binding get() = _binding!! - private val viewModel: EditorChoiceViewModel by viewModels() companion object { @@ -53,7 +48,6 @@ class EditorChoiceFragment : BaseFragment(R.layout.fragment_for_you), override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentForYouBinding.bind(view) var pageType = 0 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) { openEditorStreamBrowseFragment( editorChoiceCluster.clusterBrowseUrl, diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/EditorStreamBrowseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/EditorStreamBrowseFragment.kt index 4eb679e55..6877950c7 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/EditorStreamBrowseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/EditorStreamBrowseFragment.kt @@ -26,7 +26,6 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyModel import com.aurora.gplayapi.data.models.App -import com.aurora.store.R import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_ import com.aurora.store.view.epoxy.views.EditorHeadViewModel_ @@ -39,20 +38,13 @@ import com.aurora.store.viewmodel.editorschoice.EditorBrowseViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class EditorStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycler) { - - private var _binding: ActivityGenericRecyclerBinding? = null - private val binding: ActivityGenericRecyclerBinding - get() = _binding!! - +class EditorStreamBrowseFragment : BaseFragment() { private val args: EditorStreamBrowseFragmentArgs by navArgs() private val viewModel: EditorBrowseViewModel by viewModels() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = ActivityGenericRecyclerBinding.bind(view) - // Toolbar binding.layoutToolbarAction.apply { txtTitle.text = args.title @@ -69,11 +61,6 @@ class EditorStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycl updateController(null) } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun updateController(appList: MutableList?) { binding.recycler.withModels { setFilterDuplicates(true) diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/ExpandedStreamBrowseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/ExpandedStreamBrowseFragment.kt index d18b773b5..e5d60c9cb 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/ExpandedStreamBrowseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/ExpandedStreamBrowseFragment.kt @@ -26,7 +26,6 @@ import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.airbnb.epoxy.EpoxyModel import com.aurora.gplayapi.data.models.StreamCluster -import com.aurora.store.R import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.epoxy.groups.CarouselHorizontalModel_ @@ -39,12 +38,7 @@ import com.aurora.store.viewmodel.browse.ExpandedStreamBrowseViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class ExpandedStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycler) { - - private var _binding: ActivityGenericRecyclerBinding? = null - private val binding: ActivityGenericRecyclerBinding - get() = _binding!! - +class ExpandedStreamBrowseFragment : BaseFragment() { private val args: ExpandedStreamBrowseFragmentArgs by navArgs() 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?) { super.onViewCreated(view, savedInstanceState) - _binding = ActivityGenericRecyclerBinding.bind(view) // Toolbar binding.layoutToolbarAction.apply { @@ -75,11 +68,6 @@ class ExpandedStreamBrowseFragment : BaseFragment(R.layout.activity_generic_recy updateController(null) } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun updateTitle(streamCluster: StreamCluster) { if (streamCluster.clusterTitle.isNotEmpty()) binding.layoutToolbarAction.txtTitle.text = streamCluster.clusterTitle diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/FavouriteFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/FavouriteFragment.kt index 7a96e71b7..c90342561 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/FavouriteFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/FavouriteFragment.kt @@ -39,12 +39,7 @@ import kotlinx.coroutines.launch import java.util.Calendar @AndroidEntryPoint -class FavouriteFragment : BaseFragment(R.layout.fragment_favourite) { - - private var _binding: FragmentFavouriteBinding? = null - private val binding: FragmentFavouriteBinding - get() = _binding!! - +class FavouriteFragment : BaseFragment() { private val viewModel: FavouriteViewModel by viewModels() private val mimeType = "application/json" @@ -60,8 +55,6 @@ class FavouriteFragment : BaseFragment(R.layout.fragment_favourite) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentFavouriteBinding.bind(view) - viewLifecycleOwner.lifecycleScope.launch { viewModel.favouritesList.collect { 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?) { binding.recycler.withModels { setFilterDuplicates(true) diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt index 992492247..efdbe2c04 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/ForYouFragment.kt @@ -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.Type import com.aurora.store.HomeStash -import com.aurora.store.R import com.aurora.store.data.model.ViewState import com.aurora.store.data.model.ViewState.Loading.getDataAs import com.aurora.store.databinding.FragmentForYouBinding @@ -39,12 +38,8 @@ import com.aurora.store.viewmodel.homestream.StreamViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class ForYouFragment : BaseFragment(R.layout.fragment_for_you), +class ForYouFragment : BaseFragment(), GenericCarouselController.Callbacks { - - private var _binding: FragmentForYouBinding? = null - private val binding get() = _binding!! - private val viewModel: StreamViewModel by activityViewModels() 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?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentForYouBinding.bind(view) 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) { } diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseFragment.kt index 93d872858..d50409052 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/StreamBrowseFragment.kt @@ -25,7 +25,6 @@ import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.aurora.gplayapi.data.models.StreamCluster -import com.aurora.store.R import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.epoxy.views.AppProgressViewModel_ @@ -35,12 +34,7 @@ import com.aurora.store.viewmodel.browse.StreamBrowseViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class StreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycler) { - - private var _binding: ActivityGenericRecyclerBinding? = null - private val binding: ActivityGenericRecyclerBinding - get() = _binding!! - +class StreamBrowseFragment : BaseFragment() { private val args: StreamBrowseFragmentArgs by navArgs() 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?) { super.onViewCreated(view, savedInstanceState) - _binding = ActivityGenericRecyclerBinding.bind(view) // Toolbar binding.layoutToolbarAction.apply { @@ -79,11 +72,6 @@ class StreamBrowseFragment : BaseFragment(R.layout.activity_generic_recycler) { updateController(null) } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun updateController(streamCluster: StreamCluster?) { binding.recycler.withModels { setFilterDuplicates(true) diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/TopChartContainerFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/TopChartContainerFragment.kt index 7b4ea1fa5..f79b74cef 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/TopChartContainerFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/TopChartContainerFragment.kt @@ -32,11 +32,7 @@ import com.aurora.store.databinding.FragmentTopChartBinding import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class TopChartContainerFragment : Fragment(R.layout.fragment_top_chart) { - - private var _binding: FragmentTopChartBinding? = null - private val binding get() = _binding!! - +class TopChartContainerFragment : BaseFragment() { companion object { @JvmStatic fun newInstance(chartType: Int): TopChartContainerFragment { @@ -50,7 +46,6 @@ class TopChartContainerFragment : Fragment(R.layout.fragment_top_chart) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentTopChartBinding.bind(view) var chartType = 0 val bundle = arguments @@ -84,9 +79,8 @@ class TopChartContainerFragment : Fragment(R.layout.fragment_top_chart) { } override fun onDestroyView() { - super.onDestroyView() binding.pager.adapter = null - _binding = null + super.onDestroyView() } internal class ViewPagerAdapter( diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/TopChartFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/TopChartFragment.kt index 3c43b47b3..d1f542efb 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/TopChartFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/TopChartFragment.kt @@ -39,10 +39,7 @@ import com.aurora.store.viewmodel.topchart.TopChartViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class TopChartFragment : BaseFragment(R.layout.fragment_top_container) { - - private var _binding: FragmentTopContainerBinding? = null - private val binding get() = _binding!! +class TopChartFragment : BaseFragment() { 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?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentTopContainerBinding.bind(view) var type = 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?) { binding.recycler.withModels { setFilterDuplicates(true) diff --git a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt index 85113dbf6..718ead90e 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/AppDetailsFragment.kt @@ -96,11 +96,7 @@ import java.util.Locale import javax.inject.Inject @AndroidEntryPoint -class AppDetailsFragment : BaseFragment(R.layout.fragment_details) { - - private var _binding: FragmentDetailsBinding? = null - private val binding: FragmentDetailsBinding - get() = _binding!! +class AppDetailsFragment : BaseFragment() { private val viewModel: AppDetailsViewModel 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?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentDetailsBinding.bind(view) if (args.app != null) { app = args.app!! @@ -674,11 +669,6 @@ class AppDetailsFragment : BaseFragment(R.layout.fragment_details) { } } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun attachBottomSheet() { binding.layoutDetailsInstall.apply { viewFlipper.setInAnimation(requireContext(), R.anim.fade_in) diff --git a/app/src/main/java/com/aurora/store/view/ui/details/DetailsExodusFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/DetailsExodusFragment.kt index 110a8b673..826b60ff4 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/DetailsExodusFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/DetailsExodusFragment.kt @@ -29,19 +29,17 @@ import com.aurora.extensions.browse import com.aurora.store.R import com.aurora.store.data.model.ExodusTracker import com.aurora.store.data.model.Report +import com.aurora.store.databinding.ActivityGenericPagerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.view.epoxy.views.HeaderViewModel_ import com.aurora.store.view.epoxy.views.details.ExodusViewModel_ +import com.aurora.store.view.ui.commons.BaseFragment import dagger.hilt.android.AndroidEntryPoint import org.json.JSONObject import javax.inject.Inject @AndroidEntryPoint -class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) { - - private var _binding: ActivityGenericRecyclerBinding? = null - private val binding: ActivityGenericRecyclerBinding - get() = _binding!! +class DetailsExodusFragment : BaseFragment() { 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?) { super.onViewCreated(view, savedInstanceState) - _binding = ActivityGenericRecyclerBinding.bind(view) // Toolbar binding.layoutToolbarAction.apply { @@ -63,11 +60,6 @@ class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) { updateController(getExodusTrackersFromReport(args.report)) } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun updateController(reviews: List) { binding.recycler.withModels { add( diff --git a/app/src/main/java/com/aurora/store/view/ui/details/DetailsMoreFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/DetailsMoreFragment.kt index 2c2a1bfe8..d0c9d7a17 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/DetailsMoreFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/DetailsMoreFragment.kt @@ -41,18 +41,13 @@ import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch @AndroidEntryPoint -class DetailsMoreFragment : BaseFragment(R.layout.fragment_details_more) { - - private var _binding: FragmentDetailsMoreBinding? = null - private val binding: FragmentDetailsMoreBinding - get() = _binding!! +class DetailsMoreFragment : BaseFragment() { private val viewModel: DetailsMoreViewModel by viewModels() private val args: DetailsMoreFragmentArgs by navArgs() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentDetailsMoreBinding.bind(view) // Toolbar 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) { binding.layoutToolbarActionMore.txtTitle.text = app.displayName binding.txtDescription.text = HtmlCompat.fromHtml( diff --git a/app/src/main/java/com/aurora/store/view/ui/details/DetailsReviewFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/DetailsReviewFragment.kt index 65aaed802..dd4957c0f 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/DetailsReviewFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/DetailsReviewFragment.kt @@ -32,15 +32,12 @@ import com.aurora.store.databinding.FragmentDetailsReviewBinding import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener import com.aurora.store.view.epoxy.views.AppProgressViewModel_ 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 dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class DetailsReviewFragment : Fragment(R.layout.fragment_details_review) { - - private var _binding: FragmentDetailsReviewBinding? = null - private val binding: FragmentDetailsReviewBinding - get() = _binding!! +class DetailsReviewFragment : BaseFragment() { private val args: DetailsReviewFragmentArgs by navArgs() 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?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentDetailsReviewBinding.bind(view) // Toolbar 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) { binding.recycler.withModels { setFilterDuplicates(true) diff --git a/app/src/main/java/com/aurora/store/view/ui/details/DevAppsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/DevAppsFragment.kt index 1db1b488a..26d9b9914 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/DevAppsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/DevAppsFragment.kt @@ -35,18 +35,13 @@ import com.aurora.store.viewmodel.search.SearchResultViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class DevAppsFragment : BaseFragment(R.layout.activity_generic_recycler) { - - private var _binding: ActivityGenericRecyclerBinding? = null - private val binding: ActivityGenericRecyclerBinding - get() = _binding!! +class DevAppsFragment : BaseFragment() { private val args: DevAppsFragmentArgs by navArgs() private val viewModel: SearchResultViewModel by viewModels() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = ActivityGenericRecyclerBinding.bind(view) viewModel.liveData.observe(viewLifecycleOwner) { updateController(it) @@ -71,11 +66,6 @@ class DevAppsFragment : BaseFragment(R.layout.activity_generic_recycler) { viewModel.observeSearchResults("pub:${args.developerName}") } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun updateController(searchBundle: SearchBundle) { binding.recycler .withModels { diff --git a/app/src/main/java/com/aurora/store/view/ui/details/DevProfileFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/DevProfileFragment.kt index ace0e45d4..da4eeede4 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/DevProfileFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/DevProfileFragment.kt @@ -38,19 +38,14 @@ import com.aurora.store.viewmodel.details.DevProfileViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class DevProfileFragment : BaseFragment(R.layout.fragment_dev_profile), +class DevProfileFragment : BaseFragment(), GenericCarouselController.Callbacks { - private var _binding: FragmentDevProfileBinding? = null - private val binding: FragmentDevProfileBinding - get() = _binding!! - private val args: DevProfileFragmentArgs by navArgs() private val viewModel: DevProfileViewModel by viewModels() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentDevProfileBinding.bind(view) val developerCarouselController = DeveloperCarouselController(this) @@ -98,11 +93,6 @@ class DevProfileFragment : BaseFragment(R.layout.fragment_dev_profile), viewModel.getStreamBundle(args.devId) } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - override fun onHeaderClicked(streamCluster: StreamCluster) { openStreamBrowseFragment(streamCluster.clusterBrowseUrl, streamCluster.clusterTitle) } diff --git a/app/src/main/java/com/aurora/store/view/ui/details/ScreenshotFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/ScreenshotFragment.kt index f5dc8c65b..a80868105 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/ScreenshotFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/ScreenshotFragment.kt @@ -32,20 +32,16 @@ import com.aurora.gplayapi.data.models.Artwork import com.aurora.store.R import com.aurora.store.databinding.FragmentScreenshotBinding import com.aurora.store.view.epoxy.views.details.LargeScreenshotViewModel_ +import com.aurora.store.view.ui.commons.BaseFragment import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class ScreenshotFragment : Fragment(R.layout.fragment_screenshot) { - - private var _binding: FragmentScreenshotBinding? = null - private val binding: FragmentScreenshotBinding - get() = _binding!! +class ScreenshotFragment : BaseFragment() { private val args: ScreenshotFragmentArgs by navArgs() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentScreenshotBinding.bind(view) // Toolbar binding.toolbar.apply { @@ -63,11 +59,6 @@ class ScreenshotFragment : Fragment(R.layout.fragment_screenshot) { updateController(args.arrayOfArtwork, args.position) } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun updateController(artworks: Array, position: Int) { binding.recyclerView.withModels { artworks.forEach { diff --git a/app/src/main/java/com/aurora/store/view/ui/dispenser/DispenserFragment.kt b/app/src/main/java/com/aurora/store/view/ui/dispenser/DispenserFragment.kt index c0cbd87cb..ca97bd282 100644 --- a/app/src/main/java/com/aurora/store/view/ui/dispenser/DispenserFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/dispenser/DispenserFragment.kt @@ -3,7 +3,6 @@ package com.aurora.store.view.ui.dispenser import android.content.SharedPreferences import android.os.Bundle import android.view.View -import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import com.aurora.extensions.copyToClipBoard 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.PREFERENCE_DISPENSER_URLS import com.aurora.store.view.epoxy.views.DispenserViewModel_ +import com.aurora.store.view.ui.commons.BaseFragment import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class DispenserFragment : Fragment(R.layout.fragment_dispenser), +class DispenserFragment : BaseFragment(), SharedPreferences.OnSharedPreferenceChangeListener { - private var _binding: FragmentDispenserBinding? = null - private val binding get() = _binding!! - private val dispensers: Set 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?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentDispenserBinding.bind(view) sharedPreferences = Preferences.getPrefs(view.context) sharedPreferences.registerOnSharedPreferenceChangeListener(this) @@ -40,9 +36,8 @@ class DispenserFragment : Fragment(R.layout.fragment_dispenser), } override fun onDestroyView() { - super.onDestroyView() sharedPreferences.unregisterOnSharedPreferenceChangeListener(this) - _binding = null + super.onDestroyView() } override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) { diff --git a/app/src/main/java/com/aurora/store/view/ui/downloads/DownloadFragment.kt b/app/src/main/java/com/aurora/store/view/ui/downloads/DownloadFragment.kt index 01ba670af..50fe7c28e 100644 --- a/app/src/main/java/com/aurora/store/view/ui/downloads/DownloadFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/downloads/DownloadFragment.kt @@ -41,11 +41,7 @@ import kotlinx.coroutines.launch import javax.inject.Inject @AndroidEntryPoint -class DownloadFragment : BaseFragment(R.layout.fragment_download) { - - private var _binding: FragmentDownloadBinding? = null - private val binding: FragmentDownloadBinding - get() = _binding!! +class DownloadFragment : BaseFragment() { @Inject lateinit var downloadWorkerUtil: DownloadWorkerUtil @@ -55,8 +51,6 @@ class DownloadFragment : BaseFragment(R.layout.fragment_download) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentDownloadBinding.bind(view) - // Toolbar binding.layoutToolbarAction.toolbar.apply { elevation = 0f @@ -71,11 +65,13 @@ class DownloadFragment : BaseFragment(R.layout.fragment_download) { downloadWorkerUtil.clearAllDownloads() } } + R.id.action_cancel_all -> { viewLifecycleOwner.lifecycleScope.launch(NonCancellable) { downloadWorkerUtil.cancelAll() } } + R.id.action_clear_completed -> { viewLifecycleOwner.lifecycleScope.launch(NonCancellable) { 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) { binding.recycler.withModels { if (downloads.isEmpty()) { diff --git a/app/src/main/java/com/aurora/store/view/ui/games/GamesContainerFragment.kt b/app/src/main/java/com/aurora/store/view/ui/games/GamesContainerFragment.kt index cf747b78f..0e574f1cb 100644 --- a/app/src/main/java/com/aurora/store/view/ui/games/GamesContainerFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/games/GamesContainerFragment.kt @@ -31,6 +31,7 @@ import com.aurora.store.R import com.aurora.store.data.providers.AuthProvider import com.aurora.store.databinding.FragmentAppsGamesBinding 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.EditorChoiceFragment import com.aurora.store.view.ui.commons.ForYouFragment @@ -41,17 +42,13 @@ import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject @AndroidEntryPoint -class GamesContainerFragment : Fragment(R.layout.fragment_apps_games) { - - private var _binding: FragmentAppsGamesBinding? = null - private val binding get() = _binding!! +class GamesContainerFragment : BaseFragment() { @Inject lateinit var authProvider: AuthProvider override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentAppsGamesBinding.bind(view) // Toolbar binding.toolbar.apply { @@ -61,6 +58,7 @@ class GamesContainerFragment : Fragment(R.layout.fragment_apps_games) { R.id.menu_download_manager -> { findNavController().navigate(R.id.downloadFragment) } + R.id.menu_more -> { findNavController().navigate( MobileNavigationDirections.actionGlobalMoreDialogFragment() @@ -113,9 +111,8 @@ class GamesContainerFragment : Fragment(R.layout.fragment_apps_games) { } override fun onDestroyView() { - super.onDestroyView() binding.pager.adapter = null - _binding = null + super.onDestroyView() } internal class ViewPagerAdapter( diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/AppLinksFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/AppLinksFragment.kt index 5fb34637a..e1248cefe 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/AppLinksFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/AppLinksFragment.kt @@ -9,22 +9,18 @@ import android.provider.Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS import android.util.Log import android.view.View import androidx.activity.result.contract.ActivityResultContracts -import androidx.fragment.app.Fragment import com.aurora.extensions.isSAndAbove import com.aurora.extensions.toast import com.aurora.store.R import com.aurora.store.databinding.FragmentAppLinksBinding +import com.aurora.store.view.ui.commons.BaseFragment import com.google.android.material.button.MaterialButton import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class AppLinksFragment : Fragment(R.layout.fragment_app_links) { +class AppLinksFragment : BaseFragment() { 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 marketDomain = "market.android.com" @@ -41,7 +37,6 @@ class AppLinksFragment : Fragment(R.layout.fragment_app_links) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentAppLinksBinding.bind(view) buttons = mapOf( playStoreDomain to binding.playStoreButton, @@ -69,7 +64,6 @@ class AppLinksFragment : Fragment(R.layout.fragment_app_links) { override fun onDestroyView() { buttons = emptyMap() - _binding = null super.onDestroyView() } diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt index 63218f84e..ee3ad12b3 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/OnboardingFragment.kt @@ -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_VENDING_VERSION import com.aurora.store.util.save +import com.aurora.store.view.ui.commons.BaseFragment import com.google.android.material.tabs.TabLayoutMediator import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class OnboardingFragment : Fragment(R.layout.fragment_onboarding) { - - private var _binding: FragmentOnboardingBinding? = null - private val binding get() = _binding!! +class OnboardingFragment : BaseFragment() { private var lastPosition = 0 @@ -85,7 +83,6 @@ class OnboardingFragment : Fragment(R.layout.fragment_onboarding) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentOnboardingBinding.bind(view) val isDefaultPrefLoaded = Preferences.getBoolean(requireContext(), PREFERENCE_DEFAULT) if (!isDefaultPrefLoaded) { @@ -124,11 +121,6 @@ class OnboardingFragment : Fragment(R.layout.fragment_onboarding) { } } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - fun refreshButtonState() { binding.btnBackward.isEnabled = lastPosition != 0 binding.btnForward.isEnabled = lastPosition != 2 diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/PermissionsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/PermissionsFragment.kt index 091f35bf7..638343fac 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/PermissionsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/PermissionsFragment.kt @@ -48,10 +48,7 @@ import com.aurora.store.view.ui.commons.BaseFragment import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class PermissionsFragment : BaseFragment(R.layout.fragment_onboarding_permissions) { - - private var _binding: FragmentOnboardingPermissionsBinding? = null - private val binding get() = _binding!! +class PermissionsFragment : BaseFragment() { private val startForDozeResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { @@ -89,7 +86,6 @@ class PermissionsFragment : BaseFragment(R.layout.fragment_onboarding_permission override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentOnboardingPermissionsBinding.bind(view) // RecyclerView 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() { if (isMAndAbove()) { val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).apply { diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/WelcomeFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/WelcomeFragment.kt index 8d62ef86a..39fd186a7 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/WelcomeFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/WelcomeFragment.kt @@ -31,14 +31,10 @@ import com.aurora.store.view.ui.commons.BaseFragment import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class WelcomeFragment : BaseFragment(R.layout.fragment_onboarding_welcome) { - - private var _binding: FragmentOnboardingWelcomeBinding? = null - private val binding get() = _binding!! +class WelcomeFragment : BaseFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentOnboardingWelcomeBinding.bind(view) // RecyclerView binding.epoxyRecycler.withModels { @@ -106,9 +102,4 @@ class WelcomeFragment : BaseFragment(R.layout.fragment_onboarding_welcome) { ) ) } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } } diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/InstallerFragment.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/InstallerFragment.kt index b58f6f997..0249eee57 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/InstallerFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/InstallerFragment.kt @@ -41,10 +41,7 @@ import rikka.shizuku.Shizuku import rikka.sui.Sui @AndroidEntryPoint -class InstallerFragment : BaseFragment(R.layout.fragment_installer) { - - private var _binding: FragmentInstallerBinding? = null - private val binding get() = _binding!! +class InstallerFragment : BaseFragment() { private var installerId: Int = 0 @@ -74,7 +71,6 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentInstallerBinding.bind(view) // Toolbar 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() { if (isOAndAbove() && AppInstaller.hasShizukuOrSui(requireContext())) { Shizuku.removeBinderReceivedListener(shizukuAliveListener) @@ -132,6 +123,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) { this.installerId = installerId save(PREFERENCE_INSTALLER_ID, installerId) } + 2 -> { if (AppInstaller.hasRootAccess()) { this.installerId = installerId @@ -143,6 +135,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) { ) } } + 3 -> { if (AppInstaller.hasAuroraService(requireContext())) { this.installerId = installerId @@ -154,6 +147,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) { ) } } + 4 -> { if (AppInstaller.hasAppManager(requireContext())) { this.installerId = installerId @@ -165,6 +159,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) { ) } } + 5 -> { if (isOAndAbove() && AppInstaller.hasShizukuOrSui(requireContext())) { if (shizukuAlive && AppInstaller.hasShizukuPerm()) { @@ -185,6 +180,7 @@ class InstallerFragment : BaseFragment(R.layout.fragment_installer) { ) } } + else -> { this.installerId = installerId save(PREFERENCE_INSTALLER_ID, installerId) diff --git a/app/src/main/java/com/aurora/store/view/ui/sale/AppSalesFragment.kt b/app/src/main/java/com/aurora/store/view/ui/sale/AppSalesFragment.kt index 583a74f18..0f0619ba6 100644 --- a/app/src/main/java/com/aurora/store/view/ui/sale/AppSalesFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/sale/AppSalesFragment.kt @@ -37,19 +37,13 @@ import com.aurora.store.viewmodel.sale.AppSalesViewModel import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class AppSalesFragment : BaseFragment(R.layout.activity_generic_recycler) { - - private var _binding: ActivityGenericRecyclerBinding? = null - private val binding: ActivityGenericRecyclerBinding - get() = _binding!! +class AppSalesFragment : BaseFragment() { private val viewModel: AppSalesViewModel by viewModels() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = ActivityGenericRecyclerBinding.bind(view) - binding.layoutToolbarAction.txtTitle.text = getString(R.string.title_apps_sale) binding.layoutToolbarAction.imgActionPrimary.setOnClickListener { 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?) { binding.recycler .withModels { diff --git a/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt b/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt index fff0535d5..0def58553 100644 --- a/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/search/SearchResultsFragment.kt @@ -49,13 +49,9 @@ import com.google.android.material.textfield.TextInputEditText import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class SearchResultsFragment : BaseFragment(R.layout.fragment_search_result), +class SearchResultsFragment : BaseFragment(), OnSharedPreferenceChangeListener { - private var _binding: FragmentSearchResultBinding? = null - private val binding: FragmentSearchResultBinding - get() = _binding!! - private val viewModel: SearchResultViewModel by viewModels() private lateinit var searchView: TextInputEditText @@ -70,8 +66,6 @@ class SearchResultsFragment : BaseFragment(R.layout.fragment_search_result), override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentSearchResultBinding.bind(view) - sharedPreferences = Preferences.getPrefs(view.context) sharedPreferences.registerOnSharedPreferenceChangeListener(this) @@ -132,7 +126,6 @@ class SearchResultsFragment : BaseFragment(R.layout.fragment_search_result), override fun onDestroyView() { sharedPreferences.unregisterOnSharedPreferenceChangeListener(this) super.onDestroyView() - _binding = null } override fun onDestroy() { diff --git a/app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionFragment.kt b/app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionFragment.kt index 3b88b0dbb..1645cea7f 100644 --- a/app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/search/SearchSuggestionFragment.kt @@ -26,7 +26,6 @@ import android.view.KeyEvent import android.view.View import android.view.inputmethod.EditorInfo import android.widget.TextView -import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import com.aurora.extensions.showKeyboard @@ -34,16 +33,13 @@ import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.store.R import com.aurora.store.databinding.FragmentSearchSuggestionBinding 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.google.android.material.textfield.TextInputEditText import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class SearchSuggestionFragment : Fragment(R.layout.fragment_search_suggestion) { - - private var _binding: FragmentSearchSuggestionBinding? = null - private val binding: FragmentSearchSuggestionBinding - get() = _binding!! +class SearchSuggestionFragment : BaseFragment() { 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?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentSearchSuggestionBinding.bind(view) - // Toolbar binding.layoutToolbarSearch.apply { 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) { binding.recycler.withModels { setFilterDuplicates(true) diff --git a/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt b/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt index ed9d8113c..a918288e0 100644 --- a/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/splash/SplashFragment.kt @@ -22,7 +22,6 @@ package com.aurora.store.view.ui.splash import android.content.Intent import android.os.Bundle import android.view.View -import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController 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_INTRO 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 dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class SplashFragment : Fragment(R.layout.fragment_splash) { - - private var _binding: FragmentSplashBinding? = null - private val binding get() = _binding!! +class SplashFragment : BaseFragment() { private val viewModel: AuthViewModel by activityViewModels() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentSplashBinding.bind(view) if (!Preferences.getBoolean(requireContext(), PREFERENCE_INTRO)) { findNavController().navigate( @@ -166,11 +162,6 @@ class SplashFragment : Fragment(R.layout.fragment_splash) { viewModel.observe() } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun updateStatus(string: String?) { activity?.runOnUiThread { binding.txtStatus.text = string } } diff --git a/app/src/main/java/com/aurora/store/view/ui/spoof/DeviceSpoofFragment.kt b/app/src/main/java/com/aurora/store/view/ui/spoof/DeviceSpoofFragment.kt index b57f0be30..0dc1e625b 100644 --- a/app/src/main/java/com/aurora/store/view/ui/spoof/DeviceSpoofFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/spoof/DeviceSpoofFragment.kt @@ -38,11 +38,7 @@ import kotlinx.coroutines.launch import java.util.Properties @AndroidEntryPoint -class DeviceSpoofFragment : BaseFragment(R.layout.fragment_generic_recycler) { - - private var _binding: FragmentGenericRecyclerBinding? = null - private val binding get() = _binding!! - +class DeviceSpoofFragment : BaseFragment() { private val viewModel: SpoofViewModel by viewModels() private lateinit var spoofProvider: SpoofProvider @@ -59,7 +55,6 @@ class DeviceSpoofFragment : BaseFragment(R.layout.fragment_generic_recycler) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentGenericRecyclerBinding.bind(view) spoofProvider = SpoofProvider(requireContext()) properties = if (spoofProvider.isDeviceSpoofEnabled()) { @@ -76,11 +71,6 @@ class DeviceSpoofFragment : BaseFragment(R.layout.fragment_generic_recycler) { viewModel.fetchAvailableDevices(view.context) } - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - private fun updateController(locales: List) { binding.recycler.withModels { setFilterDuplicates(true) diff --git a/app/src/main/java/com/aurora/store/view/ui/spoof/LocaleSpoofFragment.kt b/app/src/main/java/com/aurora/store/view/ui/spoof/LocaleSpoofFragment.kt index 1f7cf066d..d31ad1783 100644 --- a/app/src/main/java/com/aurora/store/view/ui/spoof/LocaleSpoofFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/spoof/LocaleSpoofFragment.kt @@ -32,13 +32,9 @@ import dagger.hilt.android.AndroidEntryPoint import java.util.Locale @AndroidEntryPoint -class LocaleSpoofFragment : BaseFragment(R.layout.fragment_generic_recycler) { +class LocaleSpoofFragment : BaseFragment() { 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 locale: Locale @@ -53,7 +49,6 @@ class LocaleSpoofFragment : BaseFragment(R.layout.fragment_generic_recycler) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentGenericRecyclerBinding.bind(view) spoofProvider = SpoofProvider(requireContext()) 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) { binding.recycler.withModels { setFilterDuplicates(true) diff --git a/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofFragment.kt b/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofFragment.kt index a32b955f9..09544b79e 100644 --- a/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/spoof/SpoofFragment.kt @@ -36,17 +36,13 @@ import com.aurora.store.R import com.aurora.store.data.providers.NativeDeviceInfoProvider import com.aurora.store.databinding.ActivityGenericPagerBinding 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.TabLayoutMediator import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint -class SpoofFragment : Fragment(R.layout.activity_generic_pager) { - - private var _binding: ActivityGenericPagerBinding? = null - private val binding: ActivityGenericPagerBinding - get() = _binding!! - +class SpoofFragment : BaseFragment() { private val TAG = SpoofFragment::class.java.simpleName // 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?) { super.onViewCreated(view, savedInstanceState) - _binding = ActivityGenericPagerBinding.bind(view) // Toolbar binding.layoutActionToolbar.toolbar.apply { @@ -107,9 +102,8 @@ class SpoofFragment : Fragment(R.layout.activity_generic_pager) { } override fun onDestroyView() { - super.onDestroyView() binding.pager.adapter = null - _binding = null + super.onDestroyView() } private fun importDeviceConfig(uri: Uri) { diff --git a/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt b/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt index e6255ed59..9e4d2cb60 100644 --- a/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/updates/UpdatesFragment.kt @@ -54,13 +54,10 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.launch @AndroidEntryPoint -class UpdatesFragment : BaseFragment(R.layout.fragment_updates) { +class UpdatesFragment : BaseFragment() { private lateinit var app: App - private var _binding: FragmentUpdatesBinding? = null - private val binding get() = _binding!! - private val viewModel: UpdatesViewModel by activityViewModels() private val startForStorageManagerResult = @@ -79,7 +76,6 @@ class UpdatesFragment : BaseFragment(R.layout.fragment_updates) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - _binding = FragmentUpdatesBinding.bind(view) // Toolbar 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) { when (event) { is BusEvent.InstallEvent, is BusEvent.UninstallEvent -> {