mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-30 22:34:02 +01:00 
			
		
		
		
	Extracted a few networking related items into a new Dagger module and finished the process of mocking the main component for tests.
This commit is contained in:
		
							parent
							
								
									32cb8df9ae
								
							
						
					
					
						commit
						c7948c817b
					
				
					 4 changed files with 75 additions and 51 deletions
				
			
		|  | @ -9,17 +9,16 @@ import dagger.android.support.AndroidSupportInjectionModule; | |||
| import fr.free.nrw.commons.CommonsApplication; | ||||
| import fr.free.nrw.commons.MediaWikiImageView; | ||||
| import fr.free.nrw.commons.auth.LoginActivity; | ||||
| import fr.free.nrw.commons.contributions.Contribution; | ||||
| import fr.free.nrw.commons.contributions.ContributionsActivity; | ||||
| import fr.free.nrw.commons.contributions.ContributionsSyncAdapter; | ||||
| import fr.free.nrw.commons.delete.DeleteTask; | ||||
| import fr.free.nrw.commons.modifications.ModificationsSyncAdapter; | ||||
| import fr.free.nrw.commons.settings.SettingsFragment; | ||||
| import fr.free.nrw.commons.nearby.PlaceRenderer; | ||||
| import fr.free.nrw.commons.settings.SettingsFragment; | ||||
| 
 | ||||
| @Singleton | ||||
| @Component(modules = { | ||||
|         CommonsApplicationModule.class, | ||||
|         NetworkingModule.class, | ||||
|         AndroidInjectionModule.class, | ||||
|         AndroidSupportInjectionModule.class, | ||||
|         ActivityBuilderModule.class, | ||||
|  |  | |||
|  | @ -4,29 +4,21 @@ import android.content.ContentProviderClient; | |||
| import android.content.Context; | ||||
| import android.content.SharedPreferences; | ||||
| import android.preference.PreferenceManager; | ||||
| import android.support.annotation.NonNull; | ||||
| import android.support.v4.util.LruCache; | ||||
| 
 | ||||
| import com.google.gson.Gson; | ||||
| import com.google.gson.GsonBuilder; | ||||
| 
 | ||||
| import javax.inject.Named; | ||||
| import javax.inject.Singleton; | ||||
| 
 | ||||
| import dagger.Module; | ||||
| import dagger.Provides; | ||||
| import fr.free.nrw.commons.BuildConfig; | ||||
| import fr.free.nrw.commons.auth.AccountUtil; | ||||
| import fr.free.nrw.commons.auth.SessionManager; | ||||
| import fr.free.nrw.commons.caching.CacheController; | ||||
| import fr.free.nrw.commons.data.DBOpenHelper; | ||||
| import fr.free.nrw.commons.location.LocationServiceManager; | ||||
| import fr.free.nrw.commons.mwapi.ApacheHttpClientMediaWikiApi; | ||||
| import fr.free.nrw.commons.mwapi.MediaWikiApi; | ||||
| import fr.free.nrw.commons.nearby.NearbyPlaces; | ||||
| import fr.free.nrw.commons.upload.UploadController; | ||||
| import okhttp3.HttpUrl; | ||||
| import okhttp3.OkHttpClient; | ||||
| 
 | ||||
| import static android.content.Context.MODE_PRIVATE; | ||||
| import static fr.free.nrw.commons.contributions.ContributionsContentProvider.CONTRIBUTION_AUTHORITY; | ||||
|  | @ -36,7 +28,6 @@ import static fr.free.nrw.commons.modifications.ModificationsContentProvider.MOD | |||
| @SuppressWarnings({"WeakerAccess", "unused"}) | ||||
| public class CommonsApplicationModule { | ||||
|     public static final String CATEGORY_AUTHORITY = "fr.free.nrw.commons.categories.contentprovider"; | ||||
|     public static final long OK_HTTP_CACHE_SIZE = 10 * 1024 * 1024; | ||||
| 
 | ||||
|     private Context applicationContext; | ||||
| 
 | ||||
|  | @ -72,12 +63,6 @@ public class CommonsApplicationModule { | |||
|         return context.getContentResolver().acquireContentProviderClient(MODIFICATIONS_AUTHORITY); | ||||
|     } | ||||
| 
 | ||||
|     @Provides | ||||
|     @Singleton | ||||
|     public OkHttpClient provideOkHttpClient() { | ||||
|         return new OkHttpClient.Builder().build(); | ||||
|     } | ||||
| 
 | ||||
|     @Provides | ||||
|     @Named("application_preferences") | ||||
|     public SharedPreferences providesApplicationSharedPreferences(Context context) { | ||||
|  | @ -126,39 +111,12 @@ public class CommonsApplicationModule { | |||
|         return new SessionManager(context, mediaWikiApi, sharedPreferences); | ||||
|     } | ||||
| 
 | ||||
|     @Provides | ||||
|     @Singleton | ||||
|     public MediaWikiApi provideMediaWikiApi(Context context, | ||||
|                                             @Named("default_preferences") SharedPreferences defaultPreferences, | ||||
|                                             @Named("category_prefs") SharedPreferences categoryPrefs, | ||||
|                                             Gson gson) { | ||||
|         return new ApacheHttpClientMediaWikiApi(context, BuildConfig.WIKIMEDIA_API_HOST, defaultPreferences, categoryPrefs, gson); | ||||
|     } | ||||
| 
 | ||||
|     @Provides | ||||
|     @Named("commons_mediawiki_url") | ||||
|     @NonNull | ||||
|     @SuppressWarnings("ConstantConditions") | ||||
|     public  HttpUrl provideMwUrl() { | ||||
|         return HttpUrl.parse("https://commons.wikimedia.org/"); | ||||
|     } | ||||
| 
 | ||||
|     @Provides | ||||
|     @Singleton | ||||
|     public LocationServiceManager provideLocationServiceManager(Context context) { | ||||
|         return new LocationServiceManager(context); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Gson objects are very heavy. The app should ideally be using just one instance of it instead of creating new instances everywhere. | ||||
|      * @return returns a singleton Gson instance | ||||
|      */ | ||||
|     @Provides | ||||
|     @Singleton | ||||
|     public Gson provideGson() { | ||||
|         return new GsonBuilder().create(); | ||||
|     } | ||||
| 
 | ||||
|     @Provides | ||||
|     @Singleton | ||||
|     public CacheController provideCacheController() { | ||||
|  |  | |||
|  | @ -0,0 +1,59 @@ | |||
| package fr.free.nrw.commons.di; | ||||
| 
 | ||||
| import android.content.Context; | ||||
| import android.content.SharedPreferences; | ||||
| import android.support.annotation.NonNull; | ||||
| 
 | ||||
| import com.google.gson.Gson; | ||||
| import com.google.gson.GsonBuilder; | ||||
| 
 | ||||
| import javax.inject.Named; | ||||
| import javax.inject.Singleton; | ||||
| 
 | ||||
| import dagger.Module; | ||||
| import dagger.Provides; | ||||
| import fr.free.nrw.commons.BuildConfig; | ||||
| import fr.free.nrw.commons.mwapi.ApacheHttpClientMediaWikiApi; | ||||
| import fr.free.nrw.commons.mwapi.MediaWikiApi; | ||||
| import okhttp3.HttpUrl; | ||||
| import okhttp3.OkHttpClient; | ||||
| 
 | ||||
| @Module | ||||
| @SuppressWarnings({"WeakerAccess", "unused"}) | ||||
| public class NetworkingModule { | ||||
|     public static final long OK_HTTP_CACHE_SIZE = 10 * 1024 * 1024; | ||||
| 
 | ||||
|     @Provides | ||||
|     @Singleton | ||||
|     public OkHttpClient provideOkHttpClient() { | ||||
|         return new OkHttpClient.Builder().build(); | ||||
|     } | ||||
| 
 | ||||
|     @Provides | ||||
|     @Singleton | ||||
|     public MediaWikiApi provideMediaWikiApi(Context context, | ||||
|                                             @Named("default_preferences") SharedPreferences defaultPreferences, | ||||
|                                             @Named("category_prefs") SharedPreferences categoryPrefs, | ||||
|                                             Gson gson) { | ||||
|         return new ApacheHttpClientMediaWikiApi(context, BuildConfig.WIKIMEDIA_API_HOST, defaultPreferences, categoryPrefs, gson); | ||||
|     } | ||||
| 
 | ||||
|     @Provides | ||||
|     @Named("commons_mediawiki_url") | ||||
|     @NonNull | ||||
|     @SuppressWarnings("ConstantConditions") | ||||
|     public HttpUrl provideMwUrl() { | ||||
|         return HttpUrl.parse(BuildConfig.COMMONS_URL); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Gson objects are very heavy. The app should ideally be using just one instance of it instead of creating new instances everywhere. | ||||
|      * @return returns a singleton Gson instance | ||||
|      */ | ||||
|     @Provides | ||||
|     @Singleton | ||||
|     public Gson provideGson() { | ||||
|         return new GsonBuilder().create(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Paul Hawke
						Paul Hawke