Search in sources :

Example 6 with Task

use of com.google.android.gms.tasks.Task in project MadMax by deviz92.

the class SignUpFragment method sendVerificationEmail.

private void sendVerificationEmail() {
    Log.i(TAG, "sendVerificationEmail");
    final FirebaseUser user = auth.getCurrentUser();
    if (user == null) {
        Log.e(TAG, "Error while retriving current user from db");
        Toast.makeText(getContext(), getString(R.string.error_user_db), Toast.LENGTH_LONG).show();
        return;
    }
    SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this.getContext());
    String defaultCurrency = sharedPref.getString(SettingsFragment.DEFAULT_CURRENCY, "");
    String UID = user.getUid();
    final User u = new User(UID, usernameView.getText().toString(), nameView.getText().toString(), surnameView.getText().toString(), emailView.getText().toString(), passwordView.getText().toString(), "", defaultCurrency);
    progressDialog.setMessage("Sending email verification, please wait...");
    progressDialog.show();
    // inserimento dell'utente a db (tranne la foto)
    HashMap<String, String> newUserEntry = new HashMap<>();
    newUserEntry.put("email", u.getEmail());
    newUserEntry.put("password", u.getPassword());
    newUserEntry.put("name", u.getName());
    newUserEntry.put("surname", u.getSurname());
    newUserEntry.put("username", u.getUsername());
    databaseReference.child("users").child(u.getID()).setValue(newUserEntry);
    Log.i(TAG, "new user sent into db");
    // for saving image
    if (imageSetted) {
        StorageReference uProfileImageFilenameRef = storageReference.child("users").child(UID).child(UID + "_profileImage.jpg");
        // Get the data from an ImageView as bytes
        profileImageView.setDrawingCacheEnabled(true);
        profileImageView.buildDrawingCache();
        Bitmap bitmap = profileImageView.getDrawingCache();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] data = baos.toByteArray();
        UploadTask uploadTask = uProfileImageFilenameRef.putBytes(data);
        uploadTask.addOnFailureListener(new OnFailureListener() {

            @Override
            public void onFailure(@NonNull Exception exception) {
                // todo Handle unsuccessful uploads
                Log.e(TAG, "image upload failed");
            }
        }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {

            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                // taskSnapshot.getMetadata() contains file metadata such as size, content-type, and download URL.
                // inserimento della foto a db
                u.setProfileImage(taskSnapshot.getMetadata().getDownloadUrl().toString());
                databaseReference.child("users").child(u.getID()).child("image").setValue(u.getProfileImage());
                user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {

                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        progressDialog.dismiss();
                        if (task.isSuccessful()) {
                            Log.i(TAG, "verification email successfully sent");
                            Toast.makeText(getContext(), R.string.emailVerification_text, Toast.LENGTH_LONG).show();
                        } else {
                            databaseReference.child("users").child(u.getID()).removeValue();
                            user.delete();
                            Log.d(TAG, "user deleted from db");
                            Log.e(TAG, "verification email not sent, exception: " + task.getException());
                        }
                        onClickSignUpInterface.itemClicked(SignUpFragment.class.getSimpleName(), "1");
                    }
                });
            }
        });
    } else {
        user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {

            @Override
            public void onComplete(@NonNull Task<Void> task) {
                progressDialog.dismiss();
                if (task.isSuccessful()) {
                    Log.i(TAG, "verification email successful sent");
                    Toast.makeText(getContext(), R.string.emailVerification_text, Toast.LENGTH_LONG).show();
                } else {
                    databaseReference.child("users").child(u.getID()).removeValue();
                    user.delete();
                    Log.d(TAG, "user deleted from db");
                    Log.e(TAG, "verification email not sent, exception: " + task.getException());
                }
                onClickSignUpInterface.itemClicked(SignUpFragment.class.getSimpleName(), "1");
            }
        });
    }
}
Also used : Task(com.google.android.gms.tasks.Task) UploadTask(com.google.firebase.storage.UploadTask) User(com.polito.mad17.madmax.entities.User) FirebaseUser(com.google.firebase.auth.FirebaseUser) StorageReference(com.google.firebase.storage.StorageReference) SharedPreferences(android.content.SharedPreferences) HashMap(java.util.HashMap) FirebaseUser(com.google.firebase.auth.FirebaseUser) ByteArrayOutputStream(java.io.ByteArrayOutputStream) FirebaseAuthWeakPasswordException(com.google.firebase.auth.FirebaseAuthWeakPasswordException) FirebaseAuthUserCollisionException(com.google.firebase.auth.FirebaseAuthUserCollisionException) IOException(java.io.IOException) Bitmap(android.graphics.Bitmap) UploadTask(com.google.firebase.storage.UploadTask) OnCompleteListener(com.google.android.gms.tasks.OnCompleteListener) NonNull(android.support.annotation.NonNull) OnFailureListener(com.google.android.gms.tasks.OnFailureListener)

Aggregations

Task (com.google.android.gms.tasks.Task)6 FirebaseUser (com.google.firebase.auth.FirebaseUser)4 IdpResponse (com.firebase.ui.auth.IdpResponse)3 AutoCompleteTask (com.firebase.ui.auth.testhelpers.AutoCompleteTask)3 ActivityHelper (com.firebase.ui.auth.ui.ActivityHelper)3 AppCompatBase (com.firebase.ui.auth.ui.AppCompatBase)3 FirebaseAuthUserCollisionException (com.google.firebase.auth.FirebaseAuthUserCollisionException)3 Intent (android.content.Intent)2 NonNull (android.support.annotation.NonNull)2 FakeProviderQueryResult (com.firebase.ui.auth.testhelpers.FakeProviderQueryResult)2 FlowParameters (com.firebase.ui.auth.ui.FlowParameters)2 OnFailureListener (com.google.android.gms.tasks.OnFailureListener)2 FirebaseAuth (com.google.firebase.auth.FirebaseAuth)2 ProviderQueryResult (com.google.firebase.auth.ProviderQueryResult)2 ArrayList (java.util.ArrayList)2 Test (org.junit.Test)2 Activity (android.app.Activity)1 Context (android.content.Context)1 SharedPreferences (android.content.SharedPreferences)1 Bitmap (android.graphics.Bitmap)1