From b570e5ef21369c654cf920c2c4676fb9f4d9d93a Mon Sep 17 00:00:00 2001 From: Marijn Jansen Date: Fri, 23 Jun 2017 14:35:20 +0200 Subject: [PATCH 1/3] Unique Profile pic name. --- .../tagram/{ => controller}/UploadClass.java | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) rename app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/{ => controller}/UploadClass.java (88%) diff --git a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/UploadClass.java b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/controller/UploadClass.java similarity index 88% rename from app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/UploadClass.java rename to app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/controller/UploadClass.java index 2237957..57a7e78 100644 --- a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/UploadClass.java +++ b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/controller/UploadClass.java @@ -1,4 +1,4 @@ -package nl.myhyvesbookplus.tagram; +package nl.myhyvesbookplus.tagram.controller; import android.graphics.Bitmap; import android.net.Uri; @@ -23,10 +23,11 @@ import java.io.ByteArrayOutputStream; import nl.myhyvesbookplus.tagram.model.BitmapPost; import nl.myhyvesbookplus.tagram.model.UriPost; -/** - * Created by marijnjansen on 20/06/2017. - */ +import static java.lang.System.currentTimeMillis; +/** + * Class that does all the photo uploading things. + */ public class UploadClass { private static final String TAG = "UploadClass"; @@ -46,12 +47,20 @@ public class UploadClass { return baos.toByteArray(); } + private String getUserUid() { + FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); + if (user != null) { + return user.getUid(); + } + return ""; + } + /// Post Uploads /// public void uploadPicture(final BitmapPost post) { + final String name = getUserUid() + currentTimeMillis(); - - UploadTask uploadTask = mStorageRef.child("posts").child("UniquePostName" + ".jpg").putBytes(bitmapToBytes(post.getBitmap())); + UploadTask uploadTask = mStorageRef.child("posts").child(name + ".jpg").putBytes(bitmapToBytes(post.getBitmap())); uploadTask.addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { @@ -64,14 +73,14 @@ public class UploadClass { // Handle successful uploads on complete Log.d(TAG, "onSuccess: Upload Success!"); Uri downloadUrl = taskSnapshot.getMetadata().getDownloadUrl(); - putPostInDatabase(post.getUriPost(downloadUrl)); + putPostInDatabase(post.getUriPost(downloadUrl), name); } }); } - private void putPostInDatabase(UriPost post) { - DatabaseReference ref = mDataRef.child("posts").child("UniquePostName"); // TODO: Naam voor post. - ref.setValue(post) // FIXME: Grote boos veroorzaker + private void putPostInDatabase(UriPost post, String name) { + DatabaseReference ref = mDataRef.child("posts").child(name); + ref.setValue(post) .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { @@ -84,19 +93,11 @@ public class UploadClass { }); } - private String getUserUid() { - FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); - if (user != null) { - return user.getUid(); - } - return ""; - } - /// Profile picture /// - protected void uploadProfilePicture(Bitmap picture) { + public void uploadProfilePicture(Bitmap picture) { byte[] uploadPhoto = bitmapToBytes(picture); - UploadTask photoUpload = mStorageRef.child("profile").child(getUserUid()).putBytes(uploadPhoto); + UploadTask photoUpload = mStorageRef.child("profile").child(getUserUid() + "_" + currentTimeMillis()).putBytes(uploadPhoto); photoUpload.addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { From 6e55954ddeca90f7d9d614889f798e8821d52a8c Mon Sep 17 00:00:00 2001 From: Marijn Jansen Date: Fri, 23 Jun 2017 15:24:57 +0200 Subject: [PATCH 2/3] Made a listener! --- .../myhyvesbookplus/tagram/MainActivity.java | 17 +++++------ .../tagram/ProfileFragment.java | 7 ++++- .../tagram/controller/DownloadClass.java | 28 +++++++++++++++++++ .../tagram/controller/UploadClass.java | 11 +++++++- .../tagram/model/BitmapPost.java | 3 ++ .../nl/myhyvesbookplus/tagram/model/Post.java | 3 +- .../myhyvesbookplus/tagram/model/UriPost.java | 3 ++ 7 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/controller/DownloadClass.java 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 086efa4..b4ac749 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 @@ -1,15 +1,12 @@ package nl.myhyvesbookplus.tagram; -import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Intent; import android.graphics.Bitmap; -import android.hardware.Camera; import android.net.Uri; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; -import android.app.Fragment; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.MenuItem; @@ -17,9 +14,10 @@ import android.view.View; import com.google.firebase.auth.FirebaseAuth; +import nl.myhyvesbookplus.tagram.controller.UploadClass; import nl.myhyvesbookplus.tagram.model.BitmapPost; -public class MainActivity extends AppCompatActivity implements CameraFragment.OnFragmentInteractionListener, ProfileFragment.OnFragmentInteractionListener, TimelineFragment.OnFragmentInteractionListener { +public class MainActivity extends AppCompatActivity implements CameraFragment.OnFragmentInteractionListener, ProfileFragment.OnFragmentInteractionListener, TimelineFragment.OnFragmentInteractionListener, UploadClass.ProfilePictureUpdatedListener { final static private String TAG = "MainScreen"; FirebaseAuth mAuth; @@ -74,14 +72,11 @@ public class MainActivity extends AppCompatActivity implements CameraFragment.On goToLogin(); } - Log.d(TAG, "onCreate: " + mAuth.getCurrentUser().getPhotoUrl() ); - TimelineFragment fragment = new TimelineFragment(); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.content, fragment); transaction.commit(); - } @Override @@ -106,9 +101,15 @@ public class MainActivity extends AppCompatActivity implements CameraFragment.On } public void testCreatePost(View view) { - UploadClass uploadClass = new UploadClass(); + UploadClass uploadClass = new UploadClass(this); Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ALPHA_8); BitmapPost bitmapPost = new BitmapPost(bitmap, "Dit is een Test!"); uploadClass.uploadPicture(bitmapPost); } + + @Override + public void ProfilePictureUpdated(Boolean success) { + Log.d(TAG, "ProfilePictureUpdated: Ja ik luister naar je!"); + } + } 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 27ab142..9205e16 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 @@ -26,6 +26,8 @@ import com.google.firebase.auth.FirebaseUser; import com.google.firebase.storage.FirebaseStorage; import com.google.firebase.storage.StorageReference; +import nl.myhyvesbookplus.tagram.controller.UploadClass; + import static android.app.Activity.RESULT_OK; /** @@ -38,6 +40,7 @@ import static android.app.Activity.RESULT_OK; */ public class ProfileFragment extends Fragment implements View.OnClickListener { static final int REQUEST_IMAGE_CAPTURE = 1; + final static private String TAG = "ProfileFragment"; // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_PARAM1 = "param1"; @@ -183,7 +186,7 @@ public class ProfileFragment extends Fragment implements View.OnClickListener { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { Bundle extras = data.getExtras(); Bitmap imageBitmap = (Bitmap) extras.get("data"); - UploadClass uploadClass = new UploadClass(); + UploadClass uploadClass = new UploadClass(getActivity()); uploadClass.uploadProfilePicture(imageBitmap); // uploadClass.uploadPicture(new BitmapPost(imageBitmap, "Ik ben een heel mooi comment")); // downloadUrl = uploadClass.getDownloadUrl(); @@ -265,4 +268,6 @@ public class ProfileFragment extends Fragment implements View.OnClickListener { // TODO: Update argument type and name void onFragmentInteraction(Uri uri); } + + } diff --git a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/controller/DownloadClass.java b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/controller/DownloadClass.java new file mode 100644 index 0000000..1ddaf17 --- /dev/null +++ b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/controller/DownloadClass.java @@ -0,0 +1,28 @@ +package nl.myhyvesbookplus.tagram.controller; + +import com.google.firebase.database.DatabaseReference; +import com.google.firebase.database.FirebaseDatabase; +import com.google.firebase.storage.FirebaseStorage; +import com.google.firebase.storage.StorageReference; + +import nl.myhyvesbookplus.tagram.model.UriPost; + +/** + * Created by marijnjansen on 23/06/2017. + */ + +public class DownloadClass { + private static final String TAG = "DownloadClass"; + private StorageReference mStorageRef; + private DatabaseReference mDataRef; + + public DownloadClass() { + mStorageRef = FirebaseStorage.getInstance().getReference(); + mDataRef = FirebaseDatabase.getInstance().getReference(); + } + + public UriPost[] getPosts() { + UriPost[] posts = new UriPost[10]; + return posts; + } +} diff --git a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/controller/UploadClass.java b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/controller/UploadClass.java index 57a7e78..3f104a2 100644 --- a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/controller/UploadClass.java +++ b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/controller/UploadClass.java @@ -1,5 +1,6 @@ package nl.myhyvesbookplus.tagram.controller; +import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; import android.support.annotation.NonNull; @@ -34,9 +35,12 @@ public class UploadClass { private StorageReference mStorageRef; private DatabaseReference mDataRef; - public UploadClass() { + private ProfilePictureUpdatedListener mListener; + + public UploadClass(Context context) { mStorageRef = FirebaseStorage.getInstance().getReference(); mDataRef = FirebaseDatabase.getInstance().getReference(); + mListener = (ProfilePictureUpdatedListener) context; } /// Helpers /// @@ -117,7 +121,12 @@ public class UploadClass { @Override public void onComplete(@NonNull Task task) { Log.d(TAG, "onComplete: Updated profile picture"); + mListener.ProfilePictureUpdated(true); } }); } + + public interface ProfilePictureUpdatedListener { + void ProfilePictureUpdated(Boolean success); + } } diff --git a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/BitmapPost.java b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/BitmapPost.java index 2d51cae..83d8399 100644 --- a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/BitmapPost.java +++ b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/BitmapPost.java @@ -5,6 +5,9 @@ import android.net.Uri; import java.util.Date; +/** + * BitmapPost is a Class for a Post with a Bitmap as an image. + */ public class BitmapPost extends Post { private Bitmap photo; diff --git a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/Post.java b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/Post.java index 96c4578..87edbdd 100644 --- a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/Post.java +++ b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/Post.java @@ -5,9 +5,8 @@ import com.google.firebase.auth.FirebaseAuth; import java.util.Date; /** - * Created by marijnjansen on 22/06/2017. + * Post is a Class for a Post with a Bitmap as an image. */ - abstract class Post { private Date date; diff --git a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/UriPost.java b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/UriPost.java index 494e124..2b80ad6 100644 --- a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/UriPost.java +++ b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/model/UriPost.java @@ -4,6 +4,9 @@ import android.net.Uri; import java.util.Date; +/** + * UriPost is a Class for a Post with a Uri as an image. + */ public class UriPost extends Post { private String photo; From c056d961380d88063e9112ae18860bbb3c1c594d Mon Sep 17 00:00:00 2001 From: Marijn Jansen Date: Fri, 23 Jun 2017 16:08:07 +0200 Subject: [PATCH 3/3] Profile photo update things. --- .../myhyvesbookplus/tagram/MainActivity.java | 26 +++++++++++------- .../tagram/ProfileFragment.java | 27 +++++-------------- 2 files changed, 23 insertions(+), 30 deletions(-) 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 b4ac749..51b3a3b 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 @@ -1,5 +1,6 @@ package nl.myhyvesbookplus.tagram; +import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Intent; import android.graphics.Bitmap; @@ -33,25 +34,25 @@ public class MainActivity extends AppCompatActivity implements CameraFragment.On case nl.myhyvesbookplus.tagram.R.id.navigation_timeline: Log.d(TAG, "onNavigationItemSelected: Timeline"); TimelineFragment timeline = new TimelineFragment(); - transaction.replace(R.id.content, timeline); - transaction.addToBackStack(null); - transaction.commit(); + transaction.replace(R.id.content, timeline) + .addToBackStack(null) + .commit(); return true; case nl.myhyvesbookplus.tagram.R.id.navigation_camera: Log.d(TAG, "onNavigationItemSelected: Camera"); CameraFragment camera = new CameraFragment(); - transaction.replace(R.id.content, camera); - transaction.addToBackStack(null); - transaction.commit(); + transaction.replace(R.id.content, camera) + .addToBackStack(null) + .commit(); return true; case nl.myhyvesbookplus.tagram.R.id.navigation_profile: Log.d(TAG, "onNavigationItemSelected: Profile"); ProfileFragment profile = new ProfileFragment(); - transaction.replace(R.id.content, profile); - transaction.addToBackStack(null); - transaction.commit(); + transaction.replace(R.id.content, profile) + .addToBackStack(null) + .commit(); return true; } return false; @@ -110,6 +111,13 @@ public class MainActivity extends AppCompatActivity implements CameraFragment.On @Override public void ProfilePictureUpdated(Boolean success) { Log.d(TAG, "ProfilePictureUpdated: Ja ik luister naar je!"); + FragmentManager man = getFragmentManager(); + ProfileFragment frag = (ProfileFragment) man.findFragmentById(R.id.content); + FragmentTransaction transaction = man.beginTransaction(); + transaction.detach(frag) + .attach(frag) + .commit(); + Log.d(TAG, "ProfilePictureUpdated: Done reloading fragment"); } } 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 9205e16..5f87eb2 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 @@ -91,9 +91,6 @@ public class ProfileFragment extends Fragment implements View.OnClickListener { } user = FirebaseAuth.getInstance().getCurrentUser(); - if (user != null && user.getPhotoUrl() != null) { - httpsReference = FirebaseStorage.getInstance().getReferenceFromUrl(user.getPhotoUrl().toString()); - } } /** @@ -121,10 +118,16 @@ public class ProfileFragment extends Fragment implements View.OnClickListener { View view = inflater.inflate(R.layout.fragment_profile, container, false); findViews(view); + if (user != null && user.getPhotoUrl() != null) { + httpsReference = FirebaseStorage.getInstance().getReferenceFromUrl(user.getPhotoUrl().toString()); + } + if (httpsReference != null) { Glide.with(this).using(new FirebaseImageLoader()).load(httpsReference).into(profilePicture); } + profilePicture.invalidate(); + if (user != null && user.getDisplayName() != null) { profileName.setText(user.getDisplayName()); } @@ -188,27 +191,9 @@ public class ProfileFragment extends Fragment implements View.OnClickListener { Bitmap imageBitmap = (Bitmap) extras.get("data"); UploadClass uploadClass = new UploadClass(getActivity()); uploadClass.uploadProfilePicture(imageBitmap); -// uploadClass.uploadPicture(new BitmapPost(imageBitmap, "Ik ben een heel mooi comment")); -// 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.