Delete profile pics on replace.

This commit is contained in:
Marijn Jansen
2017-06-23 16:40:34 +02:00
parent 6d7930ee03
commit 8ba9f7f8e3

View File

@@ -34,13 +34,15 @@ public class UploadClass {
private static final String TAG = "UploadClass"; private static final String TAG = "UploadClass";
private StorageReference mStorageRef; private StorageReference mStorageRef;
private DatabaseReference mDataRef; private DatabaseReference mDataRef;
private ProfilePictureUpdatedListener mListener; private ProfilePictureUpdatedListener mListener;
private FirebaseUser mUser;
private Uri oldPicture;
public UploadClass(Context context) { public UploadClass(Context context) {
mStorageRef = FirebaseStorage.getInstance().getReference(); mStorageRef = FirebaseStorage.getInstance().getReference();
mDataRef = FirebaseDatabase.getInstance().getReference(); mDataRef = FirebaseDatabase.getInstance().getReference();
mListener = (ProfilePictureUpdatedListener) context; mListener = (ProfilePictureUpdatedListener) context;
mUser = FirebaseAuth.getInstance().getCurrentUser();
} }
/// Helpers /// /// Helpers ///
@@ -52,9 +54,8 @@ public class UploadClass {
} }
private String getUserUid() { private String getUserUid() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (mUser != null) {
if (user != null) { return mUser.getUid();
return user.getUid();
} }
return ""; return "";
} }
@@ -101,6 +102,7 @@ public class UploadClass {
public void uploadProfilePicture(Bitmap picture) { public void uploadProfilePicture(Bitmap picture) {
byte[] uploadPhoto = bitmapToBytes(picture); byte[] uploadPhoto = bitmapToBytes(picture);
oldPicture = mUser.getPhotoUrl();
UploadTask photoUpload = mStorageRef.child("profile").child(getUserUid() + "_" + currentTimeMillis()).putBytes(uploadPhoto); UploadTask photoUpload = mStorageRef.child("profile").child(getUserUid() + "_" + currentTimeMillis()).putBytes(uploadPhoto);
photoUpload.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { photoUpload.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override @Override
@@ -112,16 +114,31 @@ public class UploadClass {
} }
private void updateProfilePictureInUser(Uri url) { private void updateProfilePictureInUser(Uri url) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest request = new UserProfileChangeRequest.Builder() UserProfileChangeRequest request = new UserProfileChangeRequest.Builder()
.setPhotoUri(url) .setPhotoUri(url)
.build(); .build();
user.updateProfile(request) mUser.updateProfile(request)
.addOnCompleteListener(new OnCompleteListener<Void>() { .addOnCompleteListener(new OnCompleteListener<Void>() {
@Override @Override
public void onComplete(@NonNull Task<Void> task) { public void onComplete(@NonNull Task<Void> task) {
Log.d(TAG, "onComplete: Updated profile picture"); Log.d(TAG, "onComplete: Updated profile picture");
mListener.ProfilePictureUpdated(true); mListener.ProfilePictureUpdated(true);
removeOldPicture();
}
});
}
private void removeOldPicture() {
StorageReference ref = FirebaseStorage.getInstance().getReferenceFromUrl(oldPicture.toString());
ref.delete()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "onComplete: Delete successfull");
} else {
Log.d(TAG, "onComplete: " + task.getException().getLocalizedMessage());
}
} }
}); });
} }