Skip to content

Commit

Permalink
Merge pull request #52 from Propo41/hotfix/signup_app_crash
Browse files Browse the repository at this point in the history
fixed app crashing if invalid email entered
  • Loading branch information
ali-ahnaf authored Nov 24, 2021
2 parents a926cd6 + d8039c9 commit 33825cf
Show file tree
Hide file tree
Showing 9 changed files with 120 additions and 77 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ android {
applicationId "com.pixieium.austtravels"
minSdk 23
targetSdk 31
versionCode 4
versionName "0.4-beta"
versionCode 5
versionName "0.5-beta"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down
4 changes: 2 additions & 2 deletions app/release/output-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "0.1-beta",
"versionCode": 4,
"versionName": "0.4-beta",
"outputFile": "app-release.apk"
}
],
Expand Down
84 changes: 15 additions & 69 deletions app/src/main/java/com/pixieium/austtravels/auth/SignUpActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package com.pixieium.austtravels.auth

import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import android.view.View
import android.widget.ArrayAdapter
import android.widget.Toast
Expand Down Expand Up @@ -42,36 +40,30 @@ class SignUpActivity : AppCompatActivity() {
}

private fun createNewUser() {
val email = mBinding.eduMail.editText!!.text.toString()
val password = mBinding.password.editText!!.text.toString()
val userName = mBinding.name.editText!!.text.toString()
val semester = mBinding.semester.editText!!.text.toString()
val department = mBinding.semester.editText!!.text.toString()
val universityId = mBinding.universityId.editText!!.text.toString()

if (!isInputValid()) {
val email = mBinding.eduMail.editText?.text.toString()
val password = mBinding.password.editText?.text.toString()
val userName = mBinding.name.editText?.text.toString()
val semester = mBinding.semester.editText?.text.toString()
val department = mBinding.semester.editText?.text.toString()
val universityId = mBinding.universityId.editText?.text.toString()

val userImage = "https://avatars.dicebear.com/api/bottts/${userName}.svg"
val userInfo =
UserInfo(email, password, userName, semester, department, universityId, userImage)

if (!userInfo.validateInput(mBinding)) {
Toast.makeText(this, "Please enter your information correctly", Toast.LENGTH_SHORT)
.show()
} else {
mAuth.createUserWithEmailAndPassword(email, password)
/*mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(
this
) { task ->
if (task.isSuccessful) {
val user = mAuth.currentUser
// uses the dicebears http api to get an image
// refer to https://avatars.dicebear.com/docs/http-api
val userImage = "https://avatars.dicebear.com/api/bottts/${userName}.svg"
if (user != null) {
val userInfo =
UserInfo(
email,
userName,
semester,
department,
universityId,
userImage
)
lifecycleScope.launch {
if (mDatabase.createNewUser(userInfo, user.uid, user)) {
val intent =
Expand All @@ -89,63 +81,17 @@ class SignUpActivity : AppCompatActivity() {
}
} else {
// If sign in fails, display a message to the user.
// Log.d("signUp", task.exception.toString())
// Log.d("signUp", task.exception.toString())
//task.exception?.printStackTrace()
Toast.makeText(
applicationContext, "Authentication failed.",
Toast.LENGTH_SHORT
).show()
}
}
}
}

private fun isInputValid(): Boolean {
val email = mBinding.eduMail.editText!!.text.toString()
val password = mBinding.password.editText!!.text.toString()
val userName = mBinding.name.editText!!.text.toString()
val semester = mBinding.semester.editText!!.text.toString()
val department = mBinding.semester.editText!!.text.toString()
val universityId = mBinding.universityId.editText!!.text.toString()

if (email.split('@')[1] != "aust.edu") {
//println(email.split('@')[1])
mBinding.eduMail.error = "You must enter your institutional mail"
return false
}

if (TextUtils.isEmpty(email)) {
mBinding.eduMail.error = "Field is required"
return false
}*/
}

if (TextUtils.isEmpty(universityId)) {
mBinding.universityId.error = "Field is required"
return false
}

if (TextUtils.isEmpty(password)) {
mBinding.password.error = "Field is required"
return false
}
if (TextUtils.isEmpty(userName)) {
mBinding.name.error = "Field is required"
return false
}
if (userName.length > 20) {
mBinding.name.error = "Please enter a name of 20 characters"
return false;
}
if (TextUtils.isEmpty(semester)) {
mBinding.semester.error = "Field is required"
return false
}
if (TextUtils.isEmpty(department)) {
mBinding.department.error = "Field is required"
return false
}

return true
}

private fun initSpinnerSemester(items: ArrayList<String>) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import com.google.firebase.ktx.Firebase
import com.pixieium.austtravels.R
import com.pixieium.austtravels.auth.SignInActivity
import com.pixieium.austtravels.databinding.ActivityHomeBinding
import com.pixieium.austtravels.directions.DirectionsActivity
import com.pixieium.austtravels.livetrack.LiveTrackActivity
import com.pixieium.austtravels.models.UserInfo
import com.pixieium.austtravels.routes.RoutesActivity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ import com.pixieium.austtravels.R
import com.pixieium.austtravels.auth.SignInActivity
import com.pixieium.austtravels.databinding.ActivityLiveTrackBinding
import com.pixieium.austtravels.home.ProminentDisclosureDialog
import com.pixieium.austtravels.home.SelectBusDialog
import com.pixieium.austtravels.models.Route
import kotlinx.coroutines.launch
import java.util.*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.pixieium.austtravels.models;

public class ErrorPayload {
private String message;
private int statusCode;

public ErrorPayload(String message, int statusCode) {
this.message = message;
this.statusCode = statusCode;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public int getStatusCode() {
return statusCode;
}

public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,4 @@ public String getLongitude() {
public void setLongitude(String longitude) {
this.longitude = longitude;
}
}
}
73 changes: 72 additions & 1 deletion app/src/main/java/com/pixieium/austtravels/models/UserInfo.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
package com.pixieium.austtravels.models;

import android.text.TextUtils;
import android.util.Patterns;

import com.google.firebase.database.Exclude;
import com.pixieium.austtravels.databinding.ActivitySignupBinding;

public class UserInfo {
private String email;
private String name;
private String semester;
private String department;
private String universityId;
private String userImage;
@Exclude
private String password;

public UserInfo() {
}
Expand All @@ -20,6 +28,16 @@ public UserInfo(String email, String name, String semester, String department, S
this.userImage = userImage;
}

public UserInfo(String email, String password, String name, String semester, String department, String universityId, String userImage) {
this.email = email;
this.name = name;
this.semester = semester;
this.department = department;
this.universityId = universityId;
this.userImage = userImage;
this.password = password;
}

public UserInfo(String email, String userImage) {
this.email = email;
this.userImage = userImage;
Expand Down Expand Up @@ -73,4 +91,57 @@ public String getUniversityId() {
public void setUniversityId(String universityId) {
this.universityId = universityId;
}
}


private Boolean isValidEmail(CharSequence target) {
return !TextUtils.isEmpty(target) && Patterns.EMAIL_ADDRESS.matcher(target).matches();
}

public Boolean validateInput(ActivitySignupBinding binding) {
boolean isValid = true;
if (!isValidEmail(this.email)) {
binding.eduMail.setError("Please enter a valid email");
isValid = false;
} else {
if (!email.split("@")[1].equals("aust.edu")) {
//println(email.split('@')[1])
binding.eduMail.setError("You must enter your institutional mail");
isValid = false;
}
}

if (TextUtils.isEmpty(email)) {
binding.eduMail.setError("Field is required");
isValid = false;
}

if (TextUtils.isEmpty(universityId)) {
binding.universityId.setError("Field is required");
isValid = false;
}

if (TextUtils.isEmpty(password)) {
binding.password.setError("Field is required");
isValid = false;
}
if (TextUtils.isEmpty(name)) {
binding.name.setError("Field is required");
isValid = false;
}
if (name.length() > 20) {
binding.name.setError("Please enter a name of 20 characters");
isValid = false;
}
if (TextUtils.isEmpty(semester)) {
binding.semester.setError("Field is required");
isValid = false;
}
if (TextUtils.isEmpty(department)) {
binding.department.setError("Field is required");
isValid = false;
}

return isValid;
}

}
1 change: 1 addition & 0 deletions app/src/main/res/layout/dialog_prominent_disclosure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:textSize="18sp"
android:text="@string/use_your_location"
android:textAlignment="center"
android:textColor="@color/white"
Expand Down

0 comments on commit 33825cf

Please sign in to comment.