Convert upload dagger module to kotlin

This commit is contained in:
Paul Hawke 2024-12-09 11:47:12 -06:00
parent f51b607312
commit c3b4297cff
6 changed files with 50 additions and 66 deletions

View file

@ -29,6 +29,7 @@ import fr.free.nrw.commons.settings.Prefs
import fr.free.nrw.commons.upload.UploadController import fr.free.nrw.commons.upload.UploadController
import fr.free.nrw.commons.upload.depicts.DepictsDao import fr.free.nrw.commons.upload.depicts.DepictsDao
import fr.free.nrw.commons.utils.ConfigUtils.isBetaFlavour 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.WikidataEditListener
import fr.free.nrw.commons.wikidata.WikidataEditListenerImpl import fr.free.nrw.commons.wikidata.WikidataEditListenerImpl
import io.reactivex.Scheduler import io.reactivex.Scheduler
@ -224,6 +225,11 @@ open class CommonsApplicationModule(private val applicationContext: Context) {
fun providesContentResolver(context: Context): ContentResolver = fun providesContentResolver(context: Context): ContentResolver =
context.contentResolver context.contentResolver
@Provides
fun provideTimeProvider(): TimeProvider {
return TimeProvider(System::currentTimeMillis)
}
companion object { companion object {
const val IO_THREAD: String = "io_thread" const val IO_THREAD: String = "io_thread"
const val MAIN_THREAD: String = "main_thread" const val MAIN_THREAD: String = "main_thread"

View file

@ -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.ChunkInfo
import fr.free.nrw.commons.contributions.Contribution import fr.free.nrw.commons.contributions.Contribution
import fr.free.nrw.commons.contributions.ContributionDao 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.upload.worker.UploadWorker.NotificationUpdateProgressListener
import fr.free.nrw.commons.utils.TimeProvider
import fr.free.nrw.commons.wikidata.mwapi.MwException import fr.free.nrw.commons.wikidata.mwapi.MwException
import io.reactivex.Observable import io.reactivex.Observable
import io.reactivex.disposables.CompositeDisposable 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.AtomicInteger
import java.util.concurrent.atomic.AtomicReference import java.util.concurrent.atomic.AtomicReference
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Named
import javax.inject.Singleton import javax.inject.Singleton
@Singleton @Singleton
@ -33,7 +36,7 @@ class UploadClient
@Inject @Inject
constructor( constructor(
private val uploadInterface: UploadInterface, private val uploadInterface: UploadInterface,
private val csrfTokenClient: CsrfTokenClient, @Named(NetworkingModule.NAMED_COMMONS_CSRF) private val csrfTokenClient: CsrfTokenClient,
private val pageContentsCreator: PageContentsCreator, private val pageContentsCreator: PageContentsCreator,
private val fileUtilsWrapper: FileUtilsWrapper, private val fileUtilsWrapper: FileUtilsWrapper,
private val gson: Gson, private val gson: Gson,
@ -278,10 +281,6 @@ class UploadClient
Timber.e(throwable, "Exception occurred in uploading file from stash") Timber.e(throwable, "Exception occurred in uploading file from stash")
Observable.error(throwable) Observable.error(throwable)
} }
fun interface TimeProvider {
fun currentTimeMillis(): Long
}
} }
private fun canProcess( private fun canProcess(

View file

@ -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);
}
}

View file

@ -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
}

View file

@ -0,0 +1,5 @@
package fr.free.nrw.commons.utils
fun interface TimeProvider {
fun currentTimeMillis(): Long
}

View file

@ -8,14 +8,13 @@ import com.nhaarman.mockitokotlin2.anyOrNull
import com.nhaarman.mockitokotlin2.argumentCaptor import com.nhaarman.mockitokotlin2.argumentCaptor
import com.nhaarman.mockitokotlin2.eq import com.nhaarman.mockitokotlin2.eq
import com.nhaarman.mockitokotlin2.mock import com.nhaarman.mockitokotlin2.mock
import com.nhaarman.mockitokotlin2.times
import com.nhaarman.mockitokotlin2.whenever import com.nhaarman.mockitokotlin2.whenever
import fr.free.nrw.commons.CommonsApplication.Companion.DEFAULT_EDIT_SUMMARY import fr.free.nrw.commons.CommonsApplication.Companion.DEFAULT_EDIT_SUMMARY
import fr.free.nrw.commons.auth.csrf.CsrfTokenClient import fr.free.nrw.commons.auth.csrf.CsrfTokenClient
import fr.free.nrw.commons.contributions.ChunkInfo import fr.free.nrw.commons.contributions.ChunkInfo
import fr.free.nrw.commons.contributions.Contribution import fr.free.nrw.commons.contributions.Contribution
import fr.free.nrw.commons.contributions.ContributionDao 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.MwException
import fr.free.nrw.commons.wikidata.mwapi.MwServiceError import fr.free.nrw.commons.wikidata.mwapi.MwServiceError
import io.reactivex.Observable import io.reactivex.Observable