LibreTube/app/src/main/java/com/github/libretube/dialogs/DeleteAccountDialog.kt

70 lines
2.5 KiB
Kotlin
Raw Normal View History

2022-06-25 21:25:03 +05:30
package com.github.libretube.dialogs
import android.app.Dialog
import android.os.Bundle
2022-06-26 00:56:37 +05:30
import android.util.Log
2022-06-25 21:25:03 +05:30
import android.widget.Toast
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope
import com.github.libretube.R
2022-07-01 13:49:00 +05:30
import com.github.libretube.databinding.DialogDeleteAccountBinding
2022-06-25 21:25:03 +05:30
import com.github.libretube.obj.DeleteUserRequest
2022-07-02 21:53:24 +05:30
import com.github.libretube.preferences.PreferenceHelper
2022-06-25 21:25:03 +05:30
import com.github.libretube.util.RetrofitInstance
2022-07-04 12:25:52 +05:30
import com.github.libretube.util.ThemeHelper
2022-06-25 21:25:03 +05:30
import com.google.android.material.dialog.MaterialAlertDialogBuilder
class DeleteAccountDialog : DialogFragment() {
private val TAG = "DeleteAccountDialog"
2022-07-01 13:49:00 +05:30
private lateinit var binding: DialogDeleteAccountBinding
2022-06-25 21:25:03 +05:30
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return activity?.let {
val builder = MaterialAlertDialogBuilder(it)
2022-07-01 13:49:00 +05:30
binding = DialogDeleteAccountBinding.inflate(layoutInflater)
2022-06-25 21:41:11 +05:30
2022-07-01 13:49:00 +05:30
binding.cancelButton.setOnClickListener {
2022-06-25 21:41:11 +05:30
dialog?.dismiss()
}
2022-06-25 21:25:03 +05:30
2022-07-01 13:49:00 +05:30
binding.deleteAccountConfirm.setOnClickListener {
if (binding.deletePassword.text.toString() != "") {
deleteAccount(binding.deletePassword.text.toString())
2022-06-25 21:25:03 +05:30
} else {
Toast.makeText(context, R.string.empty, Toast.LENGTH_SHORT).show()
}
}
2022-07-04 12:25:52 +05:30
binding.title.text = ThemeHelper.getStyledAppName(requireContext())
2022-06-25 21:25:03 +05:30
2022-07-01 13:49:00 +05:30
builder.setView(binding.root)
2022-06-25 21:25:03 +05:30
builder.create()
} ?: throw IllegalStateException("Activity cannot be null")
}
private fun deleteAccount(password: String) {
fun run() {
lifecycleScope.launchWhenCreated {
val token = PreferenceHelper.getToken()
2022-06-25 21:25:03 +05:30
2022-06-26 13:31:43 +05:30
try {
RetrofitInstance.authApi.deleteAccount(token, DeleteUserRequest(password))
2022-06-25 21:25:03 +05:30
} catch (e: Exception) {
2022-06-26 00:56:37 +05:30
Log.e(TAG, e.toString())
Toast.makeText(context, R.string.unknown_error, Toast.LENGTH_SHORT).show()
2022-06-25 22:00:17 +05:30
return@launchWhenCreated
2022-06-25 21:25:03 +05:30
}
Toast.makeText(context, R.string.success, Toast.LENGTH_SHORT).show()
logout()
val restartDialog = RequireRestartDialog()
restartDialog.show(childFragmentManager, "RequireRestartDialog")
2022-06-25 21:25:03 +05:30
}
}
run()
}
private fun logout() {
PreferenceHelper.setToken("")
2022-06-25 21:25:03 +05:30
}
}