mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
added logging statement
This commit is contained in:
parent
6deb5fac19
commit
ab7eafcfaf
1 changed files with 66 additions and 49 deletions
|
|
@ -302,13 +302,16 @@ class UploadWorker(
|
||||||
*/
|
*/
|
||||||
@SuppressLint("StringFormatInvalid", "CheckResult", "MissingPermission")
|
@SuppressLint("StringFormatInvalid", "CheckResult", "MissingPermission")
|
||||||
private suspend fun uploadContribution(contribution: Contribution) {
|
private suspend fun uploadContribution(contribution: Contribution) {
|
||||||
|
Timber.d("Starting uploadContribution for: ${contribution.media.filename}")
|
||||||
|
|
||||||
if (contribution.localUri == null || contribution.localUri.path == null) {
|
if (contribution.localUri == null || contribution.localUri.path == null) {
|
||||||
Timber.e("""upload: ${contribution.media.filename} failed, file path is null""")
|
Timber.e("upload: ${contribution.media.filename} failed, file path is null")
|
||||||
}
|
}
|
||||||
|
|
||||||
val media = contribution.media
|
val media = contribution.media
|
||||||
val displayTitle = contribution.media.displayTitle
|
val displayTitle = contribution.media.displayTitle
|
||||||
|
|
||||||
|
Timber.d("Setting up notification for: $displayTitle")
|
||||||
currentNotificationTag = contribution.localUri.toString()
|
currentNotificationTag = contribution.localUri.toString()
|
||||||
currentNotificationID =
|
currentNotificationID =
|
||||||
(contribution.localUri.toString() + contribution.media.filename).hashCode()
|
(contribution.localUri.toString() + contribution.media.filename).hashCode()
|
||||||
|
|
@ -329,6 +332,7 @@ class UploadWorker(
|
||||||
)
|
)
|
||||||
|
|
||||||
val filename = media.filename
|
val filename = media.filename
|
||||||
|
Timber.d("Filename for upload: $filename")
|
||||||
|
|
||||||
val notificationProgressUpdater =
|
val notificationProgressUpdater =
|
||||||
NotificationUpdateProgressListener(
|
NotificationUpdateProgressListener(
|
||||||
|
|
@ -340,7 +344,7 @@ class UploadWorker(
|
||||||
)
|
)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Upload the file to stash
|
Timber.d("Uploading file to stash: $filename")
|
||||||
val stashUploadResult =
|
val stashUploadResult =
|
||||||
uploadClient
|
uploadClient
|
||||||
.uploadFileToStash(
|
.uploadFileToStash(
|
||||||
|
|
@ -348,21 +352,23 @@ class UploadWorker(
|
||||||
contribution,
|
contribution,
|
||||||
notificationProgressUpdater,
|
notificationProgressUpdater,
|
||||||
).onErrorReturn {
|
).onErrorReturn {
|
||||||
|
Timber.e("Error during stash upload: ${it.message}")
|
||||||
return@onErrorReturn StashUploadResult(
|
return@onErrorReturn StashUploadResult(
|
||||||
StashUploadState.FAILED,
|
StashUploadState.FAILED,
|
||||||
fileKey = null,
|
fileKey = null,
|
||||||
errorMessage = it.message,
|
errorMessage = it.message,
|
||||||
)
|
)
|
||||||
}.blockingSingle()
|
}.blockingSingle()
|
||||||
|
|
||||||
|
Timber.d("Stash upload state: ${stashUploadResult.state}")
|
||||||
|
|
||||||
when (stashUploadResult.state) {
|
when (stashUploadResult.state) {
|
||||||
StashUploadState.SUCCESS -> {
|
StashUploadState.SUCCESS -> {
|
||||||
// If the stash upload succeeds
|
|
||||||
Timber.d("Upload to stash success for fileName: $filename")
|
Timber.d("Upload to stash success for fileName: $filename")
|
||||||
Timber.d("Ensure uniqueness of filename")
|
Timber.d("Ensuring uniqueness of filename")
|
||||||
val uniqueFileName = findUniqueFileName(filename)
|
val uniqueFileName = findUniqueFileName(filename)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Upload the file from stash
|
Timber.d("Uploading file from stash: $uniqueFileName")
|
||||||
val uploadResult =
|
val uploadResult =
|
||||||
uploadClient
|
uploadClient
|
||||||
.uploadFileFromStash(
|
.uploadFileFromStash(
|
||||||
|
|
@ -370,26 +376,20 @@ class UploadWorker(
|
||||||
uniqueFileName,
|
uniqueFileName,
|
||||||
stashUploadResult.fileKey,
|
stashUploadResult.fileKey,
|
||||||
).onErrorReturn {
|
).onErrorReturn {
|
||||||
|
Timber.e("Error during upload from stash")
|
||||||
return@onErrorReturn null
|
return@onErrorReturn null
|
||||||
}.blockingSingle()
|
}.blockingSingle()
|
||||||
|
|
||||||
if (null != uploadResult && uploadResult.isSuccessful()) {
|
if (uploadResult != null && uploadResult.isSuccessful()) {
|
||||||
Timber.d(
|
Timber.d("Upload from stash successful, proceeding with WikiData edits")
|
||||||
"Stash Upload success..proceeding to make wikidata edit",
|
|
||||||
)
|
|
||||||
|
|
||||||
wikidataEditService
|
wikidataEditService
|
||||||
.addDepictionsAndCaptions(uploadResult, contribution)
|
.addDepictionsAndCaptions(uploadResult, contribution)
|
||||||
.blockingSubscribe()
|
.blockingSubscribe()
|
||||||
if (contribution.wikidataPlace == null) {
|
if (contribution.wikidataPlace == null) {
|
||||||
Timber.d(
|
Timber.d("WikiDataEdit not required, upload success")
|
||||||
"WikiDataEdit not required, upload success",
|
|
||||||
)
|
|
||||||
saveCompletedContribution(contribution, uploadResult)
|
saveCompletedContribution(contribution, uploadResult)
|
||||||
} else {
|
} else {
|
||||||
Timber.d(
|
Timber.d("WikiDataEdit required, making wikidata edit")
|
||||||
"WikiDataEdit required, making wikidata edit",
|
|
||||||
)
|
|
||||||
makeWikiDataEdit(uploadResult, contribution)
|
makeWikiDataEdit(uploadResult, contribution)
|
||||||
}
|
}
|
||||||
showSuccessNotification(contribution)
|
showSuccessNotification(contribution)
|
||||||
|
|
@ -401,8 +401,7 @@ class UploadWorker(
|
||||||
contributionDao.save(contribution).blockingAwait()
|
contributionDao.save(contribution).blockingAwait()
|
||||||
}
|
}
|
||||||
} catch (exception: Exception) {
|
} catch (exception: Exception) {
|
||||||
Timber.e(exception)
|
Timber.e(exception, "Upload from stash failed for contribution: $filename")
|
||||||
Timber.e("Upload from stash failed for contribution : $filename")
|
|
||||||
showFailedNotification(contribution)
|
showFailedNotification(contribution)
|
||||||
contribution.state = Contribution.STATE_FAILED
|
contribution.state = Contribution.STATE_FAILED
|
||||||
contributionDao.saveSynchronous(contribution)
|
contributionDao.saveSynchronous(contribution)
|
||||||
|
|
@ -412,16 +411,17 @@ class UploadWorker(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
StashUploadState.PAUSED -> {
|
StashUploadState.PAUSED -> {
|
||||||
|
Timber.d("Upload paused for: $filename")
|
||||||
showPausedNotification(contribution)
|
showPausedNotification(contribution)
|
||||||
contribution.state = Contribution.STATE_PAUSED
|
contribution.state = Contribution.STATE_PAUSED
|
||||||
contributionDao.saveSynchronous(contribution)
|
contributionDao.saveSynchronous(contribution)
|
||||||
}
|
}
|
||||||
StashUploadState.CANCELLED -> {
|
StashUploadState.CANCELLED -> {
|
||||||
|
Timber.d("Upload cancelled for: $filename")
|
||||||
showCancelledNotification(contribution)
|
showCancelledNotification(contribution)
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
Timber.e("""upload file to stash failed with status: ${stashUploadResult.state}""")
|
Timber.e("Upload to stash failed with status: ${stashUploadResult.state}")
|
||||||
|
|
||||||
contribution.state = Contribution.STATE_FAILED
|
contribution.state = Contribution.STATE_FAILED
|
||||||
contribution.chunkInfo = null
|
contribution.chunkInfo = null
|
||||||
contribution.errorInfo = stashUploadResult.errorMessage
|
contribution.errorInfo = stashUploadResult.errorMessage
|
||||||
|
|
@ -447,8 +447,7 @@ class UploadWorker(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (exception: Exception) {
|
} catch (exception: Exception) {
|
||||||
Timber.e(exception)
|
Timber.e(exception, "Stash upload failed for contribution: $filename")
|
||||||
Timber.e("Stash upload failed for contribution: $filename")
|
|
||||||
showFailedNotification(contribution)
|
showFailedNotification(contribution)
|
||||||
contribution.errorInfo = exception.message
|
contribution.errorInfo = exception.message
|
||||||
contribution.state = Contribution.STATE_FAILED
|
contribution.state = Contribution.STATE_FAILED
|
||||||
|
|
@ -456,6 +455,7 @@ class UploadWorker(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun clearChunks(contribution: Contribution) {
|
private fun clearChunks(contribution: Contribution) {
|
||||||
contribution.chunkInfo = null
|
contribution.chunkInfo = null
|
||||||
contributionDao.saveSynchronous(contribution)
|
contributionDao.saveSynchronous(contribution)
|
||||||
|
|
@ -470,60 +470,72 @@ class UploadWorker(
|
||||||
) {
|
) {
|
||||||
val wikiDataPlace = contribution.wikidataPlace
|
val wikiDataPlace = contribution.wikidataPlace
|
||||||
if (wikiDataPlace != null) {
|
if (wikiDataPlace != null) {
|
||||||
|
Timber.d("Initiating WikiData edit for place: ${wikiDataPlace.name}, File: ${uploadResult.filename}")
|
||||||
|
|
||||||
if (!contribution.hasInvalidLocation()) {
|
if (!contribution.hasInvalidLocation()) {
|
||||||
var revisionID: Long? = null
|
var revisionID: Long? = null
|
||||||
try {
|
try {
|
||||||
revisionID =
|
Timber.d("Creating WikiData claim for place: ${wikiDataPlace.id} with filename: ${uploadResult.filename}")
|
||||||
wikidataEditService.createClaim(
|
revisionID = wikidataEditService.createClaim(
|
||||||
wikiDataPlace,
|
wikiDataPlace,
|
||||||
uploadResult.filename,
|
uploadResult.filename,
|
||||||
contribution.media.captions,
|
contribution.media.captions
|
||||||
)
|
)
|
||||||
if (null != revisionID) {
|
|
||||||
|
if (revisionID != null) {
|
||||||
|
Timber.d("WikiData edit successful with revision ID: $revisionID")
|
||||||
|
|
||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
val place = placesRepository.fetchPlace(wikiDataPlace.id)
|
val place = placesRepository.fetchPlace(wikiDataPlace.id)
|
||||||
place.name = wikiDataPlace.name
|
place.name = wikiDataPlace.name
|
||||||
place.pic = HOME_URL + uploadResult.createCanonicalFileName()
|
place.pic = HOME_URL + uploadResult.createCanonicalFileName()
|
||||||
placesRepository
|
placesRepository.save(place)
|
||||||
.save(place)
|
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.blockingAwait()
|
.blockingAwait()
|
||||||
Timber.d("Updated WikiItem place ${place.name} with image ${place.pic}")
|
|
||||||
|
Timber.d("Updated WikiData place: ${place.name} with new image: ${place.pic}")
|
||||||
}
|
}
|
||||||
showSuccessNotification(contribution)
|
showSuccessNotification(contribution)
|
||||||
}
|
}
|
||||||
} catch (exception: Exception) {
|
} catch (exception: Exception) {
|
||||||
Timber.e(exception)
|
Timber.e(exception, "Error while editing WikiData for place: ${wikiDataPlace.id}")
|
||||||
}
|
}
|
||||||
|
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
wikidataEditService.handleImageClaimResult(
|
Timber.d("Handling WikiData edit result for ${wikiDataPlace.id}")
|
||||||
contribution.wikidataPlace!!,
|
wikidataEditService.handleImageClaimResult(wikiDataPlace, revisionID)
|
||||||
revisionID,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Timber.w("Invalid location detected for WikiData edit, skipping...")
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
wikidataEditService.handleImageClaimResult(
|
wikidataEditService.handleImageClaimResult(wikiDataPlace, null)
|
||||||
contribution.wikidataPlace!!,
|
|
||||||
null,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
Timber.d("No WikiData place associated, skipping WikiData edit.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Timber.d("Saving completed contribution after WikiData edit for file: ${uploadResult.filename}")
|
||||||
saveCompletedContribution(contribution, uploadResult)
|
saveCompletedContribution(contribution, uploadResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save completed contribution details
|
||||||
|
*/
|
||||||
private fun saveCompletedContribution(
|
private fun saveCompletedContribution(
|
||||||
contribution: Contribution,
|
contribution: Contribution,
|
||||||
uploadResult: UploadResult,
|
uploadResult: UploadResult,
|
||||||
) {
|
) {
|
||||||
|
Timber.d("Fetching media details for uploaded file: ${uploadResult.filename}")
|
||||||
|
|
||||||
val contributionFromUpload =
|
val contributionFromUpload =
|
||||||
mediaClient
|
mediaClient.getMedia("File:" + uploadResult.filename)
|
||||||
.getMedia("File:" + uploadResult.filename)
|
.map { media -> contribution.completeWith(media!!) }
|
||||||
.map { media: Media? -> contribution.completeWith(media!!) }
|
|
||||||
.blockingGet()
|
.blockingGet()
|
||||||
|
|
||||||
contributionFromUpload.dateModified = Date()
|
contributionFromUpload.dateModified = Date()
|
||||||
|
|
||||||
|
Timber.d("Saving completed contribution to database for file: ${uploadResult.filename}")
|
||||||
contributionDao.deleteAndSaveContribution(contribution, contributionFromUpload)
|
contributionDao.deleteAndSaveContribution(contribution, contributionFromUpload)
|
||||||
|
|
||||||
// Upload success, save to uploaded status.
|
// Upload success, save to uploaded status.
|
||||||
|
|
@ -531,25 +543,30 @@ class UploadWorker(
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save to uploadedStatusDao.
|
* Save to uploadedStatusDao
|
||||||
*/
|
*/
|
||||||
private fun saveIntoUploadedStatus(contribution: Contribution) {
|
private fun saveIntoUploadedStatus(contribution: Contribution) {
|
||||||
contribution.contentUri?.let {
|
contribution.contentUri?.let {
|
||||||
val imageSha1 = contribution.imageSHA1.toString()
|
val imageSha1 = contribution.imageSHA1.toString()
|
||||||
val modifiedSha1 = fileUtilsWrapper.getSHA1(fileUtilsWrapper.getFileInputStream(contribution.localUri?.path))
|
val modifiedSha1 = fileUtilsWrapper.getSHA1(fileUtilsWrapper.getFileInputStream(contribution.localUri?.path))
|
||||||
|
|
||||||
|
Timber.d("Saving uploaded status: SHA1 match: ${imageSha1 == modifiedSha1} for file: ${contribution.media.filename}")
|
||||||
|
|
||||||
CoroutineScope(Dispatchers.IO).launch {
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
uploadedStatusDao.insertUploaded(
|
uploadedStatusDao.insertUploaded(
|
||||||
UploadedStatus(
|
UploadedStatus(
|
||||||
imageSha1,
|
imageSha1,
|
||||||
modifiedSha1,
|
modifiedSha1,
|
||||||
imageSha1 == modifiedSha1,
|
imageSha1 == modifiedSha1,
|
||||||
true,
|
true
|
||||||
),
|
)
|
||||||
)
|
)
|
||||||
|
Timber.d("Uploaded status saved successfully for file: ${contribution.media.filename}")
|
||||||
}
|
}
|
||||||
}
|
} ?: Timber.w("Content URI is null, skipping uploaded status save for file: ${contribution.media.filename}")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun findUniqueFileName(fileName: String): String {
|
private fun findUniqueFileName(fileName: String): String {
|
||||||
var sequenceFileName: String? = fileName
|
var sequenceFileName: String? = fileName
|
||||||
val random = Random()
|
val random = Random()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue