mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-11-04 00:33:55 +01:00 
			
		
		
		
	Converted the ApplicationlessInjection to kotlin
This commit is contained in:
		
							parent
							
								
									f5388c4acc
								
							
						
					
					
						commit
						cba47c95a9
					
				
					 3 changed files with 101 additions and 106 deletions
				
			
		| 
						 | 
					@ -22,7 +22,10 @@ import java.util.Map;
 | 
				
			||||||
public class Converters {
 | 
					public class Converters {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static Gson getGson() {
 | 
					    public static Gson getGson() {
 | 
				
			||||||
        return ApplicationlessInjection.getInstance(CommonsApplication.getInstance()).getCommonsApplicationComponent().gson();
 | 
					        return ApplicationlessInjection
 | 
				
			||||||
 | 
					            .getInstance(CommonsApplication.getInstance())
 | 
				
			||||||
 | 
					            .getCommonsApplicationComponent()
 | 
				
			||||||
 | 
					            .gson();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -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!!
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue