diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/LoginDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/LoginDialog.kt index 8f8a52605..861dfb52f 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/LoginDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/LoginDialog.kt @@ -12,10 +12,9 @@ import com.github.libretube.api.obj.Login import com.github.libretube.databinding.DialogLoginBinding import com.github.libretube.extensions.TAG import com.github.libretube.util.PreferenceHelper +import com.github.libretube.util.TextUtils import com.github.libretube.util.ThemeHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder -import retrofit2.HttpException -import java.io.IOException class LoginDialog : DialogFragment() { private lateinit var binding: DialogLoginBinding @@ -34,7 +33,20 @@ class LoginDialog : DialogFragment() { } } binding.register.setOnClickListener { - if (isInsertionValid()) { + if (isEmail(binding.username.text.toString())) { + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.privacy_alert) + .setMessage(R.string.username_email) + .setNegativeButton(R.string.proceed) { _, _ -> + signIn( + binding.username.text.toString(), + binding.password.text.toString(), + true + ) + } + .setPositiveButton(R.string.cancel, null) + .show() + } else if (isInsertionValid()) { signIn( binding.username.text.toString(), binding.password.text.toString(), @@ -65,15 +77,9 @@ class LoginDialog : DialogFragment() { } else { RetrofitInstance.authApi.login(login) } - } catch (e: IOException) { - 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(), e.toString()) + Toast.makeText(context, e.localizedMessage, Toast.LENGTH_SHORT).show() return@launchWhenCreated } @@ -96,4 +102,8 @@ class LoginDialog : DialogFragment() { activity?.recreate() } } + + private fun isEmail(text: String): Boolean { + return TextUtils.EMAIL_REGEX.toRegex().matches(text) + } } diff --git a/app/src/main/java/com/github/libretube/util/TextUtils.kt b/app/src/main/java/com/github/libretube/util/TextUtils.kt index 8b8cc4008..cc9014cac 100644 --- a/app/src/main/java/com/github/libretube/util/TextUtils.kt +++ b/app/src/main/java/com/github/libretube/util/TextUtils.kt @@ -6,6 +6,11 @@ object TextUtils { */ const val SEPARATOR = " • " + /** + * Regex to check for e-mails + */ + const val EMAIL_REGEX = "^[A-Za-z](.*)([@]{1})(.{1,})(\\.)(.{1,})" + fun toTwoDecimalsString(num: Int): String { return if (num >= 10) num.toString() else "0$num" } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bab5c6600..57c9f7f85 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -408,6 +408,9 @@ App Backup Import & export subscriptions, playlists, … Successfully exported! + Privacy alert + You inserted an e-mail address as username which is not recommended. Are you sure you want to proceed? + Proceed Download Service