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 {
|
2022-07-17 20:49:55 +05:30
|
|
|
val token = PreferenceHelper.getToken()
|
2022-06-25 21:25:03 +05:30
|
|
|
|
2022-06-26 13:31:43 +05:30
|
|
|
try {
|
2022-07-03 00:25:22 +05:30
|
|
|
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()
|
2022-07-10 17:49:19 +05:30
|
|
|
val restartDialog = RequireRestartDialog()
|
|
|
|
restartDialog.show(childFragmentManager, "RequireRestartDialog")
|
2022-06-25 21:25:03 +05:30
|
|
|
}
|
|
|
|
}
|
|
|
|
run()
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun logout() {
|
2022-07-17 20:49:55 +05:30
|
|
|
PreferenceHelper.setToken("")
|
2022-06-25 21:25:03 +05:30
|
|
|
}
|
|
|
|
}
|