From e60037300acf52728d8f31811bc14192f4b0e033 Mon Sep 17 00:00:00 2001 From: Sujal-Gupta-SG Date: Thu, 30 Jan 2025 13:36:38 +0530 Subject: [PATCH] Some correction in the code --- .../nrw/commons/upload/worker/UploadWorker.kt | 2 +- .../nrw/commons/wikidata/WikiBaseClient.kt | 155 +++++++++--------- .../commons/wikidata/WikidataEditService.kt | 25 +-- 3 files changed, 87 insertions(+), 95 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt b/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt index e45d3f7ba..f425fe78f 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/worker/UploadWorker.kt @@ -481,7 +481,7 @@ class UploadWorker( contribution.media.captions, ) - if (revisionID != null) { + if (null != revisionID) { withContext(Dispatchers.IO) { // Fetch and update place details val place = placesRepository.fetchPlace(wikiDataPlace.id) diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikiBaseClient.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/WikiBaseClient.kt index 0d8a0b33b..bf2ec672f 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikiBaseClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikiBaseClient.kt @@ -17,84 +17,83 @@ import javax.inject.Singleton */ @Singleton class WikiBaseClient - @Inject - constructor( - private val wikiBaseInterface: WikiBaseInterface, - @param:Named(NetworkingModule.NAMED_COMMONS_CSRF) private val csrfTokenClient: CsrfTokenClient, - ) { - fun postEditEntity( - fileEntityId: String?, - data: String?, - ): Observable = - csrfToken().switchMap { editToken -> - wikiBaseInterface - .postEditEntity(fileEntityId!!, editToken, data!!) - .map { response: MwPostResponse -> response.successVal == 1 } - } - - /** - * Makes the server call for posting new depicts - * - * @param filename name of the file - * @param data data of the depicts to be uploaded - * @return Observable - */ - fun postEditEntityByFilename( - filename: String?, - data: String?, - ): Observable = - csrfToken().switchMap { editToken -> - wikiBaseInterface - .postEditEntityByFilename(filename!!, editToken, data!!) - .map { response: MwPostResponse -> response.successVal == 1 } - } - - fun getClaimIdsByProperty( - fileEntityId: String, - property: String, - ): Observable> = - wikiBaseInterface.getClaimsByProperty(fileEntityId, property).map { claimsResponse -> - claimsResponse.claims[property]?.mapNotNull { claim -> claim.id } ?: emptyList() - } - - fun postDeleteClaims( - entityId: String, - data: String?, - ): Observable = - csrfToken().switchMap { editToken -> - wikiBaseInterface - .postDeleteClaims(editToken, entityId, data!!) - .map { response: MwPostResponse -> response.successVal == 1 } - } - - fun getFileEntityId(uploadResult: UploadResult): Observable = +@Inject +constructor( + private val wikiBaseInterface: WikiBaseInterface, + @param:Named(NetworkingModule.NAMED_COMMONS_CSRF) private val csrfTokenClient: CsrfTokenClient, +) { + fun postEditEntity( + fileEntityId: String?, + data: String?, + ): Observable = + csrfToken().switchMap { editToken -> wikiBaseInterface - .getFileEntityId(uploadResult.createCanonicalFileName()) - .map { response: MwQueryResponse -> - response - .query()!! - .pages()!![0] - .pageId() - .toLong() - } - - fun addLabelsToWikidata( - fileEntityId: Long, - languageCode: String?, - captionValue: String? - ): Observable { - return csrfToken().switchMap { editToken -> - wikiBaseInterface.addLabelstoWikidata( - PAGE_ID_PREFIX + fileEntityId, - editToken, - languageCode, - captionValue - ) - } + .postEditEntity(fileEntityId!!, editToken, data!!) + .map { response: MwPostResponse -> response.successVal == 1 } } - private fun csrfToken(): Observable = - Observable.fromCallable { - csrfTokenClient.getTokenBlocking() - } - } + /** + * Makes the server call for posting new depicts + * + * @param filename name of the file + * @param data data of the depicts to be uploaded + * @return Observable + */ + fun postEditEntityByFilename( + filename: String?, + data: String?, + ): Observable = + csrfToken().switchMap { editToken -> + wikiBaseInterface + .postEditEntityByFilename(filename!!, editToken, data!!) + .map { response: MwPostResponse -> response.successVal == 1 } + } + + fun getClaimIdsByProperty( + fileEntityId: String, + property: String, + ): Observable> = + wikiBaseInterface.getClaimsByProperty(fileEntityId, property).map { claimsResponse -> + claimsResponse.claims[property]?.mapNotNull { claim -> claim.id } ?: emptyList() + } + + fun postDeleteClaims( + entityId: String, + data: String?, + ): Observable = + csrfToken().switchMap { editToken -> + wikiBaseInterface + .postDeleteClaims(editToken, entityId, data!!) + .map { response: MwPostResponse -> response.successVal == 1 } + } + + fun getFileEntityId(uploadResult: UploadResult): Observable = + wikiBaseInterface + .getFileEntityId(uploadResult.createCanonicalFileName()) + .map { response: MwQueryResponse -> + response + .query()!! + .pages()!![0] + .pageId() + .toLong() + } + + fun addLabelsToWikidata( + fileEntityId: Long, + languageCode: String?, + captionValue: String?, + ): Observable = + csrfToken().switchMap { editToken -> + wikiBaseInterface.addLabelstoWikidata( + PAGE_ID_PREFIX + fileEntityId, + editToken, + languageCode, + captionValue, + ) + } + + private fun csrfToken(): Observable = + Observable.fromCallable { + csrfTokenClient.getTokenBlocking() + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt index 2c17e5784..68576e0d8 100644 --- a/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt +++ b/app/src/main/java/fr/free/nrw/commons/wikidata/WikidataEditService.kt @@ -37,6 +37,7 @@ import javax.inject.Inject import javax.inject.Named import javax.inject.Singleton + /** * This class is meant to handle the Wikidata edits made through the app It will talk with MediaWiki * Apis to make the necessary calls, log the edits and fire listeners on successful edits @@ -54,7 +55,6 @@ class WikidataEditService @Inject constructor( fileEntityId: String, depictedItems: List ): Observable { - val data = EditClaim.from( if (isBetaFlavour) listOf("Q10") else depictedItems, DEPICTS.propertyName ) @@ -79,7 +79,6 @@ class WikidataEditService @Inject constructor( fileEntityId: String?, depictedItems: List ): Observable { - val entityId: String = PAGE_ID_PREFIX + fileEntityId val claimIds = getDepictionsClaimIds(entityId) @@ -164,8 +163,7 @@ class WikidataEditService @Inject constructor( ) return null } - val result = addImageAndMediaLegends(wikidataPlace!!, fileName, captions) - return result + return addImageAndMediaLegends(wikidataPlace!!, fileName, captions) } fun addImageAndMediaLegends( @@ -197,8 +195,7 @@ class WikidataEditService @Inject constructor( ), Arrays.asList(MEDIA_LEGENDS.propertyName) ) - val result = wikidataClient.setClaim(claim, COMMONS_APP_TAG).blockingSingle() - return result + return wikidataClient.setClaim(claim, COMMONS_APP_TAG).blockingSingle() } fun handleImageClaimResult(wikidataItem: WikidataItem, revisionId: Long?) { @@ -242,22 +239,18 @@ class WikidataEditService @Inject constructor( @SuppressLint("NewApi") private fun captionEdits(contribution: Contribution, fileEntityId: Long): Observable { - val result = Observable.fromIterable(contribution.media.captions.entries) + return Observable.fromIterable(contribution.media.captions.entries) .concatMap { addCaption(fileEntityId, it.key, it.value) } - return result } private fun depictionEdits( contribution: Contribution, fileEntityId: Long - ): Observable { - val result = addDepictsProperty(fileEntityId.toString(), buildList { - for ((_, _, _, _, _, _, id) in contribution.depictedItems) { - add(id) - } - }) - return result - } + ): Observable = addDepictsProperty(fileEntityId.toString(), buildList { + for ((_, _, _, _, _, _, id) in contribution.depictedItems) { + add(id) + } + }) companion object { const val COMMONS_APP_TAG: String = "wikimedia-commons-app"