Guest User

Untitled

a guest
Nov 12th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.85 KB | None | 0 0
  1. package io.clone.dereva;
  2.  
  3. import android.content.Context;
  4. import android.content.DialogInterface;
  5. import android.content.Intent;
  6. import android.support.annotation.NonNull;
  7. import android.support.design.widget.Snackbar;
  8. import android.support.v7.app.AlertDialog;
  9. import android.support.v7.app.AppCompatActivity;
  10. import android.os.Bundle;
  11. import android.util.Log;
  12. import android.view.LayoutInflater;
  13. import android.view.View;
  14. import android.widget.Button;
  15. import android.widget.RelativeLayout;
  16.  
  17. import com.google.android.gms.tasks.OnFailureListener;
  18. import com.google.android.gms.tasks.OnSuccessListener;
  19. import com.google.firebase.auth.AuthResult;
  20. import com.google.firebase.auth.FirebaseAuth;
  21. import com.google.firebase.database.DatabaseReference;
  22. import com.google.firebase.database.FirebaseDatabase;
  23. import com.rengwuxian.materialedittext.MaterialEditText;
  24.  
  25. import dmax.dialog.SpotsDialog;
  26. import io.clone.dereva.models.User;
  27. import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
  28. import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
  29.  
  30. public class MainActivity extends AppCompatActivity {
  31. private static final String TAG = "LOGIN_ACTIVITY";
  32. RelativeLayout mRootLayout;
  33. Button btnSignIn, btnRegister;
  34. FirebaseAuth mFirebaseAuth;
  35. FirebaseDatabase mFirebaseDatabase;
  36. DatabaseReference mUsersRef;
  37. SpotsDialog progress_dialog;
  38. @Override
  39. protected void attachBaseContext(Context newBase) {
  40. super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
  41. }
  42.  
  43. @Override
  44. protected void onCreate(Bundle savedInstanceState) {
  45. super.onCreate(savedInstanceState);
  46. CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
  47. .setDefaultFontPath("fonts/Arkhip_font.ttf")
  48. .setFontAttrId(R.attr.fontPath).build());
  49. setContentView(R.layout.activity_main);
  50. mFirebaseAuth = FirebaseAuth.getInstance();
  51. mFirebaseDatabase = FirebaseDatabase.getInstance();
  52. mUsersRef = mFirebaseDatabase.getReference("Users");
  53.  
  54.  
  55. mRootLayout = (RelativeLayout) findViewById(R.id.rootLayout);
  56. btnSignIn = (Button) findViewById(R.id.sign_in_btn);
  57. btnRegister = (Button) findViewById(R.id.register_btn);
  58. progress_dialog = new SpotsDialog(this);
  59.  
  60. btnSignIn.setOnClickListener(new View.OnClickListener() {
  61. @Override
  62. public void onClick(View v) {
  63. showLoginDialog();
  64. }
  65. });
  66.  
  67. btnRegister.setOnClickListener(new View.OnClickListener() {
  68. @Override
  69. public void onClick(View v) {
  70. showRegisterDialog();
  71. }
  72. });
  73. }
  74.  
  75. private void showLoginDialog() {
  76. AlertDialog.Builder dialog = new AlertDialog.Builder(this);
  77. dialog.setTitle("Driver Login");
  78. dialog.setMessage("Please use your official email address");
  79. LayoutInflater layoutInflater = LayoutInflater.from(this);
  80. View login_layout = layoutInflater.inflate(R.layout.layout_login, null);
  81.  
  82. final MaterialEditText inputEmail = (MaterialEditText) login_layout.findViewById(R.id.inputEmail);
  83. final MaterialEditText inputPassword = (MaterialEditText) login_layout.findViewById(R.id.inputPassword);
  84. dialog.setView(login_layout);
  85.  
  86. dialog.setPositiveButton("SIGN IN", new DialogInterface.OnClickListener() {
  87. @Override
  88. public void onClick(DialogInterface dialog, int which) {
  89. validate(inputEmail);
  90. validate(inputPassword);
  91. final String email = inputEmail.getText().toString().trim();
  92. final String password = inputPassword.getText().toString().trim();
  93. progress_dialog.show();
  94. mFirebaseAuth.signInWithEmailAndPassword(email, password)
  95. .addOnSuccessListener(new OnSuccessListener<AuthResult>() {
  96. @Override
  97. public void onSuccess(AuthResult authResult) {
  98. Snackbar.make(mRootLayout, "Successfully logged in", Snackbar.LENGTH_LONG).show();
  99. Log.d(TAG, "onSuccess: Logged in successfully");
  100. progress_dialog.dismiss();
  101. startActivity(new Intent(MainActivity.this,HomeActivity.class));
  102. finish();
  103. }
  104. }).addOnFailureListener(new OnFailureListener() {
  105. @Override
  106. public void onFailure(@NonNull Exception e) {
  107. Log.d(TAG, "onSuccess: Logged in successfully "+e.getMessage());
  108. progress_dialog.dismiss();
  109. Snackbar.make(mRootLayout, "Wrong username or password", Snackbar.LENGTH_LONG).show();
  110. }
  111. });
  112. }
  113. });
  114.  
  115. dialog.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
  116. @Override
  117. public void onClick(DialogInterface dialog, int which) {
  118. dialog.dismiss();
  119. }
  120. });
  121. dialog.show();
  122. }
  123.  
  124. private void showRegisterDialog() {
  125. AlertDialog.Builder dialog = new AlertDialog.Builder(this);
  126. dialog.setTitle("Driver Registration");
  127. dialog.setMessage("Please use your official email address");
  128. LayoutInflater layoutInflater = LayoutInflater.from(this);
  129. View register_layout = layoutInflater.inflate(R.layout.layout_register, null);
  130.  
  131. final MaterialEditText inputEmail = (MaterialEditText) register_layout.findViewById(R.id.inputEmail);
  132. final MaterialEditText inputPassword = (MaterialEditText) register_layout.findViewById(R.id.inputPassword);
  133. final MaterialEditText inputPhone = (MaterialEditText) register_layout.findViewById(R.id.inputPhone);
  134. final MaterialEditText inputNames = (MaterialEditText) register_layout.findViewById(R.id.inputNames);
  135.  
  136. dialog.setView(register_layout);
  137.  
  138. dialog.setPositiveButton("REGISTER", new DialogInterface.OnClickListener() {
  139. @Override
  140. public void onClick(DialogInterface dialog, int which) {
  141. validate(inputEmail);
  142. validate(inputPassword);
  143. validate(inputNames);
  144. validate(inputPhone);
  145. validatePassword(inputPassword.getText().toString().trim());
  146. validatePhone(inputPhone.getText().toString().trim());
  147. final String email = inputEmail.getText().toString().trim();
  148. final String password = inputPassword.getText().toString().trim();
  149. final String names = inputNames.getText().toString().trim();
  150. final String phone = inputPhone.getText().toString().trim();
  151. progress_dialog.show();
  152. mFirebaseAuth.createUserWithEmailAndPassword(email, password)
  153. .addOnSuccessListener(new OnSuccessListener<AuthResult>() {
  154. @Override
  155. public void onSuccess(AuthResult authResult) {
  156. Log.d(TAG, "onSuccess: Successfully Registered User in Firebase");
  157. User user = new User(names, email, password, phone);
  158. String user_id = mFirebaseAuth.getCurrentUser().getUid();
  159. mUsersRef.child(user_id).setValue(user).addOnSuccessListener(new OnSuccessListener<Void>() {
  160. @Override
  161. public void onSuccess(Void aVoid) {
  162. Snackbar.make(mRootLayout, "Registration successful", Snackbar.LENGTH_LONG).show();
  163. progress_dialog.dismiss();
  164. Log.d(TAG, "onSuccess: Added user to firebase database");
  165. }
  166. }).addOnFailureListener(new OnFailureListener() {
  167. @Override
  168. public void onFailure(@NonNull Exception e) {
  169. progress_dialog.dismiss();
  170. Log.d(TAG, "onSuccess: Could not add user to firebase database "+e.getMessage());
  171. Snackbar.make(mRootLayout, "Failed to register" + e.getMessage(), Snackbar.LENGTH_LONG).show();
  172. }
  173. });
  174.  
  175. }
  176. }).addOnFailureListener(new OnFailureListener() {
  177. @Override
  178. public void onFailure(@NonNull Exception e) {
  179. Log.d(TAG, "onSuccess: Could not register the user to firebase database "+e.getMessage());
  180. Snackbar.make(mRootLayout, "Failed to sign up. Please try again", Snackbar.LENGTH_LONG).show();
  181. progress_dialog.dismiss();
  182.  
  183. }
  184. });
  185. }
  186. });
  187.  
  188. dialog.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
  189. @Override
  190. public void onClick(DialogInterface dialog, int which) {
  191. dialog.dismiss();
  192. }
  193. });
  194.  
  195. dialog.show();
  196. }
  197.  
  198. private void validate(MaterialEditText input) {
  199. if (input.getText().toString().isEmpty()) {
  200. Snackbar.make(mRootLayout, "Fill in all the fields", Snackbar.LENGTH_LONG).show();
  201. return;
  202. }
  203. }
  204.  
  205. private void validatePhone(String phoneNumber) {
  206. if (phoneNumber.trim().length() < 8) {
  207. Snackbar.make(mRootLayout, "Invalid Phone Number", Snackbar.LENGTH_LONG).show();
  208. return;
  209. }
  210.  
  211. }
  212.  
  213. private void validatePassword(String password) {
  214. if (password.trim().length() < 6) {
  215. Snackbar.make(mRootLayout, "Your password is too short", Snackbar.LENGTH_LONG).show();
  216. return;
  217. }
  218. }
  219. }
Add Comment
Please, Sign In to add comment