Я только что понял, что не сохраняю свою информацию после загрузки изображения обложки, я добавил метод saveInfo в свой метод загрузки изображения onComplete обложки, и теперь он работает нормально.
final StorageReference profileImageRef = FirebaseStorage.getInstance()
.getReference(SefnetContract.PROFILE_PICS_REF + System.currentTimeMillis() + ".jpg");
// Upload profile picture
if (profileImageUri != null) {
progressBar.setVisibility(View.VISIBLE);
profileImageRef.putFile(profileImageUri).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
return profileImageRef.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
profileImageUrl = String.valueOf(downloadUri);
saveUserInfo();
} else {
Toast.makeText(EditProfile.this, "upload failed: "
+ task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
progressBar.setVisibility(View.GONE);
}
});
}
if (coverImageUri != null) {
// Upload cover picture
progressBar.setVisibility(View.VISIBLE);
profileImageRef.putFile(coverImageUri).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
return profileImageRef.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
progressBar.setVisibility(View.GONE);
if (task.isSuccessful()) {
Uri downloadCUri = task.getResult();
coverImageUrl = String.valueOf(downloadCUri);
saveUserInfo();
Toast.makeText(getApplicationContext(), "Cover Picture Uploaded", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(EditProfile.this, "Cover picture upload failed: "
+ task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
Я все еще чувствую, что это может быть сделано лучше, поэтому, если вы знаете способ лучше, чем этот, пожалуйста, поделитесь. Мне нужен метод, с помощью которого я могу помешать пользователю инициализировать метод загрузки слишком много раз, повторно нажимая кнопку, спасибо