mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 12:23:58 +01:00
Remove Image From Upload Wizard (#5636)
* Added Remove Icon to Image Thumnails * fix * fix * fix tests
This commit is contained in:
parent
78a53fd40d
commit
f404ac9b47
5 changed files with 43 additions and 8 deletions
|
|
@ -28,6 +28,8 @@ class ThumbnailsAdapter extends RecyclerView.Adapter<ThumbnailsAdapter.ViewHolde
|
|||
List<UploadableFile> uploadableFiles;
|
||||
private Callback callback;
|
||||
|
||||
private OnThumbnailDeletedListener listener;
|
||||
|
||||
private ItemUploadThumbnailBinding binding;
|
||||
|
||||
public ThumbnailsAdapter(Callback callback) {
|
||||
|
|
@ -45,6 +47,10 @@ class ThumbnailsAdapter extends RecyclerView.Adapter<ThumbnailsAdapter.ViewHolde
|
|||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setOnThumbnailDeletedListener(OnThumbnailDeletedListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
|
||||
|
|
@ -69,11 +75,14 @@ class ThumbnailsAdapter extends RecyclerView.Adapter<ThumbnailsAdapter.ViewHolde
|
|||
SimpleDraweeView background;
|
||||
ImageView ivError;
|
||||
|
||||
ImageView ivCross;
|
||||
|
||||
public ViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
rlContainer = binding.rlContainer;
|
||||
background = binding.ivThumbnail;
|
||||
ivError = binding.ivError;
|
||||
ivCross = binding.icCross;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -104,6 +113,12 @@ class ThumbnailsAdapter extends RecyclerView.Adapter<ThumbnailsAdapter.ViewHolde
|
|||
rlContainer.setElevation(0);
|
||||
}
|
||||
}
|
||||
|
||||
ivCross.setOnClickListener(v -> {
|
||||
if(listener != null) {
|
||||
listener.onThumbnailDeleted(position);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -114,4 +129,13 @@ class ThumbnailsAdapter extends RecyclerView.Adapter<ThumbnailsAdapter.ViewHolde
|
|||
|
||||
int getCurrentSelectedFilePosition();
|
||||
}
|
||||
|
||||
/**
|
||||
* Interface to listen to thumbnail delete events
|
||||
*/
|
||||
|
||||
public interface OnThumbnailDeletedListener {
|
||||
void onThumbnailDeleted(int position);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ import javax.inject.Inject;
|
|||
import javax.inject.Named;
|
||||
import timber.log.Timber;
|
||||
|
||||
public class UploadActivity extends BaseActivity implements UploadContract.View, UploadBaseFragment.Callback {
|
||||
public class UploadActivity extends BaseActivity implements UploadContract.View, UploadBaseFragment.Callback, ThumbnailsAdapter.OnThumbnailDeletedListener {
|
||||
|
||||
@Inject
|
||||
ContributionController contributionController;
|
||||
|
|
@ -199,6 +199,7 @@ public class UploadActivity extends BaseActivity implements UploadContract.View,
|
|||
binding.rvThumbnails.setLayoutManager(new LinearLayoutManager(this,
|
||||
LinearLayoutManager.HORIZONTAL, false));
|
||||
thumbnailsAdapter = new ThumbnailsAdapter(() -> currentSelectedPosition);
|
||||
thumbnailsAdapter.setOnThumbnailDeletedListener(this);
|
||||
binding.rvThumbnails.setAdapter(thumbnailsAdapter);
|
||||
|
||||
}
|
||||
|
|
@ -799,9 +800,15 @@ public class UploadActivity extends BaseActivity implements UploadContract.View,
|
|||
fragments.get(index - 1).onBecameVisible();
|
||||
((LinearLayoutManager) binding.rvThumbnails.getLayoutManager())
|
||||
.scrollToPositionWithOffset((index > 3) ? index-2 : 0, 0);
|
||||
binding.llContainerTopCard.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onThumbnailDeleted(int position) {
|
||||
presenter.deletePictureAtIndex(position);
|
||||
}
|
||||
|
||||
/**
|
||||
* The adapter used to show image upload intermediate fragments
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -138,9 +138,6 @@ public class UploadPresenter implements UploadContract.UserActionListener {
|
|||
@Override
|
||||
public void deletePictureAtIndex(int index) {
|
||||
List<UploadableFile> uploadableFiles = view.getUploadableFiles();
|
||||
if (index == uploadableFiles.size() - 1) {//If the next fragment to be shown is not one of the MediaDetailsFragment, lets hide the top card
|
||||
view.showHideTopCard(false);
|
||||
}
|
||||
view.setImageCancelled(true);
|
||||
repository.deletePicture(uploadableFiles.get(index).getFilePath());
|
||||
if (uploadableFiles.size() == 1) {
|
||||
|
|
@ -156,7 +153,6 @@ public class UploadPresenter implements UploadContract.UserActionListener {
|
|||
|
||||
//In case lets update the number of uploadable media
|
||||
view.updateTopCardTitle();
|
||||
view.highlightNextImageOnCancelledImage(index, uploadableFiles.size());
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,4 +26,14 @@
|
|||
android:visibility="gone"
|
||||
app:srcCompat="@drawable/ic_error_red_24dp"
|
||||
tools:visibility="visible"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ic_cross"
|
||||
android:layout_width="@dimen/half_standard_height"
|
||||
android:layout_height="@dimen/half_standard_height"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_gravity="end"
|
||||
app:srcCompat="@drawable/ic_cancel_white"
|
||||
tools:visibility="visible"/>
|
||||
</RelativeLayout>
|
||||
|
|
|
|||
|
|
@ -157,7 +157,6 @@ class UploadPresenterTest {
|
|||
deletePictureBaseTest()
|
||||
uploadableFiles.add(uploadableFile)
|
||||
uploadPresenter.deletePictureAtIndex(0)
|
||||
verify(view).showHideTopCard(false)
|
||||
verify(repository).deletePicture(ArgumentMatchers.anyString())
|
||||
}
|
||||
|
||||
|
|
@ -169,7 +168,6 @@ class UploadPresenterTest {
|
|||
deletePictureBaseTest()
|
||||
uploadableFiles.add(uploadableFile)
|
||||
uploadPresenter.deletePictureAtIndex(0)
|
||||
verify(view).showHideTopCard(false)
|
||||
verify(repository).deletePicture(ArgumentMatchers.anyString())
|
||||
verify(view).showMessage(ArgumentMatchers.anyInt())//As there is only one while which we are asking for deletion, upload should be cancelled and this flow should be triggered
|
||||
verify(view).finish()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue