Converted the ApplicationlessInjection to kotlin

This commit is contained in:
Paul Hawke 2024-11-28 21:05:10 -06:00
parent f5388c4acc
commit cba47c95a9
3 changed files with 101 additions and 106 deletions

View file

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

View file

@ -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<Object> androidInjector;
@Inject DispatchingAndroidInjector<Activity> activityInjector;
@Inject DispatchingAndroidInjector<BroadcastReceiver> broadcastReceiverInjector;
@Inject DispatchingAndroidInjector<android.app.Fragment> fragmentInjector;
@Inject DispatchingAndroidInjector<Fragment> supportFragmentInjector;
@Inject DispatchingAndroidInjector<Service> serviceInjector;
@Inject DispatchingAndroidInjector<ContentProvider> contentProviderInjector;
private CommonsApplicationComponent commonsApplicationComponent;
public ApplicationlessInjection(Context applicationContext) {
commonsApplicationComponent = DaggerCommonsApplicationComponent.builder()
.appModule(new CommonsApplicationModule(applicationContext)).build();
commonsApplicationComponent.inject(this);
}
@Override
public AndroidInjector<Object> androidInjector() {
return androidInjector;
}
@Override
public DispatchingAndroidInjector<Activity> activityInjector() {
return activityInjector;
}
@Override
public DispatchingAndroidInjector<android.app.Fragment> fragmentInjector() {
return fragmentInjector;
}
@Override
public DispatchingAndroidInjector<Fragment> supportFragmentInjector() {
return supportFragmentInjector;
}
@Override
public DispatchingAndroidInjector<BroadcastReceiver> broadcastReceiverInjector() {
return broadcastReceiverInjector;
}
@Override
public DispatchingAndroidInjector<Service> serviceInjector() {
return serviceInjector;
}
@Override
public AndroidInjector<ContentProvider> 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;
}
}

View file

@ -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<Any>
@Inject
lateinit var activityInjector: DispatchingAndroidInjector<Activity>
@Inject
lateinit var broadcastReceiverInjector: DispatchingAndroidInjector<BroadcastReceiver>
@Inject
lateinit var fragmentInjector: DispatchingAndroidInjector<Fragment>
@Inject
lateinit var supportFragmentInjector: DispatchingAndroidInjector<androidx.fragment.app.Fragment>
@Inject
lateinit var serviceInjector: DispatchingAndroidInjector<Service>
@Inject
lateinit var contentProviderInjector: DispatchingAndroidInjector<ContentProvider>
val instance: ApplicationlessInjection get() = _instance!!
val commonsApplicationComponent: CommonsApplicationComponent =
DaggerCommonsApplicationComponent
.builder()
.appModule(CommonsApplicationModule(applicationContext))
.build()
init {
commonsApplicationComponent.inject(this)
}
override fun androidInjector(): AndroidInjector<Any> =
androidInjector
override fun activityInjector(): DispatchingAndroidInjector<Activity> =
activityInjector
override fun fragmentInjector(): DispatchingAndroidInjector<Fragment> =
fragmentInjector
override fun supportFragmentInjector(): DispatchingAndroidInjector<androidx.fragment.app.Fragment> =
supportFragmentInjector
override fun broadcastReceiverInjector(): DispatchingAndroidInjector<BroadcastReceiver> =
broadcastReceiverInjector
override fun serviceInjector(): DispatchingAndroidInjector<Service> =
serviceInjector
override fun contentProviderInjector(): AndroidInjector<ContentProvider> =
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!!
}
}
}