Merge pull request #3261 from Isira-Seneviratne/Dialog_bindings

Move dialog bindings to onCreateDialog() methods.
This commit is contained in:
Bnyro 2023-03-07 07:14:27 +01:00 committed by GitHub
commit 938dca2c9f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 17 additions and 31 deletions

View File

@ -12,7 +12,7 @@ import androidx.lifecycle.lifecycleScope
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.api.PlaylistsHelper import com.github.libretube.api.PlaylistsHelper
import com.github.libretube.api.RetrofitInstance import com.github.libretube.api.RetrofitInstance
import com.github.libretube.databinding.DialogAddtoplaylistBinding import com.github.libretube.databinding.DialogAddToPlaylistBinding
import com.github.libretube.extensions.TAG import com.github.libretube.extensions.TAG
import com.github.libretube.extensions.toastFromMainThread import com.github.libretube.extensions.toastFromMainThread
import com.github.libretube.ui.models.PlaylistViewModel import com.github.libretube.ui.models.PlaylistViewModel
@ -27,26 +27,25 @@ import kotlinx.coroutines.launch
class AddToPlaylistDialog( class AddToPlaylistDialog(
private val videoId: String? = null private val videoId: String? = null
) : DialogFragment() { ) : DialogFragment() {
private lateinit var binding: DialogAddtoplaylistBinding
private val viewModel: PlaylistViewModel by activityViewModels() private val viewModel: PlaylistViewModel by activityViewModels()
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
binding = DialogAddtoplaylistBinding.inflate(layoutInflater) val binding = DialogAddToPlaylistBinding.inflate(layoutInflater)
binding.createPlaylist.setOnClickListener { binding.createPlaylist.setOnClickListener {
CreatePlaylistDialog { CreatePlaylistDialog {
fetchPlaylists() fetchPlaylists(binding)
}.show(childFragmentManager, null) }.show(childFragmentManager, null)
} }
fetchPlaylists() fetchPlaylists(binding)
return MaterialAlertDialogBuilder(requireContext()) return MaterialAlertDialogBuilder(requireContext())
.setView(binding.root) .setView(binding.root)
.show() .show()
} }
private fun fetchPlaylists() { private fun fetchPlaylists(binding: DialogAddToPlaylistBinding) {
lifecycleScope.launchWhenCreated { lifecycleScope.launchWhenCreated {
val response = try { val response = try {
PlaylistsHelper.getPlaylists() PlaylistsHelper.getPlaylists()

View File

@ -18,10 +18,8 @@ import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
class CreatePlaylistDialog( class CreatePlaylistDialog(
private val onSuccess: () -> Unit = {} private val onSuccess: () -> Unit = {}
) : DialogFragment() { ) : DialogFragment() {
private lateinit var binding: DialogCreatePlaylistBinding
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
binding = DialogCreatePlaylistBinding.inflate(layoutInflater) val binding = DialogCreatePlaylistBinding.inflate(layoutInflater)
binding.clonePlaylist.setOnClickListener { binding.clonePlaylist.setOnClickListener {
val playlistUrl = binding.playlistUrl.text.toString().toHttpUrlOrNull() val playlistUrl = binding.playlistUrl.text.toString().toHttpUrlOrNull()

View File

@ -17,10 +17,8 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
class DeleteAccountDialog( class DeleteAccountDialog(
private val onLogout: () -> Unit private val onLogout: () -> Unit
) : DialogFragment() { ) : DialogFragment() {
private lateinit var binding: DialogDeleteAccountBinding
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
binding = DialogDeleteAccountBinding.inflate(layoutInflater) val binding = DialogDeleteAccountBinding.inflate(layoutInflater)
binding.cancelButton.setOnClickListener { binding.cancelButton.setOnClickListener {
dialog?.dismiss() dialog?.dismiss()

View File

@ -27,12 +27,10 @@ import retrofit2.HttpException
class DownloadDialog( class DownloadDialog(
private val videoId: String private val videoId: String
) : DialogFragment() { ) : DialogFragment() {
private lateinit var binding: DialogDownloadBinding
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
binding = DialogDownloadBinding.inflate(layoutInflater) val binding = DialogDownloadBinding.inflate(layoutInflater)
fetchAvailableSources() fetchAvailableSources(binding)
binding.fileName.filters += InputFilter { source, start, end, _, _, _ -> binding.fileName.filters += InputFilter { source, start, end, _, _, _ ->
if (source.isNullOrBlank()) { if (source.isNullOrBlank()) {
@ -58,7 +56,7 @@ class DownloadDialog(
.show() .show()
} }
private fun fetchAvailableSources() { private fun fetchAvailableSources(binding: DialogDownloadBinding) {
lifecycleScope.launchWhenCreated { lifecycleScope.launchWhenCreated {
val response = try { val response = try {
RetrofitInstance.api.getStreams(videoId) RetrofitInstance.api.getStreams(videoId)
@ -72,11 +70,11 @@ class DownloadDialog(
Toast.makeText(context, R.string.server_error, Toast.LENGTH_SHORT).show() Toast.makeText(context, R.string.server_error, Toast.LENGTH_SHORT).show()
return@launchWhenCreated return@launchWhenCreated
} }
initDownloadOptions(response) initDownloadOptions(binding, response)
} }
} }
private fun initDownloadOptions(streams: Streams) { private fun initDownloadOptions(binding: DialogDownloadBinding, streams: Streams) {
binding.fileName.setText(streams.title) binding.fileName.setText(streams.title)
val videoStreams = streams.videoStreams.filter { val videoStreams = streams.videoStreams.filter {
@ -126,7 +124,7 @@ class DownloadDialog(
binding.audioSpinner.adapter = audioArrayAdapter binding.audioSpinner.adapter = audioArrayAdapter
binding.subtitleSpinner.adapter = subtitleArrayAdapter binding.subtitleSpinner.adapter = subtitleArrayAdapter
restorePreviousSelections(videoStreams, audioStreams, subtitles) restorePreviousSelections(binding, videoStreams, audioStreams, subtitles)
binding.download.setOnClickListener { binding.download.setOnClickListener {
if (binding.fileName.text.toString().isEmpty()) { if (binding.fileName.text.toString().isEmpty()) {
@ -185,6 +183,7 @@ class DownloadDialog(
* Restore the download selections from a previous session * Restore the download selections from a previous session
*/ */
private fun restorePreviousSelections( private fun restorePreviousSelections(
binding: DialogDownloadBinding,
videoStreams: List<PipedStream>, videoStreams: List<PipedStream>,
audioStreams: List<PipedStream>, audioStreams: List<PipedStream>,
subtitles: List<Subtitle> subtitles: List<Subtitle>

View File

@ -22,10 +22,8 @@ import retrofit2.HttpException
class LoginDialog( class LoginDialog(
private val onLogin: () -> Unit private val onLogin: () -> Unit
) : DialogFragment() { ) : DialogFragment() {
private lateinit var binding: DialogLoginBinding
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
binding = DialogLoginBinding.inflate(layoutInflater) val binding = DialogLoginBinding.inflate(layoutInflater)
binding.login.setOnClickListener { binding.login.setOnClickListener {
val email = binding.username.text?.toString() val email = binding.username.text?.toString()

View File

@ -13,11 +13,9 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
class LogoutDialog( class LogoutDialog(
private val onLogout: () -> Unit private val onLogout: () -> Unit
) : DialogFragment() { ) : DialogFragment() {
private lateinit var binding: DialogLogoutBinding
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
binding = DialogLogoutBinding.inflate(layoutInflater) val binding = DialogLogoutBinding.inflate(layoutInflater)
val user = PreferenceHelper.getUsername() val user = PreferenceHelper.getUsername()

View File

@ -13,13 +13,9 @@ import com.github.libretube.ui.adapters.NavBarOptionsAdapter
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
class NavBarOptionsDialog : DialogFragment() { class NavBarOptionsDialog : DialogFragment() {
private lateinit var binding: DialogNavbarOptionsBinding
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
binding = DialogNavbarOptionsBinding.inflate(layoutInflater) val binding = DialogNavbarOptionsBinding.inflate(layoutInflater)
val options = NavBarHelper.getNavBarItems(requireContext()) val options = NavBarHelper.getNavBarItems(requireContext())
val adapter = NavBarOptionsAdapter( val adapter = NavBarOptionsAdapter(
options.toMutableList(), options.toMutableList(),
NavBarHelper.getStartFragmentId(requireContext()) NavBarHelper.getStartFragmentId(requireContext())