From c3b4297cff2fd982866cb3f0267297ed7cb91b37 Mon Sep 17 00:00:00 2001 From: Paul Hawke Date: Mon, 9 Dec 2024 11:47:12 -0600 Subject: [PATCH] Convert upload dagger module to kotlin --- .../commons/di/CommonsApplicationModule.kt | 6 ++ .../free/nrw/commons/upload/UploadClient.kt | 11 ++-- .../free/nrw/commons/upload/UploadModule.java | 58 ------------------- .../free/nrw/commons/upload/UploadModule.kt | 33 +++++++++++ .../fr/free/nrw/commons/utils/TimeProvider.kt | 5 ++ .../nrw/commons/upload/UploadClientTest.kt | 3 +- 6 files changed, 50 insertions(+), 66 deletions(-) delete mode 100644 app/src/main/java/fr/free/nrw/commons/upload/UploadModule.java create mode 100644 app/src/main/java/fr/free/nrw/commons/upload/UploadModule.kt create mode 100644 app/src/main/java/fr/free/nrw/commons/utils/TimeProvider.kt diff --git a/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.kt b/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.kt index 6f883769f..b195674a9 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.kt +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationModule.kt @@ -29,6 +29,7 @@ import fr.free.nrw.commons.settings.Prefs import fr.free.nrw.commons.upload.UploadController import fr.free.nrw.commons.upload.depicts.DepictsDao import fr.free.nrw.commons.utils.ConfigUtils.isBetaFlavour +import fr.free.nrw.commons.utils.TimeProvider import fr.free.nrw.commons.wikidata.WikidataEditListener import fr.free.nrw.commons.wikidata.WikidataEditListenerImpl import io.reactivex.Scheduler @@ -224,6 +225,11 @@ open class CommonsApplicationModule(private val applicationContext: Context) { fun providesContentResolver(context: Context): ContentResolver = context.contentResolver + @Provides + fun provideTimeProvider(): TimeProvider { + return TimeProvider(System::currentTimeMillis) + } + companion object { const val IO_THREAD: String = "io_thread" const val MAIN_THREAD: String = "main_thread" 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 8464c670f..41b363f17 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 @@ -7,7 +7,9 @@ import fr.free.nrw.commons.auth.csrf.CsrfTokenClient import fr.free.nrw.commons.contributions.ChunkInfo import fr.free.nrw.commons.contributions.Contribution import fr.free.nrw.commons.contributions.ContributionDao +import fr.free.nrw.commons.di.NetworkingModule import fr.free.nrw.commons.upload.worker.UploadWorker.NotificationUpdateProgressListener +import fr.free.nrw.commons.utils.TimeProvider import fr.free.nrw.commons.wikidata.mwapi.MwException import io.reactivex.Observable import io.reactivex.disposables.CompositeDisposable @@ -26,6 +28,7 @@ import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicInteger import java.util.concurrent.atomic.AtomicReference import javax.inject.Inject +import javax.inject.Named import javax.inject.Singleton @Singleton @@ -33,7 +36,7 @@ class UploadClient @Inject constructor( private val uploadInterface: UploadInterface, - private val csrfTokenClient: CsrfTokenClient, + @Named(NetworkingModule.NAMED_COMMONS_CSRF) private val csrfTokenClient: CsrfTokenClient, private val pageContentsCreator: PageContentsCreator, private val fileUtilsWrapper: FileUtilsWrapper, private val gson: Gson, @@ -278,11 +281,7 @@ class UploadClient Timber.e(throwable, "Exception occurred in uploading file from stash") Observable.error(throwable) } - - fun interface TimeProvider { - fun currentTimeMillis(): Long - } - } +} private fun canProcess( contributionDao: ContributionDao, diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadModule.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadModule.java deleted file mode 100644 index eccdff333..000000000 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadModule.java +++ /dev/null @@ -1,58 +0,0 @@ -package fr.free.nrw.commons.upload; - -import com.google.gson.Gson; -import dagger.Binds; -import dagger.Module; -import dagger.Provides; -import fr.free.nrw.commons.auth.csrf.CsrfTokenClient; -import fr.free.nrw.commons.contributions.ContributionDao; -import fr.free.nrw.commons.di.NetworkingModule; -import fr.free.nrw.commons.upload.categories.CategoriesContract; -import fr.free.nrw.commons.upload.categories.CategoriesPresenter; -import fr.free.nrw.commons.upload.depicts.DepictsContract; -import fr.free.nrw.commons.upload.depicts.DepictsPresenter; -import fr.free.nrw.commons.upload.license.MediaLicenseContract; -import fr.free.nrw.commons.upload.license.MediaLicensePresenter; -import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailsContract; -import fr.free.nrw.commons.upload.mediaDetails.UploadMediaPresenter; -import javax.inject.Named; - -/** - * The Dagger Module for upload related presenters and (some other objects maybe in future) - */ -@Module -public abstract class UploadModule { - - @Binds - public abstract UploadContract.UserActionListener bindHomePresenter(UploadPresenter - presenter); - - @Binds - public abstract CategoriesContract.UserActionListener bindsCategoriesPresenter( - CategoriesPresenter presenter); - - @Binds - public abstract MediaLicenseContract.UserActionListener bindsMediaLicensePresenter( - MediaLicensePresenter - presenter); - - @Binds - public abstract UploadMediaDetailsContract.UserActionListener bindsUploadMediaPresenter( - UploadMediaPresenter - presenter); - - @Binds - public abstract DepictsContract.UserActionListener bindsDepictsPresenter( - DepictsPresenter - presenter - ); - - @Provides - public static UploadClient provideUploadClient(final UploadInterface uploadInterface, - @Named(NetworkingModule.NAMED_COMMONS_CSRF) final CsrfTokenClient csrfTokenClient, - final PageContentsCreator pageContentsCreator, final FileUtilsWrapper fileUtilsWrapper, - final Gson gson, final ContributionDao contributionDao) { - return new UploadClient(uploadInterface, csrfTokenClient, pageContentsCreator, - fileUtilsWrapper, gson, System::currentTimeMillis, contributionDao); - } -} diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadModule.kt b/app/src/main/java/fr/free/nrw/commons/upload/UploadModule.kt new file mode 100644 index 000000000..9596391c6 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadModule.kt @@ -0,0 +1,33 @@ +package fr.free.nrw.commons.upload + +import dagger.Binds +import dagger.Module +import fr.free.nrw.commons.upload.categories.CategoriesContract +import fr.free.nrw.commons.upload.categories.CategoriesPresenter +import fr.free.nrw.commons.upload.depicts.DepictsContract +import fr.free.nrw.commons.upload.depicts.DepictsPresenter +import fr.free.nrw.commons.upload.license.MediaLicenseContract +import fr.free.nrw.commons.upload.license.MediaLicensePresenter +import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailsContract +import fr.free.nrw.commons.upload.mediaDetails.UploadMediaPresenter + +/** + * The Dagger Module for upload related presenters and (some other objects maybe in future) + */ +@Module +abstract class UploadModule { + @Binds + abstract fun bindHomePresenter(presenter: UploadPresenter): UploadContract.UserActionListener + + @Binds + abstract fun bindsCategoriesPresenter(presenter: CategoriesPresenter): CategoriesContract.UserActionListener + + @Binds + abstract fun bindsMediaLicensePresenter(presenter: MediaLicensePresenter): MediaLicenseContract.UserActionListener + + @Binds + abstract fun bindsUploadMediaPresenter(presenter: UploadMediaPresenter): UploadMediaDetailsContract.UserActionListener + + @Binds + abstract fun bindsDepictsPresenter(presenter: DepictsPresenter): DepictsContract.UserActionListener +} diff --git a/app/src/main/java/fr/free/nrw/commons/utils/TimeProvider.kt b/app/src/main/java/fr/free/nrw/commons/utils/TimeProvider.kt new file mode 100644 index 000000000..e09b8fb45 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/utils/TimeProvider.kt @@ -0,0 +1,5 @@ +package fr.free.nrw.commons.utils + +fun interface TimeProvider { + fun currentTimeMillis(): Long +} \ No newline at end of file diff --git a/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadClientTest.kt index 50130106a..285c69233 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadClientTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/upload/UploadClientTest.kt @@ -8,14 +8,13 @@ import com.nhaarman.mockitokotlin2.anyOrNull import com.nhaarman.mockitokotlin2.argumentCaptor import com.nhaarman.mockitokotlin2.eq import com.nhaarman.mockitokotlin2.mock -import com.nhaarman.mockitokotlin2.times import com.nhaarman.mockitokotlin2.whenever import fr.free.nrw.commons.CommonsApplication.Companion.DEFAULT_EDIT_SUMMARY import fr.free.nrw.commons.auth.csrf.CsrfTokenClient import fr.free.nrw.commons.contributions.ChunkInfo import fr.free.nrw.commons.contributions.Contribution import fr.free.nrw.commons.contributions.ContributionDao -import fr.free.nrw.commons.upload.UploadClient.TimeProvider +import fr.free.nrw.commons.utils.TimeProvider import fr.free.nrw.commons.wikidata.mwapi.MwException import fr.free.nrw.commons.wikidata.mwapi.MwServiceError import io.reactivex.Observable