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 index 9285a5801..1a88bd809 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.kt +++ b/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.kt @@ -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 + @Inject @JvmField + var androidInjector: DispatchingAndroidInjector? = null - @Inject - lateinit var activityInjector: DispatchingAndroidInjector + @Inject @JvmField + var activityInjector: DispatchingAndroidInjector? = null - @Inject - lateinit var broadcastReceiverInjector: DispatchingAndroidInjector + @Inject @JvmField + var broadcastReceiverInjector: DispatchingAndroidInjector? = null - @Inject - lateinit var fragmentInjector: DispatchingAndroidInjector + @Inject @JvmField + var fragmentInjector: DispatchingAndroidInjector? = null - @Inject - lateinit var supportFragmentInjector: DispatchingAndroidInjector + @Inject @JvmField + var supportFragmentInjector: DispatchingAndroidInjector? = null - @Inject - lateinit var serviceInjector: DispatchingAndroidInjector + @Inject @JvmField + var serviceInjector: DispatchingAndroidInjector? = null - @Inject - lateinit var contentProviderInjector: DispatchingAndroidInjector + @Inject @JvmField + var contentProviderInjector: DispatchingAndroidInjector? = null val instance: ApplicationlessInjection get() = _instance!! @@ -57,25 +58,25 @@ class ApplicationlessInjection(applicationContext: Context) : HasAndroidInjector commonsApplicationComponent.inject(this) } - override fun androidInjector(): AndroidInjector = + override fun androidInjector(): AndroidInjector? = androidInjector - override fun activityInjector(): DispatchingAndroidInjector = + override fun activityInjector(): DispatchingAndroidInjector? = activityInjector - override fun fragmentInjector(): DispatchingAndroidInjector = + override fun fragmentInjector(): DispatchingAndroidInjector? = fragmentInjector - override fun supportFragmentInjector(): DispatchingAndroidInjector = + override fun supportFragmentInjector(): DispatchingAndroidInjector? = supportFragmentInjector - override fun broadcastReceiverInjector(): DispatchingAndroidInjector = + override fun broadcastReceiverInjector(): DispatchingAndroidInjector? = broadcastReceiverInjector - override fun serviceInjector(): DispatchingAndroidInjector = + override fun serviceInjector(): DispatchingAndroidInjector? = serviceInjector - override fun contentProviderInjector(): AndroidInjector = + override fun contentProviderInjector(): AndroidInjector? = contentProviderInjector companion object { diff --git a/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerAppCompatActivity.java b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerAppCompatActivity.java deleted file mode 100644 index 003b3649c..000000000 --- a/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerAppCompatActivity.java +++ /dev/null @@ -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 supportFragmentInjector; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - inject(); - super.onCreate(savedInstanceState); - } - - @Override - public AndroidInjector 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 activityInjector = injection.activityInjector(); - - if (activityInjector == null) { - throw new NullPointerException("ApplicationlessInjection.activityInjector() returned null"); - } - - activityInjector.inject(this); - } - -} diff --git a/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerAppCompatActivity.kt b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerAppCompatActivity.kt new file mode 100644 index 000000000..fe9c7adee --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerAppCompatActivity.kt @@ -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? = null + + override fun onCreate(savedInstanceState: Bundle?) { + inject() + super.onCreate(savedInstanceState) + } + + override fun supportFragmentInjector(): AndroidInjector { + 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) + } +}