Skip to content

Commit dc4d5ff

Browse files
author
maskara
committed
Fix display of similar image fragment
1 parent 777f9cd commit dc4d5ff

File tree

5 files changed

+31
-18
lines changed

5 files changed

+31
-18
lines changed

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

+5-9
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,14 @@ public class FileProcessor implements SimilarImageDialogFragment.onResponse {
7070
/**
7171
* Processes file coordinates, either from EXIF data or user location
7272
*/
73-
GPSExtractor processFileCoordinates() {
73+
GPSExtractor processFileCoordinates(SimilarImageInterface similarImageInterface) {
7474
Timber.d("Calling GPSExtractor");
7575
imageObj = new GPSExtractor(exifInterface);
7676
decimalCoords = imageObj.getCoords();
7777
if (decimalCoords == null || !imageObj.imageCoordsExists) {
7878
//Find other photos taken around the same time which has gps coordinates
7979
if (!haveCheckedForOtherImages)
80-
findOtherImages();// Do not do repeat the process
80+
findOtherImages(similarImageInterface);// Do not do repeat the process
8181
} else {
8282
useImageCoords();
8383
}
@@ -91,8 +91,9 @@ String getDecimalCoords() {
9191

9292
/**
9393
* Find other images around the same location that were taken within the last 20 sec
94+
* @param similarImageInterface
9495
*/
95-
private void findOtherImages() {
96+
private void findOtherImages(SimilarImageInterface similarImageInterface) {
9697
Timber.d("filePath" + filePath);
9798

9899
long timeOfCreation = new File(filePath).lastModified();//Time when the original image was created
@@ -127,12 +128,7 @@ private void findOtherImages() {
127128
if (tempImageObj.getCoords() != null && tempImageObj.imageCoordsExists) {
128129
// Current image has gps coordinates and it's not current gps locaiton
129130
Timber.d("This file has image coords:" + file.getAbsolutePath());
130-
SimilarImageDialogFragment newFragment = new SimilarImageDialogFragment();
131-
Bundle args = new Bundle();
132-
args.putString("originalImagePath", filePath);
133-
args.putString("possibleImagePath", file.getAbsolutePath());
134-
newFragment.setArguments(args);
135-
newFragment.show(((AppCompatActivity) context).getSupportFragmentManager(), "dialog");
131+
similarImageInterface.showSimilarImageFragment(filePath, file.getAbsolutePath());
136132
break;
137133
}
138134
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package fr.free.nrw.commons.upload;
2+
3+
public interface SimilarImageInterface {
4+
void showSimilarImageFragment(String originalFilePath, String possibleFilePath);
5+
}

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

+11-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464

6565
import static fr.free.nrw.commons.wikidata.WikidataConstants.WIKIDATA_ENTITY_ID_PREF;
6666

67-
public class UploadActivity extends AuthenticatedActivity implements UploadView {
67+
public class UploadActivity extends AuthenticatedActivity implements UploadView, SimilarImageInterface {
6868
@Inject InputMethodManager inputMethodManager;
6969
@Inject MediaWikiApi mwApi;
7070
@Inject @Named("direct_nearby_upload_prefs") SharedPreferences directPrefs;
@@ -613,4 +613,14 @@ private void showInfoAlert(int titleStringID, int messageStringId, String... for
613613
.create()
614614
.show();
615615
}
616+
617+
@Override
618+
public void showSimilarImageFragment(String originalFilePath, String possibleFilePath) {
619+
SimilarImageDialogFragment newFragment = new SimilarImageDialogFragment();
620+
Bundle args = new Bundle();
621+
args.putString("originalImagePath", originalFilePath);
622+
args.putString("possibleImagePath", possibleFilePath);
623+
newFragment.setArguments(args);
624+
newFragment.show(getSupportFragmentManager(), "dialog");
625+
}
616626
}

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

+4-4
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,14 @@ public boolean isDummy() {
7777
}
7878

7979
@SuppressLint("CheckResult")
80-
public void receive(List<Uri> mediaUri, String mimeType, String source) {
80+
public void receive(List<Uri> mediaUri, String mimeType, String source, SimilarImageInterface similarImageInterface) {
8181
currentStepIndex = 0;
8282
Observable<UploadItem> itemObservable = Observable.fromIterable(mediaUri)
8383
.map(this::cacheFileUpload)
8484
.map(filePath -> {
8585
Uri uri = Uri.fromFile(new File(filePath));
8686
FileProcessor fp = new FileProcessor(filePath, context.getContentResolver(), context);
87-
UploadItem item = new UploadItem(uri, mimeType, source, fp.processFileCoordinates(),
87+
UploadItem item = new UploadItem(uri, mimeType, source, fp.processFileCoordinates(similarImageInterface),
8888
FileUtils.getFileExt(filePath), null);
8989
Single.zip(
9090
Single.fromCallable(() ->
@@ -107,13 +107,13 @@ public void receive(List<Uri> mediaUri, String mimeType, String source) {
107107
}
108108

109109
@SuppressLint("CheckResult")
110-
public void receiveDirect(Uri media, String mimeType, String source, String wikidataEntityIdPref, String title, String desc) {
110+
public void receiveDirect(Uri media, String mimeType, String source, String wikidataEntityIdPref, String title, String desc, SimilarImageInterface similarImageInterface) {
111111
currentStepIndex = 0;
112112
items = new ArrayList<>();
113113
String filePath = this.cacheFileUpload(media);
114114
Uri uri = Uri.fromFile(new File(filePath));
115115
FileProcessor fp = new FileProcessor(filePath, context.getContentResolver(), context);
116-
UploadItem item = new UploadItem(uri, mimeType, source, fp.processFileCoordinates(),
116+
UploadItem item = new UploadItem(uri, mimeType, source, fp.processFileCoordinates(similarImageInterface),
117117
FileUtils.getFileExt(filePath), wikidataEntityIdPref);
118118
item.title.setTitleText(title);
119119
item.descriptions.get(0).setDescriptionText(desc);

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

+6-4
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,14 @@ public class UploadPresenter {
4242
private final UploadController uploadController;
4343
private final MediaWikiApi mediaWikiApi;
4444

45-
private CompositeDisposable compositeDisposable;
46-
4745
private static final UploadView DUMMY = (UploadView) Proxy.newProxyInstance(UploadView.class.getClassLoader(),
4846
new Class[]{UploadView.class}, (proxy, method, methodArgs) -> null);
4947
private UploadView view = DUMMY;
5048

49+
private static final SimilarImageInterface SIMILAR_IMAGE = (SimilarImageInterface) Proxy.newProxyInstance(SimilarImageInterface.class.getClassLoader(),
50+
new Class[]{SimilarImageInterface.class}, (proxy, method, methodArgs) -> null);
51+
private SimilarImageInterface similarImageInterface = SIMILAR_IMAGE;
52+
5153
@UploadView.UploadPage int currentPage = UploadView.PLEASE_WAIT;
5254

5355

@@ -73,7 +75,7 @@ public void receive(Uri mediaUri, String mimeType, String source) {
7375
*/
7476
@SuppressLint("CheckResult")
7577
public void receive(List<Uri> media, String mimeType, @Contribution.FileSource String source) {
76-
Completable.fromRunnable(() -> uploadModel.receive(media, mimeType, source))
78+
Completable.fromRunnable(() -> uploadModel.receive(media, mimeType, source, similarImageInterface))
7779
.subscribeOn(Schedulers.io())
7880
.observeOn(AndroidSchedulers.mainThread())
7981
.subscribe(() -> {
@@ -94,7 +96,7 @@ public void receive(List<Uri> media, String mimeType, @Contribution.FileSource S
9496
*/
9597
@SuppressLint("CheckResult")
9698
public void receiveDirect(Uri media, String mimeType, @Contribution.FileSource String source, String wikidataEntityIdPref, String title, String desc) {
97-
Completable.fromRunnable(() -> uploadModel.receiveDirect(media, mimeType, source, wikidataEntityIdPref, title, desc))
99+
Completable.fromRunnable(() -> uploadModel.receiveDirect(media, mimeType, source, wikidataEntityIdPref, title, desc, similarImageInterface))
98100
.subscribeOn(Schedulers.io())
99101
.observeOn(AndroidSchedulers.mainThread())
100102
.subscribe(() -> {

0 commit comments

Comments
 (0)