Skip to content

Commit d0c9da3

Browse files
committed
Revert "Merge pull request #10558 from wordpress-mobile/issue/revert-multiple-media-pr"
This reverts commit 5c2fa2e, reversing changes made to d944b59.
1 parent 5c2fa2e commit d0c9da3

File tree

8 files changed

+168
-39
lines changed

8 files changed

+168
-39
lines changed

WordPress/src/main/java/org/wordpress/android/ui/photopicker/PhotoPickerActivity.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ public void onPhotoPickerMediaChosen(@NonNull List<Uri> uriList) {
288288
}
289289

290290
@Override
291-
public void onPhotoPickerIconClicked(@NonNull PhotoPickerFragment.PhotoPickerIcon icon) {
291+
public void onPhotoPickerIconClicked(@NonNull PhotoPickerFragment.PhotoPickerIcon icon, boolean multiple) {
292292
switch (icon) {
293293
case ANDROID_CAPTURE_PHOTO:
294294
launchCamera();

WordPress/src/main/java/org/wordpress/android/ui/photopicker/PhotoPickerFragment.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public enum PhotoPickerIcon {
6868
public interface PhotoPickerListener {
6969
void onPhotoPickerMediaChosen(@NonNull List<Uri> uriList);
7070

71-
void onPhotoPickerIconClicked(@NonNull PhotoPickerIcon icon);
71+
void onPhotoPickerIconClicked(@NonNull PhotoPickerIcon icon, boolean allowMultipleSelection);
7272
}
7373

7474
private EmptyViewRecyclerView mRecycler;
@@ -252,7 +252,7 @@ public void doIconClicked(@NonNull PhotoPickerIcon icon) {
252252
}
253253

254254
if (mListener != null) {
255-
mListener.onPhotoPickerIconClicked(icon);
255+
mListener.onPhotoPickerIconClicked(icon, false);
256256
}
257257
}
258258

WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.java

+87-23
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import android.text.Editable;
2020
import android.text.Spanned;
2121
import android.text.TextUtils;
22+
import android.util.ArrayMap;
2223
import android.view.ContextThemeWrapper;
2324
import android.view.DragEvent;
2425
import android.view.Menu;
@@ -257,6 +258,7 @@ enum RestartEditorOptions {
257258
private boolean mShowAztecEditor;
258259
private boolean mShowGutenbergEditor;
259260
private boolean mMediaInsertedOnCreation;
261+
private boolean mAllowMultipleSelection;
260262

261263
private List<String> mPendingVideoPressInfoRequests;
262264
private List<String> mAztecBackspaceDeletedOrGbBlockDeletedMediaItemIds = new ArrayList<>();
@@ -1204,8 +1206,9 @@ public void onMediaToolbarButtonClicked(MediaToolbarAction action) {
12041206
* picker, or WP media picker
12051207
*/
12061208
@Override
1207-
public void onPhotoPickerIconClicked(@NonNull PhotoPickerIcon icon) {
1209+
public void onPhotoPickerIconClicked(@NonNull PhotoPickerIcon icon, boolean allowMultipleSelection) {
12081210
hidePhotoPicker();
1211+
mAllowMultipleSelection = allowMultipleSelection;
12091212
switch (icon) {
12101213
case ANDROID_CAPTURE_PHOTO:
12111214
launchCamera();
@@ -1787,13 +1790,11 @@ private void onUploadProgress(MediaModel media, float progress) {
17871790
}
17881791

17891792
private void launchPictureLibrary() {
1790-
// don't allow multiple selection for Gutenberg, as we're on a single image block for now
1791-
WPMediaUtils.launchPictureLibrary(this, !mShowGutenbergEditor);
1793+
WPMediaUtils.launchPictureLibrary(this, mAllowMultipleSelection);
17921794
}
17931795

17941796
private void launchVideoLibrary() {
1795-
// don't allow multiple selection for Gutenberg, as we're on a single image block for now
1796-
WPMediaUtils.launchVideoLibrary(this, !mShowGutenbergEditor);
1797+
WPMediaUtils.launchVideoLibrary(this, mAllowMultipleSelection);
17971798
}
17981799

17991800
private void launchVideoCamera() {
@@ -2522,6 +2523,24 @@ private boolean addExistingMediaToEditor(@NonNull AddExistingdMediaSource source
25222523
return true;
25232524
}
25242525

2526+
private void addExistingMediaToEditor(@NonNull AddExistingdMediaSource source, List<Long> mediaIdList) {
2527+
ArrayMap<String, MediaFile> mediaMap = new ArrayMap<>();
2528+
for (Long mediaId : mediaIdList) {
2529+
MediaModel media = mMediaStore.getSiteMediaWithId(mSite, mediaId);
2530+
if (media == null) {
2531+
AppLog.w(T.MEDIA, "Cannot add null media to post");
2532+
} else {
2533+
trackAddMediaEvent(source, media);
2534+
2535+
MediaFile mediaFile = FluxCUtils.mediaFileFromMediaModel(media);
2536+
String urlToUse = TextUtils.isEmpty(media.getUrl()) ? media.getFilePath() : media.getUrl();
2537+
2538+
mediaMap.put(urlToUse, mediaFile);
2539+
}
2540+
}
2541+
mEditorFragment.appendMediaFiles(mediaMap);
2542+
}
2543+
25252544
private class LoadPostContentTask extends AsyncTask<String, Spanned, Spanned> {
25262545
@Override
25272546
protected Spanned doInBackground(String... params) {
@@ -2826,7 +2845,7 @@ private boolean addMedia(Uri mediaUri, boolean isNew) {
28262845
private void addMediaList(@NonNull List<Uri> uriList, boolean isNew) {
28272846
// fetch any shared media first - must be done on the main thread
28282847
List<Uri> fetchedUriList = fetchMediaList(uriList);
2829-
mAddMediaListThread = new AddMediaListThread(fetchedUriList, isNew);
2848+
mAddMediaListThread = new AddMediaListThread(fetchedUriList, isNew, mAllowMultipleSelection);
28302849
mAddMediaListThread.start();
28312850
}
28322851

@@ -2849,13 +2868,23 @@ private class AddMediaListThread extends Thread {
28492868
private final boolean mIsNew;
28502869
private ProgressDialog mProgressDialog;
28512870
private boolean mDidAnyFail;
2871+
private int mFinishedUploads = 0;
2872+
private boolean mAllowMultipleSelection = false;
2873+
private Map<String, MediaFile> mediaMap = new ArrayMap<>();
28522874

28532875
AddMediaListThread(@NonNull List<Uri> uriList, boolean isNew) {
28542876
this.mUriList.addAll(uriList);
28552877
this.mIsNew = isNew;
28562878
showOverlay(false);
28572879
}
28582880

2881+
AddMediaListThread(@NonNull List<Uri> uriList, boolean isNew, boolean allowMultipleSelection) {
2882+
this.mUriList.addAll(uriList);
2883+
this.mIsNew = isNew;
2884+
this.mAllowMultipleSelection = allowMultipleSelection;
2885+
showOverlay(false);
2886+
}
2887+
28592888
private void showProgressDialog(final boolean show) {
28602889
runOnUiThread(new Runnable() {
28612890
@Override
@@ -2955,20 +2984,45 @@ private boolean processMedia(Uri mediaUri) {
29552984
}
29562985

29572986
private void postProcessMedia(final Uri mediaUri, final String path, final boolean isVideo) {
2958-
runOnUiThread(new Runnable() {
2959-
@Override
2960-
public void run() {
2961-
addMediaVisualEditor(mediaUri, path);
2987+
if (mAllowMultipleSelection) {
2988+
MediaFile mediaFile = getMediaFile(mediaUri);
2989+
if (mediaFile != null) {
2990+
mediaMap.put(path, mediaFile);
29622991
}
2963-
});
2992+
mFinishedUploads++;
2993+
if (mUriList.size() == mFinishedUploads) {
2994+
runOnUiThread(new Runnable() {
2995+
@Override
2996+
public void run() {
2997+
mEditorFragment.appendMediaFiles(mediaMap);
2998+
}
2999+
});
3000+
}
3001+
} else {
3002+
runOnUiThread(new Runnable() {
3003+
@Override
3004+
public void run() {
3005+
addMediaVisualEditor(mediaUri, path);
3006+
}
3007+
});
3008+
}
29643009
}
29653010
}
29663011

29673012
private void addMediaVisualEditor(Uri uri, String path) {
3013+
MediaFile mediaFile = getMediaFile(uri);
3014+
if (mediaFile != null) {
3015+
mEditorFragment.appendMediaFile(mediaFile, path, mImageLoader);
3016+
}
3017+
}
3018+
3019+
private MediaFile getMediaFile(Uri uri) {
29683020
MediaModel media = queueFileForUpload(uri, getContentResolver().getType(uri));
29693021
MediaFile mediaFile = FluxCUtils.mediaFileFromMediaModel(media);
29703022
if (media != null) {
2971-
mEditorFragment.appendMediaFile(mediaFile, path, mImageLoader);
3023+
return mediaFile;
3024+
} else {
3025+
return null;
29723026
}
29733027
}
29743028

@@ -2996,10 +3050,12 @@ private void addMediaLegacyEditor(Uri mediaUri, boolean isVideo) {
29963050
private void addMediaItemGroupOrSingleItem(Intent data) {
29973051
ClipData clipData = data.getClipData();
29983052
if (clipData != null) {
3053+
ArrayList<Uri> uriList = new ArrayList<>();
29993054
for (int i = 0; i < clipData.getItemCount(); i++) {
30003055
ClipData.Item item = clipData.getItemAt(i);
3001-
addMedia(item.getUri(), false);
3056+
uriList.add(item.getUri());
30023057
}
3058+
addMediaList(uriList, false);
30033059
} else {
30043060
addMedia(data.getData(), false);
30053061
}
@@ -3229,8 +3285,14 @@ private void handleMediaPickerResult(Intent data) {
32293285
if (ids.size() > 1 && allAreImages && !mShowGutenbergEditor) {
32303286
showInsertMediaDialog(ids);
32313287
} else {
3232-
for (Long id : ids) {
3233-
addExistingMediaToEditor(AddExistingdMediaSource.WP_MEDIA_LIBRARY, id);
3288+
// if mAllowMultipleSelection and gutenberg editor, pass all ids to addExistingMediaToEditor at once
3289+
if (mShowGutenbergEditor && mAllowMultipleSelection) {
3290+
addExistingMediaToEditor(AddExistingdMediaSource.WP_MEDIA_LIBRARY, ids);
3291+
mAllowMultipleSelection = false;
3292+
} else {
3293+
for (Long id : ids) {
3294+
addExistingMediaToEditor(AddExistingdMediaSource.WP_MEDIA_LIBRARY, id);
3295+
}
32343296
}
32353297
savePostAsync(null);
32363298
}
@@ -3462,33 +3524,35 @@ public void onAddMediaClicked() {
34623524
}
34633525

34643526
@Override
3465-
public void onAddMediaImageClicked() {
3527+
public void onAddMediaImageClicked(boolean allowMultipleSelection) {
3528+
mAllowMultipleSelection = allowMultipleSelection;
34663529
ActivityLauncher.viewMediaPickerForResult(this, mSite, MediaBrowserType.GUTENBERG_IMAGE_PICKER);
34673530
}
34683531

34693532
@Override
3470-
public void onAddMediaVideoClicked() {
3533+
public void onAddMediaVideoClicked(boolean allowMultipleSelection) {
3534+
mAllowMultipleSelection = allowMultipleSelection;
34713535
ActivityLauncher.viewMediaPickerForResult(this, mSite, MediaBrowserType.GUTENBERG_VIDEO_PICKER);
34723536
}
34733537

34743538
@Override
3475-
public void onAddPhotoClicked() {
3476-
onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CHOOSE_PHOTO);
3539+
public void onAddPhotoClicked(boolean allowMultipleSelection) {
3540+
onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CHOOSE_PHOTO, allowMultipleSelection);
34773541
}
34783542

34793543
@Override
34803544
public void onCapturePhotoClicked() {
3481-
onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CAPTURE_PHOTO);
3545+
onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CAPTURE_PHOTO, false);
34823546
}
34833547

34843548
@Override
3485-
public void onAddVideoClicked() {
3486-
onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CHOOSE_VIDEO);
3549+
public void onAddVideoClicked(boolean allowMultipleSelectio) {
3550+
onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CHOOSE_VIDEO, allowMultipleSelectio);
34873551
}
34883552

34893553
@Override
34903554
public void onCaptureVideoClicked() {
3491-
onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CAPTURE_VIDEO);
3555+
onPhotoPickerIconClicked(PhotoPickerIcon.ANDROID_CAPTURE_VIDEO, false);
34923556
}
34933557

34943558
@Override

libs/editor/WordPressEditor/src/main/java/org/wordpress/android/editor/AztecEditorFragment.java

+3
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
import java.util.HashMap;
106106
import java.util.HashSet;
107107
import java.util.List;
108+
import java.util.Map;
108109
import java.util.Set;
109110
import java.util.UUID;
110111

@@ -1098,6 +1099,8 @@ private void replaceDrawable(Drawable newDrawable) {
10981099
}
10991100
}
11001101

1102+
@Override public void appendMediaFiles(Map<String, MediaFile> mediaList) { }
1103+
11011104
private Drawable getLoadingMediaErrorPlaceholder(String msg) {
11021105
if (TextUtils.isEmpty(msg)) {
11031106
ToastUtils.showToast(getActivity(), R.string.error_media_load);

libs/editor/WordPressEditor/src/main/java/org/wordpress/android/editor/EditorFragmentAbstract.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import java.util.ArrayList;
1818
import java.util.HashMap;
19+
import java.util.Map;
1920
import java.util.Set;
2021

2122
public abstract class EditorFragmentAbstract extends Fragment {
@@ -28,6 +29,7 @@ public class EditorFragmentNotAddedException extends Exception {
2829
public abstract CharSequence getContent(CharSequence originalContent) throws EditorFragmentNotAddedException;
2930
public abstract LiveData<Editable> getTitleOrContentChanged();
3031
public abstract void appendMediaFile(MediaFile mediaFile, String imageUrl, ImageLoader imageLoader);
32+
public abstract void appendMediaFiles(Map<String, MediaFile> mediaList);
3133
public abstract void appendGallery(MediaGallery mediaGallery);
3234
public abstract void setUrlForVideoPressId(String videoPressId, String url, String posterUrl);
3335
public abstract boolean isUploadingMedia();
@@ -171,11 +173,11 @@ public interface EditorFragmentListener {
171173
void onEditorFragmentInitialized();
172174
void onEditorFragmentContentReady(ArrayList<Object> unsupportedBlocks);
173175
void onAddMediaClicked();
174-
void onAddMediaImageClicked();
175-
void onAddMediaVideoClicked();
176-
void onAddPhotoClicked();
176+
void onAddMediaImageClicked(boolean allowMultipleSelection);
177+
void onAddMediaVideoClicked(boolean allowMultipleSelection);
178+
void onAddPhotoClicked(boolean allowMultipleSelection);
177179
void onCapturePhotoClicked();
178-
void onAddVideoClicked();
180+
void onAddVideoClicked(boolean allowMultipleSelection);
179181
void onCaptureVideoClicked();
180182
boolean onMediaRetryClicked(String mediaId);
181183
void onMediaRetryAllClicked(Set<String> mediaIdSet);

libs/editor/WordPressEditor/src/main/java/org/wordpress/android/editor/GutenbergContainerFragment.java

+11
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import androidx.fragment.app.Fragment;
77

8+
import org.wordpress.mobile.WPAndroidGlue.Media;
89
import org.wordpress.mobile.WPAndroidGlue.WPAndroidGlueCode;
910
import org.wordpress.mobile.WPAndroidGlue.WPAndroidGlueCode.OnAuthHeaderRequestedListener;
1011
import org.wordpress.mobile.WPAndroidGlue.WPAndroidGlueCode.OnEditorAutosaveListener;
@@ -13,6 +14,8 @@
1314
import org.wordpress.mobile.WPAndroidGlue.WPAndroidGlueCode.OnMediaLibraryButtonListener;
1415
import org.wordpress.mobile.WPAndroidGlue.WPAndroidGlueCode.OnReattachQueryListener;
1516

17+
import java.util.ArrayList;
18+
1619
public class GutenbergContainerFragment extends Fragment {
1720
public static final String TAG = "gutenberg_container_fragment_tag";
1821

@@ -125,6 +128,10 @@ public void appendMediaFile(int mediaId, final String mediaUrl, final boolean is
125128
mWPAndroidGlueCode.appendMediaFile(mediaId, mediaUrl, isVideo);
126129
}
127130

131+
public void appendMediaFiles(ArrayList<Media> mediaList) {
132+
mWPAndroidGlueCode.appendMediaFiles(mediaList);
133+
}
134+
128135
public void showDevOptionsDialog() {
129136
mWPAndroidGlueCode.showDevOptionsDialog();
130137
}
@@ -133,6 +140,10 @@ public void appendUploadMediaFile(final int mediaId, final String mediaUri, fina
133140
mWPAndroidGlueCode.appendUploadMediaFile(mediaId, mediaUri, isVideo);
134141
}
135142

143+
public void appendUploadMediaFiles(ArrayList<Media> mediaList) {
144+
mWPAndroidGlueCode.appendUploadMediaFiles(mediaList);
145+
}
146+
136147
public void mediaFileUploadProgress(final int mediaId, final float progress) {
137148
mWPAndroidGlueCode.mediaFileUploadProgress(mediaId, progress);
138149
}

0 commit comments

Comments
 (0)