diff --git a/app/src/main/java/fr/free/nrw/commons/db/Converters.java b/app/src/main/java/fr/free/nrw/commons/db/Converters.java index a70cdc815..c0f85420f 100644 --- a/app/src/main/java/fr/free/nrw/commons/db/Converters.java +++ b/app/src/main/java/fr/free/nrw/commons/db/Converters.java @@ -22,7 +22,10 @@ import java.util.Map; public class Converters { public static Gson getGson() { - return ApplicationlessInjection.getInstance(CommonsApplication.getInstance()).getCommonsApplicationComponent().gson(); + return ApplicationlessInjection + .getInstance(CommonsApplication.getInstance()) + .getCommonsApplicationComponent() + .gson(); } /** diff --git a/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.java b/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.java deleted file mode 100644 index f2bff5db7..000000000 --- a/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.java +++ /dev/null @@ -1,105 +0,0 @@ -package fr.free.nrw.commons.di; - -import android.app.Activity; -import android.app.Service; -import android.content.BroadcastReceiver; -import android.content.ContentProvider; -import android.content.Context; - -import androidx.fragment.app.Fragment; - -import dagger.android.HasAndroidInjector; -import javax.inject.Inject; - -import dagger.android.AndroidInjector; -import dagger.android.DispatchingAndroidInjector; -import dagger.android.HasActivityInjector; -import dagger.android.HasBroadcastReceiverInjector; -import dagger.android.HasContentProviderInjector; -import dagger.android.HasFragmentInjector; -import dagger.android.HasServiceInjector; -import dagger.android.support.HasSupportFragmentInjector; - -/** - * Provides injectors for all sorts of components - * Ex: Activities, Fragments, Services, ContentProviders - */ -public class ApplicationlessInjection - implements - HasAndroidInjector, - HasActivityInjector, - HasFragmentInjector, - HasSupportFragmentInjector, - HasServiceInjector, - HasBroadcastReceiverInjector, - HasContentProviderInjector { - - private static ApplicationlessInjection instance = null; - - @Inject DispatchingAndroidInjector androidInjector; - @Inject DispatchingAndroidInjector activityInjector; - @Inject DispatchingAndroidInjector broadcastReceiverInjector; - @Inject DispatchingAndroidInjector fragmentInjector; - @Inject DispatchingAndroidInjector supportFragmentInjector; - @Inject DispatchingAndroidInjector serviceInjector; - @Inject DispatchingAndroidInjector contentProviderInjector; - - private CommonsApplicationComponent commonsApplicationComponent; - - public ApplicationlessInjection(Context applicationContext) { - commonsApplicationComponent = DaggerCommonsApplicationComponent.builder() - .appModule(new CommonsApplicationModule(applicationContext)).build(); - commonsApplicationComponent.inject(this); - } - - @Override - public AndroidInjector androidInjector() { - return androidInjector; - } - - @Override - public DispatchingAndroidInjector activityInjector() { - return activityInjector; - } - - @Override - public DispatchingAndroidInjector fragmentInjector() { - return fragmentInjector; - } - - @Override - public DispatchingAndroidInjector supportFragmentInjector() { - return supportFragmentInjector; - } - - @Override - public DispatchingAndroidInjector broadcastReceiverInjector() { - return broadcastReceiverInjector; - } - - @Override - public DispatchingAndroidInjector serviceInjector() { - return serviceInjector; - } - - @Override - public AndroidInjector contentProviderInjector() { - return contentProviderInjector; - } - - public CommonsApplicationComponent getCommonsApplicationComponent() { - return commonsApplicationComponent; - } - - public static ApplicationlessInjection getInstance(Context applicationContext) { - if (instance == null) { - synchronized (ApplicationlessInjection.class) { - if (instance == null) { - instance = new ApplicationlessInjection(applicationContext); - } - } - } - - return instance; - } -} diff --git a/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.kt b/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.kt new file mode 100644 index 000000000..9285a5801 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.kt @@ -0,0 +1,97 @@ +package fr.free.nrw.commons.di + +import android.app.Activity +import android.app.Fragment +import android.app.Service +import android.content.BroadcastReceiver +import android.content.ContentProvider +import android.content.Context +import dagger.android.AndroidInjector +import dagger.android.DispatchingAndroidInjector +import dagger.android.HasActivityInjector +import dagger.android.HasAndroidInjector +import dagger.android.HasBroadcastReceiverInjector +import dagger.android.HasContentProviderInjector +import dagger.android.HasFragmentInjector +import dagger.android.HasServiceInjector +import dagger.android.support.HasSupportFragmentInjector +import javax.inject.Inject + +/** + * Provides injectors for all sorts of components + * Ex: Activities, Fragments, Services, ContentProviders + */ +class ApplicationlessInjection(applicationContext: Context) : HasAndroidInjector, + HasActivityInjector, HasFragmentInjector, HasSupportFragmentInjector, HasServiceInjector, + HasBroadcastReceiverInjector, HasContentProviderInjector { + @Inject + lateinit var androidInjector: DispatchingAndroidInjector + + @Inject + lateinit var activityInjector: DispatchingAndroidInjector + + @Inject + lateinit var broadcastReceiverInjector: DispatchingAndroidInjector + + @Inject + lateinit var fragmentInjector: DispatchingAndroidInjector + + @Inject + lateinit var supportFragmentInjector: DispatchingAndroidInjector + + @Inject + lateinit var serviceInjector: DispatchingAndroidInjector + + @Inject + lateinit var contentProviderInjector: DispatchingAndroidInjector + + val instance: ApplicationlessInjection get() = _instance!! + + val commonsApplicationComponent: CommonsApplicationComponent = + DaggerCommonsApplicationComponent + .builder() + .appModule(CommonsApplicationModule(applicationContext)) + .build() + + init { + commonsApplicationComponent.inject(this) + } + + override fun androidInjector(): AndroidInjector = + androidInjector + + override fun activityInjector(): DispatchingAndroidInjector = + activityInjector + + override fun fragmentInjector(): DispatchingAndroidInjector = + fragmentInjector + + override fun supportFragmentInjector(): DispatchingAndroidInjector = + supportFragmentInjector + + override fun broadcastReceiverInjector(): DispatchingAndroidInjector = + broadcastReceiverInjector + + override fun serviceInjector(): DispatchingAndroidInjector = + serviceInjector + + override fun contentProviderInjector(): AndroidInjector = + contentProviderInjector + + companion object { + private var _instance: ApplicationlessInjection? = null + + @JvmStatic + fun getInstance(applicationContext: Context): ApplicationlessInjection { + if (_instance == null) { + synchronized(ApplicationlessInjection::class.java) { + if (_instance == null) { + _instance = ApplicationlessInjection(applicationContext) + } + } + } + + return _instance!! + } + } +}