diff --git a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/MainActivity.java b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/MainActivity.java index 053408f..47d9e7e 100644 --- a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/MainActivity.java +++ b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/MainActivity.java @@ -71,6 +71,8 @@ public class MainActivity extends AppCompatActivity implements CameraFragment.On goToLogin(); } + Log.d(TAG, "onCreate: " + mAuth.getCurrentUser().getPhotoUrl() ); + TimelineFragment fragment = new TimelineFragment(); FragmentTransaction transaction = getFragmentManager().beginTransaction(); @@ -98,5 +100,6 @@ public class MainActivity extends AppCompatActivity implements CameraFragment.On protected void goToLogin() { Intent goToLogIn = new Intent(this, LoginActivity.class); startActivity(goToLogIn); + this.finish(); } } diff --git a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/ProfileFragment.java b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/ProfileFragment.java index ff753af..906b679 100644 --- a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/ProfileFragment.java +++ b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/ProfileFragment.java @@ -1,10 +1,13 @@ package nl.myhyvesbookplus.tagram; +import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.app.Fragment; +import android.provider.MediaStore; import android.support.annotation.NonNull; import android.util.Log; import android.view.LayoutInflater; @@ -22,11 +25,13 @@ import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; +import com.google.firebase.auth.UserProfileChangeRequest; import com.google.firebase.storage.FirebaseStorage; import com.google.firebase.storage.StorageReference; -import org.w3c.dom.Text; +import java.net.URI; +import static android.app.Activity.RESULT_OK; import static android.content.ContentValues.TAG; /** @@ -42,6 +47,8 @@ public class ProfileFragment extends Fragment implements View.OnClickListener { // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; + static final int REQUEST_IMAGE_CAPTURE = 1; + private static Uri downloadUrl; // TODO: Rename and change types of parameters private String mParam1; @@ -124,7 +131,6 @@ public class ProfileFragment extends Fragment implements View.OnClickListener { Glide.with(this).using(new FirebaseImageLoader()).load(httpsReference).into(profilePicture); } - // TODO Remove check for getDisplayName if all users are required to enter a displayName anyways. if (user != null && user.getDisplayName() != null) { profileName.setText(user.getDisplayName()); } @@ -161,9 +167,55 @@ public class ProfileFragment extends Fragment implements View.OnClickListener { * Performs profile picture change action. */ public void profilePicOnClick() { - Log.d(TAG, "profilePicOnClick: JE KAN NOG GEEN FOTO UPLOADEN"); +// Log.d(TAG, "profilePicOnClick: JE KAN NOG GEEN FOTO UPLOADEN"); + dispatchTakePictureIntent(); } + /** + * Starts new intent for access to the built-in camera of device. + */ + private void dispatchTakePictureIntent() { + Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) { + startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); + } + } + + /** + * Grabs the image just taken by the built-in camera and pushes this image to the user account. + * @param requestCode + * @param resultCode + * @param data + */ + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { + Bundle extras = data.getExtras(); + Bitmap imageBitmap = (Bitmap) extras.get("data"); + UploadClass uploadClass = new UploadClass(); + uploadClass.uploadPicture(imageBitmap); + downloadUrl = uploadClass.getDownloadUrl(); + updateUserProfilePic(user); + } + } + + protected void updateUserProfilePic(final FirebaseUser user) { + UserProfileChangeRequest request = new UserProfileChangeRequest.Builder() + .setPhotoUri(downloadUrl) + .build(); + + user.updateProfile(request) + .addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + Log.d(TAG, "User profile updated!"); + } + } + }); + } + + // TODO Make this function into its own class for modularity. /** * Performs password reset action. diff --git a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/UploadClass.java b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/UploadClass.java index c3acf21..9de753c 100644 --- a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/UploadClass.java +++ b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/UploadClass.java @@ -21,7 +21,7 @@ import java.io.ByteArrayOutputStream; public class UploadClass { private StorageReference mStorageRef; - + private static Uri downloadUrl; public UploadClass() { mStorageRef = FirebaseStorage.getInstance().getReference().child("images"); @@ -45,11 +45,15 @@ public class UploadClass { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { // Handle successful uploads on complete - Uri downloadUrl = taskSnapshot.getMetadata().getDownloadUrl(); + downloadUrl = taskSnapshot.getMetadata().getDownloadUrl(); } }); } + public Uri getDownloadUrl() { + return downloadUrl; + } + private String getUserUid() { FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) {