Improve viewbinding - [2/3]

This commit is contained in:
Rahul Patel
2024-07-10 23:58:00 +05:30
committed by Aayush Gupta
parent 47760b7407
commit 4919fbd4db
11 changed files with 72 additions and 115 deletions

View File

@@ -36,19 +36,15 @@ import com.aurora.store.data.providers.BlacklistProvider
import com.aurora.store.databinding.SheetAppMenuBinding
import com.aurora.store.util.PackageUtil
import com.aurora.store.viewmodel.sheets.SheetsViewModel
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class AppMenuSheet : BottomSheetDialogFragment(R.layout.sheet_app_menu) {
class AppMenuSheet : BaseDialogSheet<SheetAppMenuBinding>() {
companion object {
const val TAG = "APP_MENU_SHEET"
}
private var _binding: SheetAppMenuBinding? = null
private val binding get() = _binding!!
private val viewModel: SheetsViewModel by viewModels()
private val args: AppMenuSheetArgs by navArgs()
@@ -66,7 +62,6 @@ class AppMenuSheet : BottomSheetDialogFragment(R.layout.sheet_app_menu) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetAppMenuBinding.bind(view)
val blacklistProvider = BlacklistProvider.with(requireContext())
val isBlacklisted: Boolean = blacklistProvider.isBlacklisted(args.app.packageName)
@@ -122,9 +117,4 @@ class AppMenuSheet : BottomSheetDialogFragment(R.layout.sheet_app_menu) {
}
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -27,20 +27,14 @@ import coil.transform.RoundedCornersTransformation
import com.aurora.store.R
import com.aurora.store.databinding.SheetAppPeekBinding
import com.aurora.store.util.CommonUtil
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class AppPeekDialogSheet : BottomSheetDialogFragment(R.layout.sheet_app_peek) {
private var _binding: SheetAppPeekBinding? = null
private val binding get() = _binding!!
class AppPeekDialogSheet : BaseDialogSheet<SheetAppPeekBinding>() {
private val args: AppPeekDialogSheetArgs by navArgs()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetAppPeekBinding.bind(view)
binding.txtLine1.text = args.app.displayName
binding.imgIcon.load(args.app.iconArtwork.url) {
@@ -54,9 +48,4 @@ class AppPeekDialogSheet : BottomSheetDialogFragment(R.layout.sheet_app_peek) {
if (args.app.isFree) "Free" else "Paid"
)
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -0,0 +1,58 @@
/*
* Aurora Store
* Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
* Copyright (C) 2022, The Calyx Institute
*
* Aurora Store is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Aurora Store is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.aurora.store.view.ui.sheets
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.viewbinding.ViewBinding
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import java.lang.reflect.ParameterizedType
abstract class BaseDialogSheet<ViewBindingType : ViewBinding> : BottomSheetDialogFragment() {
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()
}
}

View File

@@ -28,18 +28,13 @@ import coil.transform.CircleCropTransformation
import com.aurora.extensions.toast
import com.aurora.store.R
import com.aurora.store.databinding.SheetDeviceMiuiBinding
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class DeviceMiuiSheet : BottomSheetDialogFragment(R.layout.sheet_device_miui) {
private var _binding: SheetDeviceMiuiBinding? = null
private val binding get() = _binding!!
class DeviceMiuiSheet : BaseDialogSheet<SheetDeviceMiuiBinding>() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetDeviceMiuiBinding.bind(view)
binding.imgIcon.load(R.drawable.ic_xiaomi_logo) {
transformations(CircleCropTransformation())
@@ -57,9 +52,4 @@ class DeviceMiuiSheet : BottomSheetDialogFragment(R.layout.sheet_device_miui) {
dismissAllowingStateLoss()
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -36,20 +36,15 @@ import com.aurora.store.databinding.SheetDownloadMenuBinding
import com.aurora.store.util.DownloadWorkerUtil
import com.aurora.store.util.PathUtil
import com.aurora.store.viewmodel.sheets.SheetsViewModel
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.launch
import javax.inject.Inject
@AndroidEntryPoint
class DownloadMenuSheet : BottomSheetDialogFragment(R.layout.sheet_download_menu) {
class DownloadMenuSheet : BaseDialogSheet<SheetDownloadMenuBinding>() {
private val TAG = DownloadMenuSheet::class.java.simpleName
private var _binding: SheetDownloadMenuBinding? = null
private val binding get() = _binding!!
private val viewModel: SheetsViewModel by viewModels()
private val args: DownloadMenuSheetArgs by navArgs()
private val playStoreURL = "https://play.google.com/store/apps/details?id="
@@ -74,7 +69,6 @@ class DownloadMenuSheet : BottomSheetDialogFragment(R.layout.sheet_download_menu
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetDownloadMenuBinding.bind(view)
with(binding.navigationView) {
val downloadCompleted = args.download.downloadStatus == DownloadStatus.COMPLETED
@@ -96,6 +90,7 @@ class DownloadMenuSheet : BottomSheetDialogFragment(R.layout.sheet_download_menu
install()
dismissAllowingStateLoss()
}
R.id.action_copy -> {
requireContext().copyToClipBoard(
"${playStoreURL}${args.download.packageName}"
@@ -103,12 +98,14 @@ class DownloadMenuSheet : BottomSheetDialogFragment(R.layout.sheet_download_menu
requireContext().toast(requireContext().getString(R.string.toast_clipboard_copied))
dismissAllowingStateLoss()
}
R.id.action_cancel -> {
findViewTreeLifecycleOwner()?.lifecycleScope?.launch(NonCancellable) {
downloadWorkerUtil.cancelDownload(args.download.packageName)
}
dismissAllowingStateLoss()
}
R.id.action_clear -> {
findViewTreeLifecycleOwner()?.lifecycleScope?.launch(NonCancellable) {
downloadWorkerUtil.clearDownload(
@@ -118,6 +115,7 @@ class DownloadMenuSheet : BottomSheetDialogFragment(R.layout.sheet_download_menu
}
dismissAllowingStateLoss()
}
R.id.action_local -> {
requestDocumentCreation.launch("${args.download.packageName}.zip")
}
@@ -127,11 +125,6 @@ class DownloadMenuSheet : BottomSheetDialogFragment(R.layout.sheet_download_menu
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun install() {
try {
appInstaller.getPreferredInstaller().install(args.download)

View File

@@ -15,9 +15,8 @@ import com.aurora.store.data.work.UpdateWorker
import com.aurora.store.databinding.SheetDozeWarningBinding
import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_AUTO
import com.aurora.store.util.save
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
class DozeWarningSheet : BottomSheetDialogFragment(R.layout.sheet_doze_warning) {
class DozeWarningSheet : BaseDialogSheet<SheetDozeWarningBinding>() {
private val args: DozeWarningSheetArgs by navArgs()
@@ -38,12 +37,8 @@ class DozeWarningSheet : BottomSheetDialogFragment(R.layout.sheet_doze_warning)
}
}
private var _binding: SheetDozeWarningBinding? = null
private val binding get() = _binding!!
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetDozeWarningBinding.bind(view)
binding.btnSecondary.setOnClickListener { dismissAllowingStateLoss() }
binding.btnPrimary.setOnClickListener {
@@ -55,9 +50,4 @@ class DozeWarningSheet : BottomSheetDialogFragment(R.layout.sheet_doze_warning)
}
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -25,16 +25,12 @@ import com.aurora.store.R
import com.aurora.store.data.model.Filter
import com.aurora.store.data.providers.FilterProvider
import com.aurora.store.databinding.SheetFilterBinding
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.google.android.material.chip.Chip
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@AndroidEntryPoint
class FilterSheet : BottomSheetDialogFragment(R.layout.sheet_filter) {
private var _binding: SheetFilterBinding? = null
private val binding get() = _binding!!
class FilterSheet : BaseDialogSheet<SheetFilterBinding>() {
@Inject
lateinit var filterProvider: FilterProvider
@@ -43,7 +39,6 @@ class FilterSheet : BottomSheetDialogFragment(R.layout.sheet_filter) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetFilterBinding.bind(view)
filter = filterProvider.getSavedFilter()
attachSingleChips()
@@ -51,11 +46,6 @@ class FilterSheet : BottomSheetDialogFragment(R.layout.sheet_filter) {
attachActions()
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun attachActions() {
binding.btnPositive.setOnClickListener {
filterProvider.saveFilter(filter)

View File

@@ -28,20 +28,15 @@ import com.aurora.extensions.copyToClipBoard
import com.aurora.extensions.toast
import com.aurora.store.R
import com.aurora.store.databinding.SheetInstallErrorBinding
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class InstallErrorDialogSheet : BottomSheetDialogFragment(R.layout.sheet_install_error) {
private var _binding: SheetInstallErrorBinding? = null
private val binding get() = _binding!!
class InstallErrorDialogSheet : BaseDialogSheet<SheetInstallErrorBinding>() {
private val args: InstallErrorDialogSheetArgs by navArgs()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetInstallErrorBinding.bind(view)
binding.imgIcon.load(args.app.iconArtwork.url) {
transformations(CircleCropTransformation())
@@ -60,9 +55,4 @@ class InstallErrorDialogSheet : BottomSheetDialogFragment(R.layout.sheet_install
requireContext().toast(R.string.toast_clipboard_copied)
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -31,23 +31,17 @@ import com.aurora.extensions.toast
import com.aurora.store.R
import com.aurora.store.databinding.SheetManualDownloadBinding
import com.aurora.store.viewmodel.sheets.SheetsViewModel
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
@AndroidEntryPoint
class ManualDownloadSheet : BottomSheetDialogFragment(R.layout.sheet_manual_download) {
private var _binding: SheetManualDownloadBinding? = null
private val binding get() = _binding!!
class ManualDownloadSheet : BaseDialogSheet<SheetManualDownloadBinding>() {
private val viewModel: SheetsViewModel by viewModels()
private val args: ManualDownloadSheetArgs by navArgs()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetManualDownloadBinding.bind(view)
isCancelable = false
inflateData()
@@ -65,11 +59,6 @@ class ManualDownloadSheet : BottomSheetDialogFragment(R.layout.sheet_manual_down
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
this.lifecycleScope.launch {
viewModel.purchaseStatus.collectLatest {

View File

@@ -26,19 +26,14 @@ import android.provider.Settings
import android.util.Log
import android.view.View
import com.aurora.extensions.isQAndAbove
import com.aurora.store.R
import com.aurora.store.databinding.SheetNetworkBinding
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class NetworkDialogSheet : BottomSheetDialogFragment(R.layout.sheet_network) {
class NetworkDialogSheet : BaseDialogSheet<SheetNetworkBinding>() {
private val TAG = NetworkDialogSheet::class.java.simpleName
private var _binding: SheetNetworkBinding? = null
private val binding get() = _binding!!
companion object {
const val TAG = "NetworkDialogSheet"
@@ -53,8 +48,6 @@ class NetworkDialogSheet : BottomSheetDialogFragment(R.layout.sheet_network) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetNetworkBinding.bind(view)
binding.btnAction.setOnClickListener {
if (isQAndAbove()) {
startActivity(Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY))
@@ -68,9 +61,4 @@ class NetworkDialogSheet : BottomSheetDialogFragment(R.layout.sheet_network) {
}
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

View File

@@ -31,14 +31,10 @@ import com.aurora.store.R
import com.aurora.store.data.model.PermissionGroupInfo
import com.aurora.store.databinding.SheetPermissionsBinding
import com.aurora.store.view.custom.layouts.PermissionGroup
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class PermissionBottomSheet : BottomSheetDialogFragment(R.layout.sheet_permissions) {
private var _binding: SheetPermissionsBinding? = null
private val binding get() = _binding!!
class PermissionBottomSheet : BaseDialogSheet<SheetPermissionsBinding>() {
private lateinit var packageManager: PackageManager
private lateinit var currentPerms: List<String>
@@ -47,7 +43,6 @@ class PermissionBottomSheet : BottomSheetDialogFragment(R.layout.sheet_permissio
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = SheetPermissionsBinding.bind(view)
packageManager = requireContext().packageManager
currentPerms = try {
@@ -95,11 +90,6 @@ class PermissionBottomSheet : BottomSheetDialogFragment(R.layout.sheet_permissio
}
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
private fun getPermissionInfo(permissionName: String): PermissionInfo? {
return try {
packageManager.getPermissionInfo(permissionName, 0)