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

72 lines
2.7 KiB
Kotlin
Raw Normal View History

2022-06-11 16:34:33 +05:30
package com.github.libretube.dialogs
import android.app.Dialog
import android.os.Bundle
2022-06-11 19:25:25 +05:30
import android.widget.Toast
2022-06-11 16:34:33 +05:30
import androidx.fragment.app.DialogFragment
import com.github.libretube.R
2022-07-01 13:49:00 +05:30
import com.github.libretube.databinding.DialogCustomInstanceBinding
2022-06-26 15:41:10 +05:30
import com.github.libretube.obj.CustomInstance
2022-07-02 21:53:24 +05:30
import com.github.libretube.preferences.PreferenceHelper
2022-07-04 12:25:52 +05:30
import com.github.libretube.util.ThemeHelper
2022-06-11 16:34:33 +05:30
import com.google.android.material.dialog.MaterialAlertDialogBuilder
2022-06-11 20:37:37 +05:30
import java.net.URL
2022-06-11 16:34:33 +05:30
class CustomInstanceDialog : DialogFragment() {
2022-06-11 19:25:25 +05:30
val TAG = "CustomInstanceDialog"
2022-07-01 13:49:00 +05:30
private lateinit var binding: DialogCustomInstanceBinding
2022-06-11 19:25:25 +05:30
2022-06-11 16:34:33 +05:30
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return activity?.let {
val builder = MaterialAlertDialogBuilder(it)
2022-07-01 13:49:00 +05:30
binding = DialogCustomInstanceBinding.inflate(layoutInflater)
2022-06-11 16:34:33 +05:30
2022-07-01 13:49:00 +05:30
binding.cancel.setOnClickListener {
2022-06-11 19:25:25 +05:30
dismiss()
}
2022-07-01 13:49:00 +05:30
binding.addInstance.setOnClickListener {
2022-06-26 15:41:10 +05:30
val customInstance = CustomInstance()
2022-07-01 13:49:00 +05:30
customInstance.name = binding.instanceName.text.toString()
customInstance.apiUrl = binding.instanceApiUrl.text.toString()
customInstance.frontendUrl = binding.instanceFrontendUrl.text.toString()
2022-06-26 15:41:10 +05:30
if (
customInstance.name != "" &&
customInstance.apiUrl != "" &&
customInstance.frontendUrl != ""
) {
2022-06-11 20:37:37 +05:30
try {
// check whether the URL is valid, otherwise catch
2022-06-26 15:41:10 +05:30
URL(customInstance.apiUrl).toURI()
URL(customInstance.frontendUrl).toURI()
2022-06-18 14:44:46 +05:30
PreferenceHelper.saveCustomInstance(customInstance)
2022-07-03 15:43:38 +05:30
activity?.recreate()
2022-06-11 20:37:37 +05:30
dismiss()
2022-06-11 19:25:25 +05:30
} catch (e: Exception) {
2022-06-11 20:37:37 +05:30
// invalid URL
2022-06-11 20:38:05 +05:30
Toast.makeText(
2022-06-24 20:56:36 +05:30
context,
getString(R.string.invalid_url),
Toast.LENGTH_SHORT
2022-06-11 20:38:05 +05:30
).show()
2022-06-11 19:25:25 +05:30
}
} else {
2022-06-11 20:37:37 +05:30
// at least one empty input
2022-06-11 19:25:25 +05:30
Toast.makeText(
2022-06-24 20:56:36 +05:30
context,
context?.getString(R.string.empty_instance),
Toast.LENGTH_SHORT
2022-06-11 19:25:25 +05:30
).show()
}
2022-06-11 16:34:33 +05:30
}
2022-07-04 12:25:52 +05:30
binding.title.text = ThemeHelper.getStyledAppName(requireContext())
2022-06-11 16:34:33 +05:30
2022-07-01 13:49:00 +05:30
builder.setView(binding.root)
2022-06-11 16:34:33 +05:30
builder.create()
} ?: throw IllegalStateException("Activity cannot be null")
}
2022-06-11 19:25:25 +05:30
}