Use wrapper for interacting with shared preferences (#2288)

* Use wrapper for accessing shared preferences across the app

* Use Json kv store for storing place object

* Fix tests

* Fix test failure

* Fix UI tests
This commit is contained in:
Vivek Maskara 2019-01-14 00:13:21 +05:30 committed by Ashish Kumar
parent 1b7b909107
commit d4fa9cfa45
61 changed files with 908 additions and 585 deletions

View file

@ -3,8 +3,6 @@ package fr.free.nrw.commons.di;
import android.app.Activity;
import android.content.ContentProviderClient;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v4.util.LruCache;
import android.view.inputmethod.InputMethodManager;
@ -23,6 +21,8 @@ import fr.free.nrw.commons.R;
import fr.free.nrw.commons.auth.AccountUtil;
import fr.free.nrw.commons.auth.SessionManager;
import fr.free.nrw.commons.data.DBOpenHelper;
import fr.free.nrw.commons.kvstore.BasicKvStore;
import fr.free.nrw.commons.kvstore.JsonKvStore;
import fr.free.nrw.commons.location.LocationServiceManager;
import fr.free.nrw.commons.mwapi.MediaWikiApi;
import fr.free.nrw.commons.nearby.NearbyPlaces;
@ -32,8 +32,6 @@ import fr.free.nrw.commons.utils.ConfigUtils;
import fr.free.nrw.commons.wikidata.WikidataEditListener;
import fr.free.nrw.commons.wikidata.WikidataEditListenerImpl;
import static android.content.Context.MODE_PRIVATE;
@Module
@SuppressWarnings({"WeakerAccess", "unused"})
public class CommonsApplicationModule {
@ -126,20 +124,21 @@ public class CommonsApplicationModule {
@Provides
@Named("application_preferences")
public SharedPreferences providesApplicationSharedPreferences(Context context) {
return context.getSharedPreferences("fr.free.nrw.commons", MODE_PRIVATE);
public BasicKvStore providesApplicationKvStore(Context context) {
return new BasicKvStore(context, "fr.free.nrw.commons");
}
@Provides
@Named("default_preferences")
public SharedPreferences providesDefaultSharedPreferences(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context);
public BasicKvStore providesDefaultKvStore(Context context) {
String storeName = context.getPackageName() + "_preferences";
return new BasicKvStore(context, storeName);
}
@Provides
@Named("prefs")
public SharedPreferences providesOtherSharedPreferences(Context context) {
return context.getSharedPreferences("prefs", MODE_PRIVATE);
@Named("defaultKvStore")
public BasicKvStore providesOtherKvStore(Context context) {
return new BasicKvStore(context, "defaultKvStore");
}
/**
@ -149,14 +148,14 @@ public class CommonsApplicationModule {
*/
@Provides
@Named("category_prefs")
public SharedPreferences providesCategorySharedPreferences(Context context) {
return context.getSharedPreferences("categoryPrefs", MODE_PRIVATE);
public BasicKvStore providesCategoryKvStore(Context context) {
return new BasicKvStore(context, "categoryPrefs");
}
@Provides
@Named("direct_nearby_upload_prefs")
public SharedPreferences providesDirectNearbyUploadPreferences(Context context) {
return context.getSharedPreferences("direct_nearby_upload_prefs", MODE_PRIVATE);
public JsonKvStore providesDirectNearbyUploadKvStore(Context context) {
return new JsonKvStore(context, "direct_nearby_upload_prefs");
}
/**
@ -166,21 +165,23 @@ public class CommonsApplicationModule {
*/
@Provides
@Named("last_read_notification_date")
public SharedPreferences providesLastReadNotificationDatePreferences(Context context) {
return context.getSharedPreferences("last_read_notification_date", MODE_PRIVATE);
public BasicKvStore providesLastReadNotificationDateKvStore(Context context) {
return new BasicKvStore(context, "last_read_notification_date");
}
@Provides
public UploadController providesUploadController(SessionManager sessionManager, @Named("default_preferences") SharedPreferences sharedPreferences, Context context) {
return new UploadController(sessionManager, context, sharedPreferences);
public UploadController providesUploadController(SessionManager sessionManager,
@Named("default_preferences") BasicKvStore kvStore,
Context context) {
return new UploadController(sessionManager, context, kvStore);
}
@Provides
@Singleton
public SessionManager providesSessionManager(Context context,
MediaWikiApi mediaWikiApi,
@Named("default_preferences") SharedPreferences sharedPreferences) {
return new SessionManager(context, mediaWikiApi, sharedPreferences);
@Named("default_preferences") BasicKvStore defaultKvStore) {
return new SessionManager(context, mediaWikiApi, defaultKvStore);
}
@Provides

View file

@ -1,21 +1,21 @@
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 java.io.File;
import java.util.concurrent.TimeUnit;
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.kvstore.BasicKvStore;
import fr.free.nrw.commons.mwapi.ApacheHttpClientMediaWikiApi;
import fr.free.nrw.commons.mwapi.MediaWikiApi;
import okhttp3.Cache;
@ -41,11 +41,11 @@ public class NetworkingModule {
@Provides
@Singleton
public MediaWikiApi provideMediaWikiApi(Context context,
@Named("default_preferences") SharedPreferences defaultPreferences,
@Named("category_prefs") SharedPreferences categoryPrefs,
@Named("default_preferences") BasicKvStore defaultKvStore,
@Named("category_prefs") BasicKvStore categoryKvStore,
Gson gson,
OkHttpClient okHttpClient) {
return new ApacheHttpClientMediaWikiApi(context, BuildConfig.WIKIMEDIA_API_HOST, BuildConfig.WIKIDATA_API_HOST, defaultPreferences, categoryPrefs, gson, okHttpClient);
return new ApacheHttpClientMediaWikiApi(context, BuildConfig.WIKIMEDIA_API_HOST, BuildConfig.WIKIDATA_API_HOST, defaultKvStore, categoryKvStore, gson, okHttpClient);
}
@Provides