mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-27 23:40:33 +05:30
Replace unneeded activity restarts
This commit is contained in:
parent
97bd9da857
commit
933cff7ae6
@ -48,6 +48,7 @@ object PreferenceKeys {
|
|||||||
const val CUSTOM_INSTANCE = "customInstance"
|
const val CUSTOM_INSTANCE = "customInstance"
|
||||||
const val CLEAR_CUSTOM_INSTANCES = "clearCustomInstances"
|
const val CLEAR_CUSTOM_INSTANCES = "clearCustomInstances"
|
||||||
const val LOGIN_REGISTER = "login_register"
|
const val LOGIN_REGISTER = "login_register"
|
||||||
|
const val LOGOUT = "logout"
|
||||||
const val DELETE_ACCOUNT = "delete_account"
|
const val DELETE_ACCOUNT = "delete_account"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,7 +4,6 @@ import android.app.Dialog
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.app.ActivityCompat
|
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
@ -15,7 +14,9 @@ import com.github.libretube.extensions.TAG
|
|||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
|
||||||
class DeleteAccountDialog : DialogFragment() {
|
class DeleteAccountDialog(
|
||||||
|
private val onLogout: () -> Unit
|
||||||
|
) : DialogFragment() {
|
||||||
private lateinit var binding: DialogDeleteAccountBinding
|
private lateinit var binding: DialogDeleteAccountBinding
|
||||||
|
|
||||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||||
@ -51,8 +52,7 @@ class DeleteAccountDialog : DialogFragment() {
|
|||||||
}
|
}
|
||||||
Toast.makeText(context, R.string.success, Toast.LENGTH_SHORT).show()
|
Toast.makeText(context, R.string.success, Toast.LENGTH_SHORT).show()
|
||||||
|
|
||||||
PreferenceHelper.setToken("")
|
onLogout.invoke()
|
||||||
ActivityCompat.recreate(requireActivity())
|
|
||||||
dialog?.dismiss()
|
dialog?.dismiss()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import android.app.Dialog
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.app.ActivityCompat
|
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
@ -16,7 +15,9 @@ import com.github.libretube.helpers.PreferenceHelper
|
|||||||
import com.github.libretube.util.TextUtils
|
import com.github.libretube.util.TextUtils
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
|
||||||
class LoginDialog : DialogFragment() {
|
class LoginDialog(
|
||||||
|
private val onLogin: () -> Unit
|
||||||
|
) : DialogFragment() {
|
||||||
private lateinit var binding: DialogLoginBinding
|
private lateinit var binding: DialogLoginBinding
|
||||||
|
|
||||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||||
@ -96,8 +97,8 @@ class LoginDialog : DialogFragment() {
|
|||||||
PreferenceHelper.setToken(response.token)
|
PreferenceHelper.setToken(response.token)
|
||||||
PreferenceHelper.setUsername(login.username)
|
PreferenceHelper.setUsername(login.username)
|
||||||
|
|
||||||
|
onLogin.invoke()
|
||||||
dialog?.dismiss()
|
dialog?.dismiss()
|
||||||
ActivityCompat.recreate(requireActivity())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,14 +4,15 @@ import android.annotation.SuppressLint
|
|||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.app.ActivityCompat
|
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.databinding.DialogLogoutBinding
|
import com.github.libretube.databinding.DialogLogoutBinding
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
|
||||||
class LogoutDialog : DialogFragment() {
|
class LogoutDialog(
|
||||||
|
private val onLogout: () -> Unit
|
||||||
|
) : DialogFragment() {
|
||||||
private lateinit var binding: DialogLogoutBinding
|
private lateinit var binding: DialogLogoutBinding
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
@ -24,9 +25,9 @@ class LogoutDialog : DialogFragment() {
|
|||||||
binding.user.text.toString() + " (" + user + ")"
|
binding.user.text.toString() + " (" + user + ")"
|
||||||
binding.logout.setOnClickListener {
|
binding.logout.setOnClickListener {
|
||||||
Toast.makeText(context, R.string.loggedout, Toast.LENGTH_SHORT).show()
|
Toast.makeText(context, R.string.loggedout, Toast.LENGTH_SHORT).show()
|
||||||
PreferenceHelper.setToken("")
|
|
||||||
|
onLogout.invoke()
|
||||||
dialog?.dismiss()
|
dialog?.dismiss()
|
||||||
ActivityCompat.recreate(requireActivity())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return MaterialAlertDialogBuilder(requireContext())
|
return MaterialAlertDialogBuilder(requireContext())
|
||||||
|
@ -27,6 +27,7 @@ import kotlinx.coroutines.withContext
|
|||||||
|
|
||||||
class InstanceSettings : BasePreferenceFragment() {
|
class InstanceSettings : BasePreferenceFragment() {
|
||||||
override val titleResourceId: Int = R.string.instance
|
override val titleResourceId: Int = R.string.instance
|
||||||
|
private val token get() = PreferenceHelper.getToken()
|
||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
setPreferencesFromResource(R.xml.instance_settings, rootKey)
|
setPreferencesFromResource(R.xml.instance_settings, rootKey)
|
||||||
@ -37,7 +38,7 @@ class InstanceSettings : BasePreferenceFragment() {
|
|||||||
RetrofitInstance.url = newValue.toString()
|
RetrofitInstance.url = newValue.toString()
|
||||||
if (!PreferenceHelper.getBoolean(PreferenceKeys.AUTH_INSTANCE_TOGGLE, false)) {
|
if (!PreferenceHelper.getBoolean(PreferenceKeys.AUTH_INSTANCE_TOGGLE, false)) {
|
||||||
RetrofitInstance.authUrl = newValue.toString()
|
RetrofitInstance.authUrl = newValue.toString()
|
||||||
logout()
|
logoutAndUpdateUI()
|
||||||
}
|
}
|
||||||
RetrofitInstance.lazyMgr.reset()
|
RetrofitInstance.lazyMgr.reset()
|
||||||
ActivityCompat.recreate(requireActivity())
|
ActivityCompat.recreate(requireActivity())
|
||||||
@ -54,8 +55,7 @@ class InstanceSettings : BasePreferenceFragment() {
|
|||||||
// save new auth url
|
// save new auth url
|
||||||
RetrofitInstance.authUrl = newValue.toString()
|
RetrofitInstance.authUrl = newValue.toString()
|
||||||
RetrofitInstance.lazyMgr.reset()
|
RetrofitInstance.lazyMgr.reset()
|
||||||
logout()
|
logoutAndUpdateUI()
|
||||||
ActivityCompat.recreate(requireActivity())
|
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,7 +63,6 @@ class InstanceSettings : BasePreferenceFragment() {
|
|||||||
findPreference<SwitchPreferenceCompat>(PreferenceKeys.AUTH_INSTANCE_TOGGLE)
|
findPreference<SwitchPreferenceCompat>(PreferenceKeys.AUTH_INSTANCE_TOGGLE)
|
||||||
authInstanceToggle?.setOnPreferenceChangeListener { _, newValue ->
|
authInstanceToggle?.setOnPreferenceChangeListener { _, newValue ->
|
||||||
authInstance.isVisible = newValue == true
|
authInstance.isVisible = newValue == true
|
||||||
logout()
|
|
||||||
// either use new auth url or the normal api url if auth instance disabled
|
// either use new auth url or the normal api url if auth instance disabled
|
||||||
RetrofitInstance.authUrl = if (newValue == false) {
|
RetrofitInstance.authUrl = if (newValue == false) {
|
||||||
RetrofitInstance.url
|
RetrofitInstance.url
|
||||||
@ -71,14 +70,14 @@ class InstanceSettings : BasePreferenceFragment() {
|
|||||||
authInstance.value
|
authInstance.value
|
||||||
}
|
}
|
||||||
RetrofitInstance.lazyMgr.reset()
|
RetrofitInstance.lazyMgr.reset()
|
||||||
ActivityCompat.recreate(requireActivity())
|
logoutAndUpdateUI()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
val customInstance = findPreference<Preference>(PreferenceKeys.CUSTOM_INSTANCE)
|
val customInstance = findPreference<Preference>(PreferenceKeys.CUSTOM_INSTANCE)
|
||||||
customInstance?.setOnPreferenceClickListener {
|
customInstance?.setOnPreferenceClickListener {
|
||||||
val newFragment = CustomInstanceDialog()
|
CustomInstanceDialog()
|
||||||
newFragment.show(childFragmentManager, CustomInstanceDialog::class.java.name)
|
.show(childFragmentManager, CustomInstanceDialog::class.java.name)
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,25 +91,32 @@ class InstanceSettings : BasePreferenceFragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val login = findPreference<Preference>(PreferenceKeys.LOGIN_REGISTER)
|
val login = findPreference<Preference>(PreferenceKeys.LOGIN_REGISTER)
|
||||||
val token = PreferenceHelper.getToken()
|
val logout = findPreference<Preference>(PreferenceKeys.LOGOUT)
|
||||||
if (token != "") login?.setTitle(R.string.logout)
|
val deleteAccount = findPreference<Preference>(PreferenceKeys.DELETE_ACCOUNT)
|
||||||
login?.setOnPreferenceClickListener {
|
|
||||||
if (token == "") {
|
|
||||||
val newFragment = LoginDialog()
|
|
||||||
newFragment.show(childFragmentManager, LoginDialog::class.java.name)
|
|
||||||
} else {
|
|
||||||
val newFragment = LogoutDialog()
|
|
||||||
newFragment.show(childFragmentManager, LogoutDialog::class.java.name)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
login?.isVisible = token.isEmpty()
|
||||||
|
logout?.isVisible = token.isNotEmpty()
|
||||||
|
deleteAccount?.isEnabled = token.isNotEmpty()
|
||||||
|
|
||||||
|
login?.setOnPreferenceClickListener {
|
||||||
|
LoginDialog {
|
||||||
|
login.isVisible = false
|
||||||
|
logout?.isVisible = true
|
||||||
|
deleteAccount?.isEnabled = true
|
||||||
|
}
|
||||||
|
.show(childFragmentManager, LoginDialog::class.java.name)
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
logout?.setOnPreferenceClickListener {
|
||||||
|
LogoutDialog(this::logoutAndUpdateUI)
|
||||||
|
.show(childFragmentManager, LogoutDialog::class.java.name)
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
val deleteAccount = findPreference<Preference>(PreferenceKeys.DELETE_ACCOUNT)
|
|
||||||
deleteAccount?.isEnabled = PreferenceHelper.getToken() != ""
|
|
||||||
deleteAccount?.setOnPreferenceClickListener {
|
deleteAccount?.setOnPreferenceClickListener {
|
||||||
val newFragment = DeleteAccountDialog()
|
DeleteAccountDialog(this::logoutAndUpdateUI)
|
||||||
newFragment.show(childFragmentManager, DeleteAccountDialog::class.java.name)
|
.show(childFragmentManager, DeleteAccountDialog::class.java.name)
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -153,8 +159,11 @@ class InstanceSettings : BasePreferenceFragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun logout() {
|
private fun logoutAndUpdateUI() {
|
||||||
PreferenceHelper.setToken("")
|
PreferenceHelper.setToken("")
|
||||||
Toast.makeText(context, getString(R.string.loggedout), Toast.LENGTH_SHORT).show()
|
Toast.makeText(context, getString(R.string.loggedout), Toast.LENGTH_SHORT).show()
|
||||||
|
findPreference<Preference>(PreferenceKeys.LOGIN_REGISTER)?.isVisible = true
|
||||||
|
findPreference<Preference>(PreferenceKeys.LOGOUT)?.isVisible = false
|
||||||
|
findPreference<Preference>(PreferenceKeys.DELETE_ACCOUNT)?.isEnabled = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,13 @@
|
|||||||
app:key="login_register"
|
app:key="login_register"
|
||||||
app:title="@string/login_register" />
|
app:title="@string/login_register" />
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:icon="@drawable/ic_login_filled"
|
||||||
|
android:summary="@string/notgmail"
|
||||||
|
app:isPreferenceVisible="false"
|
||||||
|
app:key="logout"
|
||||||
|
app:title="@string/logout" />
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:icon="@drawable/ic_reset"
|
android:icon="@drawable/ic_reset"
|
||||||
android:summary="@string/deleteAccount_summary"
|
android:summary="@string/deleteAccount_summary"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user