Merge branch 'libre-tube:master' into master

This commit is contained in:
Daniel 2022-10-17 10:34:00 +06:00 committed by GitHub
commit 6aaa83a1f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 55 additions and 70 deletions

View File

@ -54,13 +54,10 @@ class DeleteAccountDialog : DialogFragment() {
return@launchWhenCreated return@launchWhenCreated
} }
Toast.makeText(context, R.string.success, Toast.LENGTH_SHORT).show() Toast.makeText(context, R.string.success, Toast.LENGTH_SHORT).show()
logout()
val restartDialog = RequireRestartDialog()
restartDialog.show(childFragmentManager, RequireRestartDialog::class.java.name)
}
}
private fun logout() {
PreferenceHelper.setToken("") PreferenceHelper.setToken("")
activity?.recreate()
dialog?.dismiss()
}
} }
} }

View File

@ -8,6 +8,7 @@ import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.api.RetrofitInstance import com.github.libretube.api.RetrofitInstance
import com.github.libretube.api.obj.Login
import com.github.libretube.databinding.DialogLoginBinding import com.github.libretube.databinding.DialogLoginBinding
import com.github.libretube.extensions.TAG import com.github.libretube.extensions.TAG
import com.github.libretube.util.PreferenceHelper import com.github.libretube.util.PreferenceHelper
@ -23,27 +24,22 @@ class LoginDialog : DialogFragment() {
binding = DialogLoginBinding.inflate(layoutInflater) binding = DialogLoginBinding.inflate(layoutInflater)
binding.login.setOnClickListener { binding.login.setOnClickListener {
if (binding.username.text.toString() != "" && binding.password.text.toString() != "") { if (isInsertionValid()) {
val login = signIn(
com.github.libretube.api.obj.Login(
binding.username.text.toString(), binding.username.text.toString(),
binding.password.text.toString() binding.password.text.toString()
) )
login(login)
} else { } else {
Toast.makeText(context, R.string.empty, Toast.LENGTH_SHORT).show() Toast.makeText(context, R.string.empty, Toast.LENGTH_SHORT).show()
} }
} }
binding.register.setOnClickListener { binding.register.setOnClickListener {
if ( if (isInsertionValid()) {
binding.username.text.toString() != "" && signIn(
binding.password.text.toString() != ""
) {
val login = com.github.libretube.api.obj.Login(
binding.username.text.toString(), binding.username.text.toString(),
binding.password.text.toString() binding.password.text.toString(),
true
) )
register(login)
} else { } else {
Toast.makeText(context, R.string.empty, Toast.LENGTH_SHORT).show() Toast.makeText(context, R.string.empty, Toast.LENGTH_SHORT).show()
} }
@ -56,12 +52,20 @@ class LoginDialog : DialogFragment() {
.show() .show()
} }
private fun login(login: com.github.libretube.api.obj.Login) { private fun isInsertionValid(): Boolean {
return binding.username.text.toString() != "" && binding.password.text.toString() != ""
}
private fun signIn(username: String, password: String, createNewAccount: Boolean = false) {
val login = Login(username, password)
lifecycleScope.launchWhenCreated { lifecycleScope.launchWhenCreated {
val response = try { val response = try {
if (createNewAccount) {
RetrofitInstance.authApi.register(login)
} else {
RetrofitInstance.authApi.login(login) RetrofitInstance.authApi.login(login)
}
} catch (e: IOException) { } catch (e: IOException) {
println(e)
Log.e(TAG(), "IOException, you might not have internet connection") Log.e(TAG(), "IOException, you might not have internet connection")
Toast.makeText(context, R.string.unknown_error, Toast.LENGTH_SHORT).show() Toast.makeText(context, R.string.unknown_error, Toast.LENGTH_SHORT).show()
return@launchWhenCreated return@launchWhenCreated
@ -70,49 +74,26 @@ class LoginDialog : DialogFragment() {
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
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG(), "dafaq?$e")
return@launchWhenCreated return@launchWhenCreated
} }
if (response.error != null) { if (response.error != null) {
Toast.makeText(context, response.error, Toast.LENGTH_SHORT).show() Toast.makeText(context, response.error, Toast.LENGTH_SHORT).show()
} else if (response.token != null) { return@launchWhenCreated
Toast.makeText(context, R.string.loggedIn, Toast.LENGTH_SHORT).show() }
if (response.token == null) return@launchWhenCreated
Toast.makeText(
context,
if (createNewAccount) R.string.registered else R.string.loggedIn,
Toast.LENGTH_SHORT
).show()
PreferenceHelper.setToken(response.token!!) PreferenceHelper.setToken(response.token!!)
PreferenceHelper.setUsername(login.username!!) PreferenceHelper.setUsername(login.username!!)
dialog?.dismiss() dialog?.dismiss()
activity?.recreate() activity?.recreate()
} }
} }
} }
private fun register(login: com.github.libretube.api.obj.Login) {
fun run() {
lifecycleScope.launchWhenCreated {
val response = try {
RetrofitInstance.authApi.register(login)
} catch (e: IOException) {
println(e)
Log.e(TAG(), "IOException, you might not have internet connection")
Toast.makeText(context, R.string.unknown_error, Toast.LENGTH_SHORT).show()
return@launchWhenCreated
} catch (e: HttpException) {
Log.e(TAG(), "HttpException, unexpected response")
Toast.makeText(context, R.string.server_error, Toast.LENGTH_SHORT).show()
return@launchWhenCreated
} catch (e: Exception) {
Log.e(TAG(), "dafaq?$e")
return@launchWhenCreated
}
if (response.error != null) {
Toast.makeText(context, response.error, Toast.LENGTH_SHORT).show()
} else if (response.token != null) {
Toast.makeText(context, R.string.registered, Toast.LENGTH_SHORT).show()
PreferenceHelper.setToken(response.token!!)
PreferenceHelper.setUsername(login.username!!)
dialog?.dismiss()
}
}
}
run()
}
}

View File

@ -6,10 +6,12 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import com.github.libretube.databinding.PlaybackBottomSheetBinding import com.github.libretube.databinding.PlaybackBottomSheetBinding
import com.google.android.exoplayer2.PlaybackParameters
import com.google.android.exoplayer2.Player
import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.bottomsheet.BottomSheetDialogFragment
class PlaybackSpeedSheet( class PlaybackSpeedSheet(
private val onChange: (speed: Float, pitch: Float) -> Unit private val player: Player
) : BottomSheetDialogFragment() { ) : BottomSheetDialogFragment() {
private lateinit var binding: PlaybackBottomSheetBinding private lateinit var binding: PlaybackBottomSheetBinding
@ -25,15 +27,25 @@ class PlaybackSpeedSheet(
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
binding.speed.value = player.playbackParameters.speed
binding.pitch.value = player.playbackParameters.pitch
binding.speed.addOnChangeListener { _, value, _ -> binding.speed.addOnChangeListener { _, value, _ ->
onChange.invoke(value, binding.pitch.value) onChange(value, binding.pitch.value)
} }
binding.pitch.addOnChangeListener { _, value, _ -> binding.pitch.addOnChangeListener { _, value, _ ->
onChange.invoke(binding.speed.value, value) onChange(binding.speed.value, value)
} }
} }
private fun onChange(speed: Float, pitch: Float) {
player.playbackParameters = PlaybackParameters(
speed,
pitch
)
}
fun show(fragmentManager: FragmentManager) = show( fun show(fragmentManager: FragmentManager) = show(
fragmentManager, fragmentManager,
null null

View File

@ -322,12 +322,7 @@ internal class CustomExoPlayerView(
} }
private fun onPlaybackSpeedClicked() { private fun onPlaybackSpeedClicked() {
PlaybackSpeedSheet { speed, pitch -> player?.let { PlaybackSpeedSheet(it).show(childFragmentManager) }
player?.playbackParameters = PlaybackParameters(
speed,
pitch
)
}.show(childFragmentManager)
} }
private fun onResizeModeClicked() { private fun onResizeModeClicked() {