diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java index c995cb582..733e9e287 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java @@ -721,20 +721,6 @@ public class ContributionsFragment } - /** - * Pauses the upload - * - * @param contribution - */ - @Override - public void pauseUpload(Contribution contribution) { - //Pause the upload in the global singleton - CommonsApplication.pauseUploads.put(contribution.getPageId(), true); - //Retain the paused state in DB - contribution.setState(STATE_PAUSED); - contributionsPresenter.saveContribution(contribution); - } - /** * Notify the viewpager that number of items have changed. */ diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListAdapter.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListAdapter.java index e6db7e3de..ba4317baf 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListAdapter.java @@ -72,14 +72,8 @@ public class ContributionsListAdapter extends void retryUpload(Contribution contribution); - void deleteUpload(Contribution contribution); - void openMediaDetail(int contribution, boolean isWikipediaPageExists); void addImageToWikipedia(Contribution contribution); - - void pauseUpload(Contribution contribution); - - void resumeUpload(Contribution contribution); } } diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListContract.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListContract.java index e3ec66b73..58bd2783d 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListContract.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListContract.java @@ -17,7 +17,5 @@ public class ContributionsListContract { } public interface UserActionListener extends BasePresenter { - - void deleteUpload(Contribution contribution); } } diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java index 2a6209e70..c86ecf190 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java @@ -442,23 +442,6 @@ public class ContributionsListFragment extends CommonsDaggerSupportFragment impl } } - @Override - public void deleteUpload(final Contribution contribution) { - DialogUtil.showAlertDialog(getActivity(), - String.format(Locale.getDefault(), - getString(R.string.cancelling_upload)), - String.format(Locale.getDefault(), - getString(R.string.cancel_upload_dialog)), - String.format(Locale.getDefault(), getString(R.string.yes)), String.format(Locale.getDefault(), getString(R.string.no)), - () -> { - ViewUtil.showShortToast(getContext(), R.string.cancelling_upload); - contributionsListPresenter.deleteUpload(contribution); - CommonsApplication.cancelledUploads.add(contribution.getPageId()); - }, () -> { - // Do nothing - }); - } - @Override public void openMediaDetail(final int position, boolean isWikipediaButtonDisplayed) { if (null != callback) {//Just being safe, ideally they won't be called when detached @@ -483,28 +466,6 @@ public class ContributionsListFragment extends CommonsDaggerSupportFragment impl }); } - /** - * Pauses the current upload - * - * @param contribution - */ - @Override - public void pauseUpload(Contribution contribution) { - ViewUtil.showShortToast(getContext(), R.string.pausing_upload); - callback.pauseUpload(contribution); - } - - /** - * Resumes the current upload - * - * @param contribution - */ - @Override - public void resumeUpload(Contribution contribution) { - ViewUtil.showShortToast(getContext(), R.string.resuming_upload); - callback.retryUpload(contribution); - } - /** * Display confirmation dialog with instructions when the user tries to add image to wikipedia * @@ -560,8 +521,6 @@ public class ContributionsListFragment extends CommonsDaggerSupportFragment impl void showDetail(int position, boolean isWikipediaButtonDisplayed); - void pauseUpload(Contribution contribution); - // Notify the viewpager that number of items have changed. void viewPagerNotifyDataSetChanged(); diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListPresenter.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListPresenter.java index 50b114768..c74ec5a33 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListPresenter.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListPresenter.java @@ -90,17 +90,6 @@ public class ContributionsListPresenter implements UserActionListener { contributionBoundaryCallback.dispose(); } - /** - * Delete a failed contribution from the local db - */ - @Override - public void deleteUpload(final Contribution contribution) { - compositeDisposable.add(repository - .deleteContributionFromDB(contribution) - .subscribeOn(ioThreadScheduler) - .subscribe()); - } - void getTotalContribution(String userName) { final PagedList.Config pagedListConfig = (new PagedList.Config.Builder()) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/FailedUploadsFragment.kt b/app/src/main/java/fr/free/nrw/commons/upload/FailedUploadsFragment.kt index e6732b086..5f10bad53 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/FailedUploadsFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/FailedUploadsFragment.kt @@ -120,18 +120,6 @@ class FailedUploadsFragment : CommonsDaggerSupportFragment(),PendingUploadsContr } } - override fun showWelcomeTip(numberOfUploads: Boolean) { - //TODO("Not yet implemented") - } - - override fun showProgress(shouldShow: Boolean) { - //TODO("Not yet implemented") - } - - override fun showNoContributionsUI(shouldShow: Boolean) { - //TODO("Not yet implemented") - } - fun restartUploads() { if (contributionsList != null){ pendingUploadsPresenter.restartUploads(contributionsList, 0 , this.requireContext().applicationContext) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsContract.java b/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsContract.java index 2b56e901d..e3744c841 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsContract.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsContract.java @@ -7,12 +7,6 @@ import fr.free.nrw.commons.contributions.Contribution; public class PendingUploadsContract { public interface View { - - void showWelcomeTip(boolean numberOfUploads); - - void showProgress(boolean shouldShow); - - void showNoContributionsUI(boolean shouldShow); } public interface UserActionListener extends diff --git a/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsFragment.kt b/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsFragment.kt index 8e649a15c..8b7020fb9 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsFragment.kt @@ -220,18 +220,6 @@ class PendingUploadsFragment : CommonsDaggerSupportFragment(), PendingUploadsCon } } - override fun showWelcomeTip(numberOfUploads: Boolean) { - //TODO("Not yet implemented") - } - - override fun showProgress(shouldShow: Boolean) { - //TODO("Not yet implemented") - } - - override fun showNoContributionsUI(shouldShow: Boolean) { - //TODO("Not yet implemented") - } - fun restartUploads() { if (contributionsList != null){ pendingUploadsPresenter.restartUploads(contributionsList, 0 , this.requireContext().applicationContext) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsPresenter.java b/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsPresenter.java index d55ac27b2..83b5a8535 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsPresenter.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/PendingUploadsPresenter.java @@ -118,16 +118,6 @@ public class PendingUploadsPresenter implements UserActionListener { )); } - public void saveContribution(Contribution contribution, Context context) { - compositeDisposable.add(repository - .save(contribution) - .subscribeOn(ioThreadScheduler) - .subscribe(() -> - WorkRequestHelper.Companion.makeOneTimeWorkRequest( - context, ExistingWorkPolicy.KEEP) - )); - } - public void pauseUploads(List l, int index, Context context) { if (index >= l.size()) { return; diff --git a/app/src/main/java/fr/free/nrw/commons/upload/StashUploadResult.kt b/app/src/main/java/fr/free/nrw/commons/upload/StashUploadResult.kt index 68a28bdbb..91f17da07 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/StashUploadResult.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/StashUploadResult.kt @@ -9,5 +9,6 @@ data class StashUploadResult( enum class StashUploadState { SUCCESS, PAUSED, - FAILED + FAILED, + CANCELLED } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.kt b/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.kt index c303b3a30..e622eaeb5 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadClient.kt @@ -78,15 +78,23 @@ class UploadClient @Inject constructor( compositeDisposable.add( Observable.fromIterable(fileChunks).forEach { chunkFile: File -> if (canProcess(contribution, failures)) { - processChunk( - filename, contribution, notificationUpdater, chunkFile, - failures, chunkInfo, index, errorMessage, mediaType!!, file!!, fileChunks.size - ) + if (CommonsApplication.cancelledUploads.contains(contribution.pageId)) { + compositeDisposable.clear() + return@forEach + }else{ + processChunk( + filename, contribution, notificationUpdater, chunkFile, + failures, chunkInfo, index, errorMessage, mediaType!!, file!!, fileChunks.size + ) + } } } ) return when { + CommonsApplication.cancelledUploads.contains(contribution.pageId) -> { + return Observable.just(StashUploadResult(StashUploadState.CANCELLED, null, "Upload cancelled")) + } contribution.isPaused() -> { Timber.d("Upload stash paused %s", contribution.pageId) Observable.just(StashUploadResult(StashUploadState.PAUSED, null, null)) 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 abfc6d71b..83d49727c 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 @@ -189,7 +189,7 @@ class UploadWorker(var appContext: Context, workerParams: WorkerParameters) : .blockingGet() //Showing initial notification for the number of uploads being processed - Timber.e("Queued Contributions: " + queuedContributions.size) + Timber.tag("PRINT").e("Queued Contributions: " + queuedContributions.size) processingUploads.setContentTitle(appContext.getString(R.string.starting_uploads)) processingUploads.setContentText( @@ -344,7 +344,7 @@ class UploadWorker(var appContext: Context, workerParams: WorkerParameters) : ).onErrorReturn{ return@onErrorReturn StashUploadResult(StashUploadState.FAILED,fileKey = null,errorMessage = it.message) }.blockingSingle() - + Timber.tag("PRINT").e("-- "+stashUploadResult.state) when (stashUploadResult.state) { StashUploadState.SUCCESS -> { //If the stash upload succeeds @@ -404,6 +404,9 @@ class UploadWorker(var appContext: Context, workerParams: WorkerParameters) : contribution.state = Contribution.STATE_PAUSED contributionDao.saveSynchronous(contribution) } + StashUploadState.CANCELLED -> { + showCancelledNotification(contribution) + } else -> { Timber.e("""upload file to stash failed with status: ${stashUploadResult.state}""") showInvalidLoginNotification(contribution) @@ -622,6 +625,25 @@ class UploadWorker(var appContext: Context, workerParams: WorkerParameters) : ) } + /** + * Notify that the current upload is cancelled + * @param contribution + */ + private fun showCancelledNotification(contribution: Contribution) { + val displayTitle = contribution.media.displayTitle + curentNotification.setContentIntent(getPendingIntent(UploadProgressActivity::class.java)) + curentNotification.setContentTitle( + displayTitle + ) + .setContentText("Upload has been cancelled!") + .setProgress(0, 0, false) + .setOngoing(false) + notificationManager!!.notify( + currentNotificationTag, currentNotificationID, + curentNotification.build() + ) + } + /** * Method used to get Pending intent for opening different screen after clicking on notification * @param toClass diff --git a/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionsListFragmentUnitTests.kt b/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionsListFragmentUnitTests.kt index 3f6f0b878..367b05bc2 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionsListFragmentUnitTests.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/contributions/ContributionsListFragmentUnitTests.kt @@ -137,20 +137,6 @@ class ContributionsListFragmentUnitTests { method.invoke(fragment, contribution) } - @Test - @Throws(Exception::class) - fun testResumeUpload() { - Shadows.shadowOf(Looper.getMainLooper()).idle() - fragment.resumeUpload(contribution) - } - - @Test - @Throws(Exception::class) - fun testPauseUpload() { - Shadows.shadowOf(Looper.getMainLooper()).idle() - fragment.pauseUpload(contribution) - } - @Test @Throws(Exception::class) fun testAddImageToWikipedia() {