Skip to content

Commit dec68ed

Browse files
authored
#3503 Remove Title/Caption From MediaUploadDetail and only use Caption/Description pairs (#3578)
* #3529 Captions/depictions are not saved to Commons - make copy of list of depictionEntityIds - uncomment editBaseDepictsProperty - refactor upload related classes * #3529 Captions/depictions are not saved to Commons - fix wrong ArrayList usage * #3529 Captions/depictions are not saved to Commons - fix test * #3503 Remove Title/Caption From MediaUploadDetail and only use Caption/Description pairs - replace title with the first MediaDetail * #3503 Remove Title/Caption From MediaUploadDetail and only use Caption/Description pairs - restore button disabling * #3503 Remove Title/Caption From MediaUploadDetail and only use Caption/Description pairs - fix nearby place
1 parent 23b8c2e commit dec68ed

11 files changed

+40
-160
lines changed

app/src/main/java/fr/free/nrw/commons/OkHttpConnectionFactory.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import androidx.annotation.NonNull;
44

5+
import okhttp3.logging.HttpLoggingInterceptor.Level;
56
import org.wikipedia.dataclient.SharedPreferenceCookieManager;
67
import org.wikipedia.dataclient.okhttp.HttpStatusException;
78

@@ -40,7 +41,7 @@ private static OkHttpClient createClient() {
4041

4142
private static HttpLoggingInterceptor getLoggingInterceptor() {
4243
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor()
43-
.setLevel(HttpLoggingInterceptor.Level.BASIC);
44+
.setLevel(BuildConfig.DEBUG ? Level.BODY: Level.BASIC);
4445

4546
httpLoggingInterceptor.redactHeader("Authorization");
4647
httpLoggingInterceptor.redactHeader("Cookie");

app/src/main/java/fr/free/nrw/commons/di/NetworkingModule.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public HttpLoggingInterceptor provideHttpLoggingInterceptor() {
7171
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(message -> {
7272
Timber.tag("OkHttp").v(message);
7373
});
74-
httpLoggingInterceptor.level(BuildConfig.DEBUG ? Level.BODY: HttpLoggingInterceptor.Level.BASIC);
74+
httpLoggingInterceptor.level(BuildConfig.DEBUG ? Level.BODY: Level.BASIC);
7575
return httpLoggingInterceptor;
7676
}
7777

app/src/main/java/fr/free/nrw/commons/upload/Title.kt

-29
This file was deleted.

app/src/main/java/fr/free/nrw/commons/upload/UploadMediaDetailAdapter.java

+8-4
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
6262

6363
@Override
6464
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
65-
holder.init(position);
65+
holder.bind(position);
6666
}
6767

6868
@Override
@@ -102,14 +102,18 @@ public ViewHolder(View itemView) {
102102
Timber.i("descItemEditText:" + descItemEditText);
103103
}
104104

105-
public void init(int position) {
105+
public void bind(int position) {
106106
UploadMediaDetail uploadMediaDetail = uploadMediaDetails.get(position);
107107
Timber.d("UploadMediaDetail is " + uploadMediaDetail);
108108
captionItemEditText.setText(uploadMediaDetail.getCaptionText());
109109
descItemEditText.setText(uploadMediaDetail.getDescriptionText());
110110

111111
captionItemEditText.addTextChangedListener(new AbstractTextWatcher(
112-
value -> eventListener.onEvent(value.length() != 0)) );
112+
value -> {
113+
if (position == 0) {
114+
eventListener.onPrimaryCaptionTextChange(value.length() != 0);
115+
}
116+
}));
113117

114118
if (position == 0) {
115119
captionItemEditText.setCompoundDrawablesWithIntrinsicBounds(null, null, getInfoIcon(),
@@ -231,7 +235,7 @@ public interface Callback {
231235
}
232236

233237
public interface EventListener {
234-
void onEvent(Boolean data);
238+
void onPrimaryCaptionTextChange(boolean isNotEmpty);
235239
}
236240

237241
/**

app/src/main/java/fr/free/nrw/commons/upload/UploadModel.java

-14
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ private UploadItem createAndAddUploadItem(final UploadableFile uploadableFile,
119119
uploadableFile.getMimeType(context), source, imageCoordinates, place, fileCreatedDate,
120120
createdTimestampSource);
121121
if (place != null) {
122-
uploadItem.title.setTitleText(place.name);
123122
uploadItem.getUploadMediaDetails().set(0, new UploadMediaDetail(place));
124123
}
125124
if (!items.contains(uploadItem)) {
@@ -207,7 +206,6 @@ public List<UploadItem> getItems() {
207206
public void updateUploadItem(final int index, final UploadItem uploadItem) {
208207
final UploadItem uploadItem1 = items.get(index);
209208
uploadItem1.setMediaDetails(uploadItem.uploadMediaDetails);
210-
uploadItem1.setTitle(uploadItem.title);
211209
}
212210

213211
public void setSelectedDepictions(final List<String> selectedDepictions) {
@@ -232,7 +230,6 @@ public static class UploadItem {
232230
private final String mimeType;
233231
private final String source;
234232
private ImageCoordinates gpsCoords;
235-
private Title title;
236233
private List<UploadMediaDetail> uploadMediaDetails;
237234
private final Place place;
238235
private final long createdTimestamp;
@@ -246,8 +243,6 @@ public static class UploadItem {
246243
final String createdTimestampSource) {
247244
this.originalContentUri = originalContentUri;
248245
this.createdTimestampSource = createdTimestampSource;
249-
title = new Title();
250-
uploadMediaDetails = Collections.singletonList(new UploadMediaDetail());
251246
uploadMediaDetails = new ArrayList<>(Arrays.asList(new UploadMediaDetail()));
252247
this.place = place;
253248
this.mediaUri = mediaUri;
@@ -278,10 +273,6 @@ public long getCreatedTimestamp() {
278273
return createdTimestamp;
279274
}
280275

281-
public Title getTitle() {
282-
return title;
283-
}
284-
285276
public Uri getMediaUri() {
286277
return mediaUri;
287278
}
@@ -298,11 +289,6 @@ public Place getPlace() {
298289
return place;
299290
}
300291

301-
public void setTitle(final Title title) {
302-
this.title = title;
303-
}
304-
305-
306292
public void setMediaDetails(final List<UploadMediaDetail> uploadMediaDetails) {
307293
this.uploadMediaDetails = uploadMediaDetails;
308294
}

app/src/main/java/fr/free/nrw/commons/upload/categories/CategoriesPresenter.java

+16-17
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
11
package fr.free.nrw.commons.upload.categories;
22

3-
import android.text.TextUtils;
4-
5-
import java.lang.reflect.Proxy;
6-
import java.util.ArrayList;
7-
import java.util.List;
8-
9-
import javax.inject.Inject;
10-
import javax.inject.Named;
11-
import javax.inject.Singleton;
3+
import static fr.free.nrw.commons.di.CommonsApplicationModule.IO_THREAD;
4+
import static fr.free.nrw.commons.di.CommonsApplicationModule.MAIN_THREAD;
125

6+
import android.text.TextUtils;
137
import fr.free.nrw.commons.R;
148
import fr.free.nrw.commons.category.CategoryItem;
159
import fr.free.nrw.commons.repository.UploadRepository;
@@ -18,11 +12,14 @@
1812
import io.reactivex.Scheduler;
1913
import io.reactivex.disposables.CompositeDisposable;
2014
import io.reactivex.disposables.Disposable;
15+
import java.lang.reflect.Proxy;
16+
import java.util.ArrayList;
17+
import java.util.List;
18+
import javax.inject.Inject;
19+
import javax.inject.Named;
20+
import javax.inject.Singleton;
2121
import timber.log.Timber;
2222

23-
import static fr.free.nrw.commons.di.CommonsApplicationModule.IO_THREAD;
24-
import static fr.free.nrw.commons.di.CommonsApplicationModule.MAIN_THREAD;
25-
2623
/**
2724
* The presenter class for UploadCategoriesFragment
2825
*/
@@ -86,9 +83,10 @@ public void searchForCategories(String query) {
8683
)
8784
.filter(categoryItem -> !repository.containsYear(categoryItem.getName()))
8885
.distinct();
89-
if(!TextUtils.isEmpty(query)) {
90-
distinctCategoriesObservable=distinctCategoriesObservable.sorted(repository.sortBySimilarity(query));
91-
}
86+
87+
if(!TextUtils.isEmpty(query)) {
88+
distinctCategoriesObservable=distinctCategoriesObservable.sorted(repository.sortBySimilarity(query));
89+
}
9290
Disposable searchCategoriesDisposable = distinctCategoriesObservable
9391
.observeOn(mainThreadScheduler)
9492
.subscribe(
@@ -114,8 +112,9 @@ public void searchForCategories(String query) {
114112
private List<String> getImageTitleList() {
115113
List<String> titleList = new ArrayList<>();
116114
for (UploadItem item : repository.getUploads()) {
117-
if (item.getTitle().isSet()) {
118-
titleList.add(item.getTitle().toString());
115+
final String captionText = item.getUploadMediaDetails().get(0).getCaptionText();
116+
if (!TextUtils.isEmpty(captionText)) {
117+
titleList.add(captionText);
119118
}
120119
}
121120
return titleList;

app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java

+7-66
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,10 @@
33
import static fr.free.nrw.commons.utils.ImageUtils.getErrorMessageForResult;
44

55
import android.annotation.SuppressLint;
6-
import android.content.Context;
76
import android.os.Bundle;
8-
import android.text.TextUtils;
9-
import android.util.DisplayMetrics;
107
import android.view.LayoutInflater;
11-
import android.view.MotionEvent;
128
import android.view.View;
139
import android.view.ViewGroup;
14-
import android.widget.EditText;
1510
import android.widget.LinearLayout;
1611
import android.widget.TextView;
1712
import androidx.annotation.NonNull;
@@ -24,7 +19,6 @@
2419
import butterknife.ButterKnife;
2520
import butterknife.OnClick;
2621
import com.github.chrisbanes.photoview.PhotoView;
27-
import com.jakewharton.rxbinding2.widget.RxTextView;
2822
import fr.free.nrw.commons.R;
2923
import fr.free.nrw.commons.Utils;
3024
import fr.free.nrw.commons.filepicker.UploadableFile;
@@ -34,7 +28,6 @@
3428
import fr.free.nrw.commons.settings.Prefs;
3529
import fr.free.nrw.commons.upload.ImageCoordinates;
3630
import fr.free.nrw.commons.upload.SimilarImageDialogFragment;
37-
import fr.free.nrw.commons.upload.Title;
3831
import fr.free.nrw.commons.upload.UploadBaseFragment;
3932
import fr.free.nrw.commons.upload.UploadMediaDetail;
4033
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter;
@@ -43,7 +36,6 @@
4336
import fr.free.nrw.commons.utils.DialogUtil;
4437
import fr.free.nrw.commons.utils.ImageUtils;
4538
import fr.free.nrw.commons.utils.ViewUtil;
46-
import io.reactivex.disposables.Disposable;
4739
import java.util.ArrayList;
4840
import java.util.Arrays;
4941
import java.util.List;
@@ -66,8 +58,6 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
6658
AppCompatImageButton ibExpandCollapse;
6759
@BindView(R.id.ll_container_media_detail)
6860
LinearLayout llContainerMediaDetail;
69-
@BindView(R.id.et_title)
70-
EditText etTitle;
7161
@BindView(R.id.rv_descriptions)
7262
RecyclerView rvDescriptions;
7363
@BindView(R.id.backgroundImage)
@@ -94,7 +84,6 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
9484
private String source;
9585
private Place place;
9686

97-
private Title title;
9887
private boolean isExpanded = true;
9988

10089
private UploadMediaDetailFragmentCallback callback;
@@ -131,24 +120,8 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
131120
private void init() {
132121
tvTitle.setText(getString(R.string.step_count, callback.getIndexInViewFlipper(this) + 1,
133122
callback.getTotalNumberOfSteps()));
134-
title = new Title();
135123
initRecyclerView();
136124
initPresenter();
137-
Disposable disposable = RxTextView.textChanges(etTitle)
138-
.subscribe(text -> {
139-
if (!TextUtils.isEmpty(text)) {
140-
btnNext.setEnabled(true);
141-
btnNext.setClickable(true);
142-
btnNext.setAlpha(1.0f);
143-
title.setTitleText(text.toString());
144-
uploadItem.setTitle(title);
145-
} else {
146-
btnNext.setAlpha(0.5f);
147-
btnNext.setEnabled(false);
148-
btnNext.setClickable(false);
149-
}
150-
});
151-
compositeDisposable.add(disposable);
152125
presenter.receiveImage(uploadableFile, source, place);
153126

154127
if (callback.getIndexInViewFlipper(this) == 0) {
@@ -168,36 +141,6 @@ private void init() {
168141

169142
attachImageViewScaleChangeListener();
170143

171-
addEtTitleTouchListener();
172-
}
173-
174-
/**
175-
* Handles the drawable click listener for Edit Text
176-
*/
177-
private void addEtTitleTouchListener() {
178-
etTitle.setOnTouchListener((v, event) -> {
179-
//2 is for drawable right
180-
float twelveDpInPixels = convertDpToPixel(12, getContext());
181-
if (event.getAction() == MotionEvent.ACTION_UP && etTitle.getCompoundDrawables() != null
182-
&& etTitle.getCompoundDrawables().length > 2 && etTitle
183-
.getCompoundDrawables()[2].getBounds()
184-
.contains((int) (etTitle.getWidth() - (event.getX() + twelveDpInPixels)),
185-
(int) (event.getY() - twelveDpInPixels))) {
186-
showInfoAlert(R.string.media_detail_title, R.string.title_info);
187-
return true;
188-
}
189-
return false;
190-
});
191-
}
192-
193-
/**
194-
* converts dp to pixel
195-
* @param dp
196-
* @param context
197-
* @return
198-
*/
199-
private float convertDpToPixel(float dp, Context context) {
200-
return dp * ((float) context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);
201144
}
202145

203146
/**
@@ -224,7 +167,7 @@ private void initPresenter() {
224167
private void initRecyclerView() {
225168
uploadMediaDetailAdapter = new UploadMediaDetailAdapter(defaultKvStore.getString(Prefs.KEY_LANGUAGE_VALUE, ""));
226169
uploadMediaDetailAdapter.setCallback(this::showInfoAlert);
227-
uploadMediaDetailAdapter.setEventListener(this::onEvent);
170+
uploadMediaDetailAdapter.setEventListener(this);
228171
rvDescriptions.setLayoutManager(new LinearLayoutManager(getContext()));
229172
rvDescriptions.setAdapter(uploadMediaDetailAdapter);
230173
}
@@ -301,8 +244,7 @@ public void onNearbyPlaceFound(UploadItem uploadItem, Place place) {
301244
getString(R.string.upload_nearby_place_found_description),
302245
place.getName()),
303246
() -> {
304-
etTitle.setText(place.getName());
305-
descriptions = new ArrayList<>(Arrays.asList(new UploadMediaDetail()));
247+
descriptions = new ArrayList<>(Arrays.asList(new UploadMediaDetail(place)));
306248
setDescriptionsInAdapter(descriptions);
307249
},
308250
() -> {
@@ -368,8 +310,7 @@ public void showBadImagePopup(Integer errorCode) {
368310
}
369311

370312
@Override
371-
public void setTitleAndDescription(String title, List<UploadMediaDetail> uploadMediaDetails) {
372-
etTitle.setText(title);
313+
public void setCaptionsAndDescriptions(List<UploadMediaDetail> uploadMediaDetails) {
373314
setDescriptionsInAdapter(uploadMediaDetails);
374315
}
375316

@@ -405,10 +346,10 @@ private void expandCollapseLlMediaDetail(boolean shouldExpand){
405346
}
406347

407348
@Override
408-
public void onEvent(Boolean data) {
409-
btnNext.setEnabled(data);
410-
btnNext.setClickable(data);
411-
btnNext.setAlpha(data ? 1.0f: 0.5f);
349+
public void onPrimaryCaptionTextChange(boolean isNotEmpty) {
350+
btnNext.setEnabled(isNotEmpty);
351+
btnNext.setClickable(isNotEmpty);
352+
btnNext.setAlpha(isNotEmpty ? 1.0f: 0.5f);
412353
}
413354

414355

app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailsContract.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ interface View extends SimilarImageInterface {
3636

3737
void showMapWithImageCoordinates(boolean shouldShow);
3838

39-
void setTitleAndDescription(String title, List<UploadMediaDetail> uploadMediaDetails);
39+
void setCaptionsAndDescriptions(List<UploadMediaDetail> uploadMediaDetails);
4040
}
4141

4242
interface UserActionListener extends BasePresenter<View> {

app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public void setUploadItem(int index, UploadItem uploadItem) {
151151
public void fetchPreviousTitleAndDescription(int indexInViewFlipper) {
152152
UploadItem previousUploadItem = repository.getPreviousUploadItem(indexInViewFlipper);
153153
if (null != previousUploadItem) {
154-
view.setTitleAndDescription(previousUploadItem.getTitle().getTitleText(), previousUploadItem.getUploadMediaDetails());
154+
view.setCaptionsAndDescriptions(previousUploadItem.getUploadMediaDetails());
155155
} else {
156156
view.showMessage(R.string.previous_image_title_description_not_found, R.color.color_error);
157157
}

0 commit comments

Comments
 (0)