Use view binding property delegate (#22)
This commit is contained in:
@@ -159,4 +159,7 @@ dependencies {
|
|||||||
def stetho_version = "1.6.0"
|
def stetho_version = "1.6.0"
|
||||||
implementation "com.facebook.stetho:stetho:$stetho_version"
|
implementation "com.facebook.stetho:stetho:$stetho_version"
|
||||||
implementation "com.facebook.stetho:stetho-okhttp3:$stetho_version"
|
implementation "com.facebook.stetho:stetho-okhttp3:$stetho_version"
|
||||||
|
|
||||||
|
// https://github.com/androidbroadcast/ViewBindingPropertyDelegate/releases
|
||||||
|
implementation "com.github.kirich1409:viewbindingpropertydelegate-noreflection:1.5.3"
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
package gq.kirmanak.mealient.ui.auth
|
package gq.kirmanak.mealient.ui.auth
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.widget.EditText
|
import android.widget.EditText
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
@@ -11,6 +9,7 @@ import androidx.fragment.app.viewModels
|
|||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
|
import by.kirich1409.viewbindingdelegate.viewBinding
|
||||||
import com.google.android.material.textfield.TextInputLayout
|
import com.google.android.material.textfield.TextInputLayout
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import gq.kirmanak.mealient.R
|
import gq.kirmanak.mealient.R
|
||||||
@@ -24,10 +23,8 @@ import timber.log.Timber
|
|||||||
|
|
||||||
@ExperimentalCoroutinesApi
|
@ExperimentalCoroutinesApi
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class AuthenticationFragment : Fragment() {
|
class AuthenticationFragment : Fragment(R.layout.fragment_authentication) {
|
||||||
private var _binding: FragmentAuthenticationBinding? = null
|
private val binding by viewBinding(FragmentAuthenticationBinding::bind)
|
||||||
private val binding: FragmentAuthenticationBinding
|
|
||||||
get() = checkNotNull(_binding) { "Binding requested when fragment is off screen" }
|
|
||||||
private val viewModel by viewModels<AuthenticationViewModel>()
|
private val viewModel by viewModels<AuthenticationViewModel>()
|
||||||
|
|
||||||
private val authStatuses by lazy { viewModel.authenticationStatuses() }
|
private val authStatuses by lazy { viewModel.authenticationStatuses() }
|
||||||
@@ -46,16 +43,6 @@ class AuthenticationFragment : Fragment() {
|
|||||||
authStatuses.observe(this, authStatusObserver)
|
authStatuses.observe(this, authStatusObserver)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateView(
|
|
||||||
inflater: LayoutInflater,
|
|
||||||
container: ViewGroup?,
|
|
||||||
savedInstanceState: Bundle?
|
|
||||||
): View {
|
|
||||||
Timber.v("onCreateView() called with: inflater = $inflater, container = $container, savedInstanceState = $savedInstanceState")
|
|
||||||
_binding = FragmentAuthenticationBinding.inflate(inflater, container, false)
|
|
||||||
return binding.root
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
Timber.v("onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState")
|
Timber.v("onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState")
|
||||||
@@ -129,10 +116,4 @@ class AuthenticationFragment : Fragment() {
|
|||||||
input.textChangesFlow().filterNotNull().first { it.isNotEmpty() }
|
input.textChangesFlow().filterNotNull().first { it.isNotEmpty() }
|
||||||
Timber.v("waitUntilNotEmpty() returned")
|
Timber.v("waitUntilNotEmpty() returned")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
|
||||||
super.onDestroyView()
|
|
||||||
Timber.v("onDestroyView() called")
|
|
||||||
_binding = null
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,23 +1,20 @@
|
|||||||
package gq.kirmanak.mealient.ui.disclaimer
|
package gq.kirmanak.mealient.ui.disclaimer
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.fragment.app.Fragment
|
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 by.kirich1409.viewbindingdelegate.viewBinding
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import gq.kirmanak.mealient.R
|
import gq.kirmanak.mealient.R
|
||||||
import gq.kirmanak.mealient.databinding.FragmentDisclaimerBinding
|
import gq.kirmanak.mealient.databinding.FragmentDisclaimerBinding
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class DisclaimerFragment : Fragment() {
|
class DisclaimerFragment : Fragment(R.layout.fragment_disclaimer) {
|
||||||
private var _binding: FragmentDisclaimerBinding? = null
|
private val binding by viewBinding(FragmentDisclaimerBinding::bind)
|
||||||
private val binding: FragmentDisclaimerBinding
|
|
||||||
get() = checkNotNull(_binding) { "Binding requested when fragment is off screen" }
|
|
||||||
private val viewModel by viewModels<DisclaimerViewModel>()
|
private val viewModel by viewModels<DisclaimerViewModel>()
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@@ -40,16 +37,6 @@ class DisclaimerFragment : Fragment() {
|
|||||||
findNavController().navigate(DisclaimerFragmentDirections.actionDisclaimerFragmentToAuthenticationFragment())
|
findNavController().navigate(DisclaimerFragmentDirections.actionDisclaimerFragmentToAuthenticationFragment())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateView(
|
|
||||||
inflater: LayoutInflater,
|
|
||||||
container: ViewGroup?,
|
|
||||||
savedInstanceState: Bundle?
|
|
||||||
): View {
|
|
||||||
Timber.v("onCreateView() called with: inflater = $inflater, container = $container, savedInstanceState = $savedInstanceState")
|
|
||||||
_binding = FragmentDisclaimerBinding.inflate(inflater, container, false)
|
|
||||||
return binding.root
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
Timber.v("onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState")
|
Timber.v("onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState")
|
||||||
@@ -68,10 +55,4 @@ class DisclaimerFragment : Fragment() {
|
|||||||
(requireActivity() as? AppCompatActivity)?.supportActionBar?.title =
|
(requireActivity() as? AppCompatActivity)?.supportActionBar?.title =
|
||||||
getString(R.string.app_name)
|
getString(R.string.app_name)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
|
||||||
super.onDestroyView()
|
|
||||||
Timber.v("onDestroyView() called")
|
|
||||||
_binding = null
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
package gq.kirmanak.mealient.ui.recipes
|
package gq.kirmanak.mealient.ui.recipes
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
|
import by.kirich1409.viewbindingdelegate.viewBinding
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
import gq.kirmanak.mealient.R
|
||||||
import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity
|
import gq.kirmanak.mealient.data.recipes.db.entity.RecipeSummaryEntity
|
||||||
import gq.kirmanak.mealient.databinding.FragmentRecipesBinding
|
import gq.kirmanak.mealient.databinding.FragmentRecipesBinding
|
||||||
import gq.kirmanak.mealient.ui.auth.AuthenticationViewModel
|
import gq.kirmanak.mealient.ui.auth.AuthenticationViewModel
|
||||||
@@ -21,10 +21,8 @@ import timber.log.Timber
|
|||||||
|
|
||||||
@ExperimentalCoroutinesApi
|
@ExperimentalCoroutinesApi
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class RecipesFragment : Fragment() {
|
class RecipesFragment : Fragment(R.layout.fragment_recipes) {
|
||||||
private var _binding: FragmentRecipesBinding? = null
|
private val binding by viewBinding(FragmentRecipesBinding::bind)
|
||||||
private val binding: FragmentRecipesBinding
|
|
||||||
get() = checkNotNull(_binding) { "Binding requested when fragment is off screen" }
|
|
||||||
private val viewModel by viewModels<RecipeViewModel>()
|
private val viewModel by viewModels<RecipeViewModel>()
|
||||||
|
|
||||||
private val authViewModel by viewModels<AuthenticationViewModel>()
|
private val authViewModel by viewModels<AuthenticationViewModel>()
|
||||||
@@ -38,16 +36,6 @@ class RecipesFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateView(
|
|
||||||
inflater: LayoutInflater,
|
|
||||||
container: ViewGroup?,
|
|
||||||
savedInstanceState: Bundle?
|
|
||||||
): View {
|
|
||||||
Timber.v("onCreateView() called with: inflater = $inflater, container = $container, savedInstanceState = $savedInstanceState")
|
|
||||||
_binding = FragmentRecipesBinding.inflate(inflater, container, false)
|
|
||||||
return binding.root
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
Timber.v("onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState")
|
Timber.v("onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState")
|
||||||
@@ -89,10 +77,4 @@ class RecipesFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
|
||||||
super.onDestroyView()
|
|
||||||
Timber.v("onDestroyView() called")
|
|
||||||
_binding = null
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@ import android.view.ViewGroup
|
|||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.fragment.navArgs
|
import androidx.navigation.fragment.navArgs
|
||||||
|
import by.kirich1409.viewbindingdelegate.viewBinding
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
@@ -17,9 +18,7 @@ import timber.log.Timber
|
|||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class RecipeInfoFragment : BottomSheetDialogFragment() {
|
class RecipeInfoFragment : BottomSheetDialogFragment() {
|
||||||
private var _binding: FragmentRecipeInfoBinding? = null
|
private val binding by viewBinding(FragmentRecipeInfoBinding::bind)
|
||||||
private val binding: FragmentRecipeInfoBinding
|
|
||||||
get() = checkNotNull(_binding) { "Binding requested when fragment is off screen" }
|
|
||||||
private val arguments by navArgs<RecipeInfoFragmentArgs>()
|
private val arguments by navArgs<RecipeInfoFragmentArgs>()
|
||||||
private val viewModel by viewModels<RecipeInfoViewModel>()
|
private val viewModel by viewModels<RecipeInfoViewModel>()
|
||||||
|
|
||||||
@@ -29,8 +28,7 @@ class RecipeInfoFragment : BottomSheetDialogFragment() {
|
|||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
Timber.v("onCreateView() called with: inflater = $inflater, container = $container, savedInstanceState = $savedInstanceState")
|
Timber.v("onCreateView() called with: inflater = $inflater, container = $container, savedInstanceState = $savedInstanceState")
|
||||||
_binding = FragmentRecipeInfoBinding.inflate(inflater, container, false)
|
return FragmentRecipeInfoBinding.inflate(inflater, container, false).root
|
||||||
return binding.root
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
@@ -53,10 +51,4 @@ class RecipeInfoFragment : BottomSheetDialogFragment() {
|
|||||||
|
|
||||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog =
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog =
|
||||||
BottomSheetDialog(requireContext(), R.style.NoShapeBottomSheetDialog)
|
BottomSheetDialog(requireContext(), R.style.NoShapeBottomSheetDialog)
|
||||||
|
|
||||||
override fun onDestroyView() {
|
|
||||||
super.onDestroyView()
|
|
||||||
Timber.v("onDestroyView() called")
|
|
||||||
_binding = null
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,21 +1,19 @@
|
|||||||
package gq.kirmanak.mealient.ui.splash
|
package gq.kirmanak.mealient.ui.splash
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.fragment.app.Fragment
|
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 dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import gq.kirmanak.mealient.databinding.FragmentSplashBinding
|
import gq.kirmanak.mealient.R
|
||||||
import gq.kirmanak.mealient.ui.setActionBarVisibility
|
import gq.kirmanak.mealient.ui.setActionBarVisibility
|
||||||
import gq.kirmanak.mealient.ui.setSystemUiVisibility
|
import gq.kirmanak.mealient.ui.setSystemUiVisibility
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class SplashFragment : Fragment() {
|
class SplashFragment : Fragment(R.layout.fragment_splash) {
|
||||||
private val viewModel by viewModels<SplashViewModel>()
|
private val viewModel by viewModels<SplashViewModel>()
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@@ -27,15 +25,10 @@ class SplashFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
inflater: LayoutInflater,
|
super.onViewCreated(view, savedInstanceState)
|
||||||
container: ViewGroup?,
|
Timber.v("onViewCreated() called with: view = $view, savedInstanceState = $savedInstanceState")
|
||||||
savedInstanceState: Bundle?
|
|
||||||
): View {
|
|
||||||
Timber.v("onCreateView() called with: inflater = $inflater, container = $container, savedInstanceState = $savedInstanceState")
|
|
||||||
val binding = FragmentSplashBinding.inflate(inflater, container, false)
|
|
||||||
changeFullscreenState(true)
|
changeFullscreenState(true)
|
||||||
return binding.root
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
|
|||||||
Reference in New Issue
Block a user