Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 16 additions & 10 deletions app/src/main/java/fr/free/nrw/commons/upload/UploadService.java
Original file line number Diff line number Diff line change
Expand Up @@ -287,29 +287,35 @@ private void onUpload(Contribution contribution, String notificationTag,
showFailedNotification(contribution);
} else {
String canonicalFilename = "File:" + uploadResult.getFilename();
final String wikiDataEntityId = contribution.getWikiDataEntityId();
Timber.d("Contribution upload success. Initiating Wikidata edit for entity id %s",
contribution.getWikiDataEntityId());
wikiDataEntityId);
// to perform upload of depictions we pass on depiction entityId of the selected depictions to the wikidataEditService
final String p18Value = contribution.getP18Value();
final String wikiItemName = contribution.getWikiItemName();
if (contribution.getDepictionsEntityIds() != null) {
for (String depictionEntityId : contribution.getDepictionsEntityIds()) {
wikidataEditService.createClaimWithLogging(depictionEntityId, canonicalFilename,
p18Value);
wikidataEditService.createClaimWithLogging(depictionEntityId,
wikiItemName, canonicalFilename, p18Value);
}
}
wikidataEditService.createClaimWithLogging(contribution.getWikiDataEntityId(), canonicalFilename,
p18Value);
Timber.d("Contribution upload success. Initiating Wikidata edit for"
+ " entity id %s if necessary (if P18 is null). P18 value is %s",
wikiDataEntityId, p18Value);
wikidataEditService.createClaimWithLogging(
wikiDataEntityId, wikiItemName, canonicalFilename,p18Value);

wikidataEditService.createLabelforWikidataEntity(canonicalFilename, contribution.getCaptions());
contribution.setFilename(canonicalFilename);
contribution.setImageUrl(uploadResult.getImageinfo().getOriginalUrl());
contribution.setState(Contribution.STATE_COMPLETED);
contribution.setDateUploaded(CommonsDateUtil.getIso8601DateFormatShort()
.parse(uploadResult.getImageinfo().getTimestamp()));
.parse(uploadResult.getImageinfo().getTimestamp()));
compositeDisposable.add(contributionDao
.save(contribution)
.subscribeOn(ioThreadScheduler)
.observeOn(mainThreadScheduler)
.subscribe());
.save(contribution)
.subscribeOn(ioThreadScheduler)
.observeOn(mainThreadScheduler)
.subscribe());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,7 @@ public WikidataEditService(final Context context,
* @param fileName name of the file we will upload
* @param p18Value pic attribute of Wikidata item
*/
public void createClaimWithLogging(
final String wikidataEntityId, final String fileName, @NonNull final String p18Value) {
public void createClaimWithLogging(String wikidataEntityId, String wikiItemName, String fileName, @NonNull String p18Value) {
if (wikidataEntityId == null) {
Timber.d("Skipping creation of claim as Wikidata entity ID is null");
return;
Expand All @@ -92,7 +91,7 @@ public void createClaimWithLogging(
return;
}

editWikidataProperty(wikidataEntityId, fileName);
editWikidataProperty(wikidataEntityId, wikiItemName, fileName);;
editWikiBaseDepictsProperty(wikidataEntityId, fileName);
}

Expand All @@ -106,7 +105,7 @@ public void createClaimWithLogging(
* @param fileName
*/
@SuppressLint("CheckResult")
private void editWikidataProperty(final String wikidataEntityId, final String fileName) {
private void editWikidataProperty(String wikidataEntityId, String wikiItemName, String fileName) {
Timber.d("Upload successful with wiki data entity id as %s", wikidataEntityId);
Timber.d("Attempting to edit Wikidata property %s", wikidataEntityId);

Expand Down Expand Up @@ -202,7 +201,7 @@ private void addDepictsProperty(String entityId, final String fileEntityId) {
});
}

private void handleClaimResult(final String wikidataEntityId, final String revisionId) {
private void handleClaimResult(String wikidataEntityId, String wikiItemName, String revisionId) {
if (revisionId != null) {
if (wikidataEditListener != null) {
wikidataEditListener.onSuccessfulWikidataEdit();
Expand All @@ -218,10 +217,9 @@ private void handleClaimResult(final String wikidataEntityId, final String revis
/**
* Show a success toast when the edit is made successfully
*/
private void showSuccessToast() {
final String caption = directKvStore.getString("Title", "");
final String successStringTemplate = context.getString(R.string.successful_wikidata_edit);
@SuppressLint({"StringFormatInvalid", "LocalSuppress"}) final String successMessage = String.format(Locale.getDefault(), successStringTemplate, caption);
private void showSuccessToast(String wikiItemName) {
String successStringTemplate = context.getString(R.string.successful_wikidata_edit);
String successMessage = String.format(Locale.getDefault(), successStringTemplate, wikiItemName);
ViewUtil.showLongToast(context, successMessage);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,27 +39,27 @@ class WikidataEditServiceTest {

@Test
fun noClaimsWhenEntityIdIsNull() {
wikidataEditService.createClaimWithLogging(null, "Test.jpg", "")
wikidataEditService.createClaimWithLogging(null, null,"Test.jpg","")
verifyZeroInteractions(wikidataClient)
}

@Test
fun noClaimsWhenFileNameIsNull() {
wikidataEditService.createClaimWithLogging("Q1", null, "")
wikidataEditService.createClaimWithLogging("Q1", "Test", null,"")
verifyZeroInteractions(wikidataClient)
}

@Test
fun noClaimsWhenP18IsNotEmpty() {
wikidataEditService.createClaimWithLogging("Q1", "Test.jpg", "Previous.jpg")
wikidataEditService.createClaimWithLogging("Q1", "Test","Test.jpg","Previous.jpg")
verifyZeroInteractions(wikidataClient)
}

@Test
fun noClaimsWhenLocationIsNotCorrect() {
whenever(directKvStore.getBoolean("Picture_Has_Correct_Location", true))
.thenReturn(false)
wikidataEditService.createClaimWithLogging("Q1", "Test.jpg", "")
wikidataEditService.createClaimWithLogging("Q1", "", "Test.jpg", "")
verifyZeroInteractions(wikidataClient)
}

Expand All @@ -72,7 +72,7 @@ class WikidataEditServiceTest {
whenever(wikidataClient.addEditTag(anyLong(), anyString(), anyString()))
.thenReturn(Observable.just(mock(AddEditTagResponse::class.java)))
whenever(wikibaseClient.getFileEntityId(any())).thenReturn(Observable.just(1L))
wikidataEditService.createClaimWithLogging("Q1", "Test.jpg", "")
wikidataEditService.createClaimWithLogging("Q1", "", "Test.jpg", "")
verify(wikidataClient, times(1)).createClaim(anyString(), anyString())
}
}