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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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