From 5d2f04017959219c9431528ca8a508ad63cd14b4 Mon Sep 17 00:00:00 2001 From: Matan Bar Yosef Date: Sun, 3 Jul 2016 23:25:58 +0300 Subject: [PATCH] - add register activity and redirect to login after registration is successfully done --- .idea/libraries/android_android_23.xml | 9 - .../animated_vector_drawable_23_3_0.xml | 3 +- .idea/libraries/appcompat_v7_23_3_0.xml | 3 +- .idea/libraries/design_23_3_0.xml | 3 +- .idea/libraries/recyclerview_v7_23_3_0.xml | 1 + .../libraries/support_annotations_23_3_0.xml | 3 +- .idea/libraries/support_v4_23_3_0.xml | 1 + .../support_vector_drawable_23_3_0.xml | 1 + .idea/libraries/volley_1_0_0.xml | 2 +- app/src/main/AndroidManifest.xml | 8 +- .../sagi/thesocialnotework/LoginActivity.java | 6 +- .../thesocialnotework/RegisterActivity.java | 172 ++++++++++++++++++ app/src/main/res/layout/activity_login.xml | 2 +- app/src/main/res/layout/activity_register.xml | 77 ++++++++ app/src/main/res/values/strings.xml | 7 +- 15 files changed, 273 insertions(+), 25 deletions(-) delete mode 100644 .idea/libraries/android_android_23.xml create mode 100644 app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/RegisterActivity.java create mode 100644 app/src/main/res/layout/activity_register.xml diff --git a/.idea/libraries/android_android_23.xml b/.idea/libraries/android_android_23.xml deleted file mode 100644 index a279d4a..0000000 --- a/.idea/libraries/android_android_23.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/animated_vector_drawable_23_3_0.xml b/.idea/libraries/animated_vector_drawable_23_3_0.xml index 1272933..c887d48 100644 --- a/.idea/libraries/animated_vector_drawable_23_3_0.xml +++ b/.idea/libraries/animated_vector_drawable_23_3_0.xml @@ -1,11 +1,12 @@ - + + diff --git a/.idea/libraries/appcompat_v7_23_3_0.xml b/.idea/libraries/appcompat_v7_23_3_0.xml index da3b5a3..39b4f84 100644 --- a/.idea/libraries/appcompat_v7_23_3_0.xml +++ b/.idea/libraries/appcompat_v7_23_3_0.xml @@ -4,11 +4,12 @@ - + + diff --git a/.idea/libraries/design_23_3_0.xml b/.idea/libraries/design_23_3_0.xml index ffd6ab6..6172f7d 100644 --- a/.idea/libraries/design_23_3_0.xml +++ b/.idea/libraries/design_23_3_0.xml @@ -4,11 +4,12 @@ - + + diff --git a/.idea/libraries/recyclerview_v7_23_3_0.xml b/.idea/libraries/recyclerview_v7_23_3_0.xml index e2d2128..7b42040 100644 --- a/.idea/libraries/recyclerview_v7_23_3_0.xml +++ b/.idea/libraries/recyclerview_v7_23_3_0.xml @@ -9,6 +9,7 @@ + diff --git a/.idea/libraries/support_annotations_23_3_0.xml b/.idea/libraries/support_annotations_23_3_0.xml index a2f182e..f9004af 100644 --- a/.idea/libraries/support_annotations_23_3_0.xml +++ b/.idea/libraries/support_annotations_23_3_0.xml @@ -1,10 +1,11 @@ - + + diff --git a/.idea/libraries/support_v4_23_3_0.xml b/.idea/libraries/support_v4_23_3_0.xml index e75eec2..68eb591 100644 --- a/.idea/libraries/support_v4_23_3_0.xml +++ b/.idea/libraries/support_v4_23_3_0.xml @@ -10,6 +10,7 @@ + diff --git a/.idea/libraries/support_vector_drawable_23_3_0.xml b/.idea/libraries/support_vector_drawable_23_3_0.xml index a47f58e..55e107d 100644 --- a/.idea/libraries/support_vector_drawable_23_3_0.xml +++ b/.idea/libraries/support_vector_drawable_23_3_0.xml @@ -6,6 +6,7 @@ + diff --git a/.idea/libraries/volley_1_0_0.xml b/.idea/libraries/volley_1_0_0.xml index 81a83dd..8e317b7 100644 --- a/.idea/libraries/volley_1_0_0.xml +++ b/.idea/libraries/volley_1_0_0.xml @@ -1,8 +1,8 @@ - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 914731c..e678e27 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,11 +2,10 @@ - - - + + @@ -28,8 +27,9 @@ - + + \ No newline at end of file diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/LoginActivity.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/LoginActivity.java index c2da56a..2056df6 100644 --- a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/LoginActivity.java +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/LoginActivity.java @@ -82,7 +82,6 @@ public class LoginActivity extends AppCompatActivity{ // implements LoaderCallba private final String BASE_URL = "http://thesocialnotework-api.appspot.com/api"; private final String LOGIN_PATH = "/login"; - private final String REG_PATH = "/register"; private LoginActivity self; protected LinearLayout layout; @@ -117,8 +116,9 @@ public class LoginActivity extends AppCompatActivity{ // implements LoaderCallba mRegisterButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { - Log.d(TAG, "Register....... this section under construction"); - //attemptRegister(); // TODO : implement + Log.d(TAG, "going to Register...page"); + Intent registerActivity = new Intent(LoginActivity.this, RegisterActivity.class); + startActivity(registerActivity); } }); diff --git a/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/RegisterActivity.java b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/RegisterActivity.java new file mode 100644 index 0000000..337cd92 --- /dev/null +++ b/app/src/main/java/com/android_app/matan/ara/sagi/thesocialnotework/RegisterActivity.java @@ -0,0 +1,172 @@ +package com.android_app.matan.ara.sagi.thesocialnotework; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; +import android.widget.Toast; + +import com.android.volley.Response; +import com.android.volley.VolleyError; + +import org.json.JSONObject; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class RegisterActivity extends AppCompatActivity { + + private EditText mUsernameView; + private EditText mPasswordView; + private EditText mEmailView; + private Button registerButton; + private Button testBtn; + private RegisterActivity self; + + protected RelativeLayout layout; + private final String TAG = "Register Activity"; + + private final String BASE_URL = "http://thesocialnotework-api.appspot.com/api"; + private final String REG_PATH = "/register"; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_register); + + mUsernameView = (EditText) findViewById(R.id.ra_username); + mPasswordView = (EditText) findViewById(R.id.ra_password); + mEmailView = (EditText) findViewById(R.id.ra_email); + + this.self = this; + this.layout = (RelativeLayout) findViewById(R.id.ra_layout); + + // Remove Auto Focus from the Text Fields + layout.setFocusable(true); + layout.setFocusableInTouchMode(true); + + Log.d(TAG, "oncreate..."); + testBtn = (Button) findViewById(R.id.test_button); + testBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Log.d(TAG, "NOW??......."); + + } + }); + + registerButton = (Button) findViewById(R.id.ra_register_button); + registerButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Log.d(TAG, "here......."); + attemptRegister(); + } + }); + + } + + private boolean isUsernameValid(String username) { + return username.length() > 0; + } + private boolean isPasswordValid(String password) { + return password.length() > 3; + } + private boolean isEmailValid(String email) { + boolean isValid = false; + + String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$"; + CharSequence inputStr = email; + + Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); + Matcher matcher = pattern.matcher(inputStr); + if (matcher.matches()) { + isValid = true; + } + Log.d(TAG, "isValid: " + isValid); + return isValid; + } + + private boolean isParamsValid(String username, String password, String email) { + Log.d(TAG, "user: " + username); + Log.d(TAG, "pwd: " + password); + Log.d(TAG, "email: " + email); + + if(TextUtils.isEmpty(username) || !isUsernameValid(username) || TextUtils.isEmpty(password) || !isPasswordValid(password)) { + return false; + } else if(TextUtils.isEmpty(email) || !isEmailValid(email)) { + return false; + } else { + return true; + } + } + + private void attemptRegister() { +// showProgress(true); + Log.d(TAG, "in attemptRegister: Registering.."); + if (isParamsValid(mUsernameView.getText().toString(), mPasswordView.getText().toString(), mEmailView.getText().toString())) { + + Log.d(TAG, "params are valid"); + + String username = mUsernameView.getText().toString(); + String password = mPasswordView.getText().toString(); + String email = mEmailView.getText().toString(); + + boolean cancel = false; + View focusView = null; + + // http request register + JSONObject tempJson = new JSONObject(); + try { + tempJson.put("username", username); + tempJson.put("password", password); + tempJson.put("email", email); + } catch (Exception e) { + Log.d(TAG, e.toString()); + } + + VolleyUtilSingleton.getInstance(RegisterActivity.this).post(BASE_URL + REG_PATH, tempJson, onRegisterSuccess, onRegisterError); + } else { +// showProgress(false); + Log.d(TAG, "Invalid params - make sure username exist, password is 4 characters or more & email is valid"); + } + } + + Response.Listener onRegisterSuccess = new Response.Listener() { + @Override + public void onResponse(JSONObject response) { + try { + if(!response.isNull("user")) { + Log.e(TAG, "onLoginSuccess => user exist"); // TODO: REMOVE console + Intent loginActivity = new Intent(RegisterActivity.this, LoginActivity.class); +// Bundle loginUserBundle = new Bundle(); +// loginUserBundle.putString("user_id", response.getJSONObject("user").getString("id")); +// personalSpaceActivity.putExtras(loginUserBundle); + startActivity(loginActivity); + } else { +// showProgress(false); + Log.d(TAG, "Cannot create user, " + response.get("user")); + } + }catch (Exception e) { + Log.e(TAG, "onRegisterSuccess:" + e.getMessage()); + } + } + }; + + Response.ErrorListener onRegisterError = new Response.ErrorListener() { + @Override + public void onErrorResponse(VolleyError error) { +// showProgress(false); + Toast.makeText(self , "Username, Password or Email are Incorrect", Toast.LENGTH_LONG).show(); + Log.d(TAG, "onRegisterError: msg: " + error.getMessage()); + } + }; +} diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 61f42f2..fdfe2f8 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -73,7 +73,7 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="24dp" - android:text="No account yet? Create one for FREE" + android:text="@string/create_new_account" android:gravity="center" android:textSize="16dip"/> diff --git a/app/src/main/res/layout/activity_register.xml b/app/src/main/res/layout/activity_register.xml new file mode 100644 index 0000000..df8e6ae --- /dev/null +++ b/app/src/main/res/layout/activity_register.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + +