Convert CommonsDaggerAppCompatActivity to kotlin

This commit is contained in:
Paul Hawke 2024-11-28 21:14:36 -06:00
parent cba47c95a9
commit 834013c6c2
3 changed files with 59 additions and 69 deletions

View file

@ -16,6 +16,7 @@ import dagger.android.HasFragmentInjector
import dagger.android.HasServiceInjector
import dagger.android.support.HasSupportFragmentInjector
import javax.inject.Inject
import androidx.fragment.app.Fragment as AndroidXFragmen
/**
* Provides injectors for all sorts of components
@ -24,26 +25,26 @@ import javax.inject.Inject
class ApplicationlessInjection(applicationContext: Context) : HasAndroidInjector,
HasActivityInjector, HasFragmentInjector, HasSupportFragmentInjector, HasServiceInjector,
HasBroadcastReceiverInjector, HasContentProviderInjector {
@Inject
lateinit var androidInjector: DispatchingAndroidInjector<Any>
@Inject @JvmField
var androidInjector: DispatchingAndroidInjector<Any>? = null
@Inject
lateinit var activityInjector: DispatchingAndroidInjector<Activity>
@Inject @JvmField
var activityInjector: DispatchingAndroidInjector<Activity>? = null
@Inject
lateinit var broadcastReceiverInjector: DispatchingAndroidInjector<BroadcastReceiver>
@Inject @JvmField
var broadcastReceiverInjector: DispatchingAndroidInjector<BroadcastReceiver>? = null
@Inject
lateinit var fragmentInjector: DispatchingAndroidInjector<Fragment>
@Inject @JvmField
var fragmentInjector: DispatchingAndroidInjector<Fragment>? = null
@Inject
lateinit var supportFragmentInjector: DispatchingAndroidInjector<androidx.fragment.app.Fragment>
@Inject @JvmField
var supportFragmentInjector: DispatchingAndroidInjector<AndroidXFragmen>? = null
@Inject
lateinit var serviceInjector: DispatchingAndroidInjector<Service>
@Inject @JvmField
var serviceInjector: DispatchingAndroidInjector<Service>? = null
@Inject
lateinit var contentProviderInjector: DispatchingAndroidInjector<ContentProvider>
@Inject @JvmField
var contentProviderInjector: DispatchingAndroidInjector<ContentProvider>? = null
val instance: ApplicationlessInjection get() = _instance!!
@ -57,25 +58,25 @@ class ApplicationlessInjection(applicationContext: Context) : HasAndroidInjector
commonsApplicationComponent.inject(this)
}
override fun androidInjector(): AndroidInjector<Any> =
override fun androidInjector(): AndroidInjector<Any>? =
androidInjector
override fun activityInjector(): DispatchingAndroidInjector<Activity> =
override fun activityInjector(): DispatchingAndroidInjector<Activity>? =
activityInjector
override fun fragmentInjector(): DispatchingAndroidInjector<Fragment> =
override fun fragmentInjector(): DispatchingAndroidInjector<Fragment>? =
fragmentInjector
override fun supportFragmentInjector(): DispatchingAndroidInjector<androidx.fragment.app.Fragment> =
override fun supportFragmentInjector(): DispatchingAndroidInjector<AndroidXFragmen>? =
supportFragmentInjector
override fun broadcastReceiverInjector(): DispatchingAndroidInjector<BroadcastReceiver> =
override fun broadcastReceiverInjector(): DispatchingAndroidInjector<BroadcastReceiver>? =
broadcastReceiverInjector
override fun serviceInjector(): DispatchingAndroidInjector<Service> =
override fun serviceInjector(): DispatchingAndroidInjector<Service>? =
serviceInjector
override fun contentProviderInjector(): AndroidInjector<ContentProvider> =
override fun contentProviderInjector(): AndroidInjector<ContentProvider>? =
contentProviderInjector
companion object {

View file

@ -1,48 +0,0 @@
package fr.free.nrw.commons.di;
import android.app.Activity;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import javax.inject.Inject;
import dagger.android.AndroidInjector;
import dagger.android.DispatchingAndroidInjector;
import dagger.android.support.HasSupportFragmentInjector;
public abstract class CommonsDaggerAppCompatActivity extends AppCompatActivity implements HasSupportFragmentInjector {
@Inject
DispatchingAndroidInjector<Fragment> supportFragmentInjector;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
inject();
super.onCreate(savedInstanceState);
}
@Override
public AndroidInjector<Fragment> supportFragmentInjector() {
return supportFragmentInjector;
}
/**
* when this Activity is created it injects an instance of this class inside
* activityInjector method of ApplicationlessInjection
*/
private void inject() {
ApplicationlessInjection injection = ApplicationlessInjection.getInstance(getApplicationContext());
AndroidInjector<Activity> activityInjector = injection.activityInjector();
if (activityInjector == null) {
throw new NullPointerException("ApplicationlessInjection.activityInjector() returned null");
}
activityInjector.inject(this);
}
}

View file

@ -0,0 +1,37 @@
package fr.free.nrw.commons.di
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import dagger.android.AndroidInjector
import dagger.android.DispatchingAndroidInjector
import dagger.android.support.HasSupportFragmentInjector
import fr.free.nrw.commons.di.ApplicationlessInjection.Companion.getInstance
import javax.inject.Inject
abstract class CommonsDaggerAppCompatActivity : AppCompatActivity(), HasSupportFragmentInjector {
@Inject @JvmField
var supportFragmentInjector: DispatchingAndroidInjector<Fragment>? = null
override fun onCreate(savedInstanceState: Bundle?) {
inject()
super.onCreate(savedInstanceState)
}
override fun supportFragmentInjector(): AndroidInjector<Fragment> {
return supportFragmentInjector!!
}
/**
* when this Activity is created it injects an instance of this class inside
* activityInjector method of ApplicationlessInjection
*/
private fun inject() {
val injection = getInstance(applicationContext)
val activityInjector = injection.activityInjector()
?: throw NullPointerException("ApplicationlessInjection.activityInjector() returned null")
activityInjector.inject(this)
}
}