From a013a759243ced4c03fce5efd9234a932a0ae8a2 Mon Sep 17 00:00:00 2001 From: Aaron Sun Date: Fri, 2 Oct 2020 20:00:52 -0700 Subject: [PATCH] Connected auth API to UI --- .../java/com/example/listify/AuthManager.java | 1 + .../java/com/example/listify/ui/CodePage.java | 75 +++++++++++++------ .../listify/ui/ForgotPasswordPage.java | 25 ++++++- .../com/example/listify/ui/LoginPage.java | 21 +++++- .../com/example/listify/ui/SignupPage.java | 45 ++++++++++- .../app/src/main/res/layout/activity_code.xml | 36 +-------- .../src/main/res/layout/activity_signup.xml | 16 ++-- 7 files changed, 149 insertions(+), 70 deletions(-) diff --git a/Listify/app/src/main/java/com/example/listify/AuthManager.java b/Listify/app/src/main/java/com/example/listify/AuthManager.java index c067fd7..4e67ed3 100644 --- a/Listify/app/src/main/java/com/example/listify/AuthManager.java +++ b/Listify/app/src/main/java/com/example/listify/AuthManager.java @@ -70,6 +70,7 @@ public class AuthManager { public void setAuthSignUpResult(AuthSignUpResult toSet) { authSignUpResult = toSet; + waiting = false; } public void setAuthSignInResult(AuthSignInResult toSet) { diff --git a/Listify/app/src/main/java/com/example/listify/ui/CodePage.java b/Listify/app/src/main/java/com/example/listify/ui/CodePage.java index 121c992..d2f9e81 100644 --- a/Listify/app/src/main/java/com/example/listify/ui/CodePage.java +++ b/Listify/app/src/main/java/com/example/listify/ui/CodePage.java @@ -1,39 +1,70 @@ package com.example.listify.ui; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; +import android.view.LayoutInflater; import android.view.View; import android.widget.Button; +import android.widget.EditText; +import com.example.listify.AuthManager; import com.example.listify.R; +import com.example.listify.MainActivity; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatDialog; +import androidx.appcompat.app.AppCompatDialogFragment; -public class CodePage extends AppCompatActivity { - private Button button1; //Reset password page button - private Button button2; //Cancel button +public class CodePage extends AppCompatDialogFragment { + private EditText ediTextCode; + + private CodeDialogListener listener; @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_code); + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + LayoutInflater inflater = getActivity().getLayoutInflater(); + View view = inflater.inflate(R.layout.activity_code, null); - button1 = (Button) findViewById(R.id.button1); - button1.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(CodePage.this, ResetPasswordPage.class); - startActivity(intent); - } - }); + builder.setView(view) + .setTitle("Verification code") + .setPositiveButton("Submit", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String code = ediTextCode.getText().toString(); + listener.sendCode("" + code + "", false); + } + }) + .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String code = ediTextCode.getText().toString(); + listener.sendCode("" + code + "", true); + } + }); - button2 = (Button) findViewById(R.id.button2); - button2.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(CodePage.this, LoginPage.class); - startActivity(intent); - } - }); + ediTextCode = view.findViewById(R.id.editTextCode); + + return builder.create(); + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + + try { + listener = (CodeDialogListener) context; + } catch (ClassCastException e) { + throw new ClassCastException("CodeDialogListener not implemented."); + } + } + + public interface CodeDialogListener { + void sendCode(String code, boolean cancel); } } \ No newline at end of file diff --git a/Listify/app/src/main/java/com/example/listify/ui/ForgotPasswordPage.java b/Listify/app/src/main/java/com/example/listify/ui/ForgotPasswordPage.java index bd2194a..24af29e 100644 --- a/Listify/app/src/main/java/com/example/listify/ui/ForgotPasswordPage.java +++ b/Listify/app/src/main/java/com/example/listify/ui/ForgotPasswordPage.java @@ -2,6 +2,7 @@ package com.example.listify.ui; import android.content.Intent; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.widget.Button; @@ -9,7 +10,7 @@ import com.example.listify.R; import androidx.appcompat.app.AppCompatActivity; -public class ForgotPasswordPage extends AppCompatActivity { +public class ForgotPasswordPage extends AppCompatActivity implements CodePage.CodeDialogListener { private Button button1; //Code page button @Override @@ -21,9 +22,27 @@ public class ForgotPasswordPage extends AppCompatActivity { button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent intent = new Intent(ForgotPasswordPage.this, CodePage.class); - startActivity(intent); + openDialog(); } }); } + + public void openDialog() { + CodePage codePage = new CodePage(); + codePage.show(getSupportFragmentManager(), "Verification code"); + } + + @Override + public void sendCode(String code, boolean cancel) { + Intent intent; + + if(cancel) { + intent = new Intent(ForgotPasswordPage.this, LoginPage.class); + } + else { + intent = new Intent(ForgotPasswordPage.this, ResetPasswordPage.class); + } + + startActivity(intent); + } } \ No newline at end of file diff --git a/Listify/app/src/main/java/com/example/listify/ui/LoginPage.java b/Listify/app/src/main/java/com/example/listify/ui/LoginPage.java index ed1e006..3be1966 100644 --- a/Listify/app/src/main/java/com/example/listify/ui/LoginPage.java +++ b/Listify/app/src/main/java/com/example/listify/ui/LoginPage.java @@ -2,10 +2,13 @@ package com.example.listify.ui; import android.content.Intent; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.widget.Button; +import android.widget.EditText; import com.example.listify.R; +import com.example.listify.AuthManager; import com.example.listify.MainActivity; import androidx.appcompat.app.AppCompatActivity; @@ -42,8 +45,22 @@ public class LoginPage extends AppCompatActivity { button3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent intent = new Intent(LoginPage.this, MainActivity.class); - startActivity(intent); + EditText emailText = (EditText) findViewById(R.id.editTextTextPersonName); + EditText passwordText = (EditText) findViewById(R.id.editTextTextPassword); + + String email = emailText.getText().toString(); + String password = passwordText.getText().toString(); + + AuthManager authManager = new AuthManager(); + + try { + authManager.signIn(email, password); + //Intent intent = new Intent(LoginPage.this, LoginPage.class); + //startActivity(intent); + } + catch(Exception ex) { + //Display "Incorrect email or password" message + } } }); } diff --git a/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java b/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java index d211d8f..cc56bc5 100644 --- a/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java +++ b/Listify/app/src/main/java/com/example/listify/ui/SignupPage.java @@ -2,18 +2,23 @@ package com.example.listify.ui; import android.content.Intent; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.widget.Button; +import android.widget.EditText; import com.example.listify.R; +import com.example.listify.AuthManager; import com.example.listify.MainActivity; import androidx.appcompat.app.AppCompatActivity; -public class SignupPage extends AppCompatActivity { +public class SignupPage extends AppCompatActivity implements CodePage.CodeDialogListener { private Button button1; //Log in page button private Button button2; //Sign up button + AuthManager authManager = new AuthManager(); + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -32,9 +37,43 @@ public class SignupPage extends AppCompatActivity { button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Intent intent = new Intent(SignupPage.this, MainActivity.class); - startActivity(intent); + EditText emailText = (EditText) findViewById(R.id.editTextTextEmailAddress); + EditText passwordText = (EditText) findViewById(R.id.editTextTextPassword); + + String email = emailText.getText().toString(); + String password = passwordText.getText().toString(); + + try { + authManager.startSignUp(email, password); + } + catch(Exception e) { + return; + } + + openDialog(); } }); } + + public void openDialog() { + CodePage codePage = new CodePage(); + codePage.show(getSupportFragmentManager(), "Verification code"); + } + + @Override + public void sendCode(String code, boolean cancel) { + if(cancel) { + //Remove user from database + } + else { + try { + authManager.confirmSignUp(code); + //Intent intent = new Intent(SignupPage.this, MainActivity.class); + //startActivity(intent); + } + catch (Exception e) { + //Remove user from database + } + } + } } \ No newline at end of file diff --git a/Listify/app/src/main/res/layout/activity_code.xml b/Listify/app/src/main/res/layout/activity_code.xml index dc50709..2c06f6a 100644 --- a/Listify/app/src/main/res/layout/activity_code.xml +++ b/Listify/app/src/main/res/layout/activity_code.xml @@ -5,44 +5,16 @@ android:layout_width="match_parent" android:layout_height="match_parent"> -