From e1afa6081e1f1c87431cbfad57adc061b939ea28 Mon Sep 17 00:00:00 2001 From: maskara Date: Sat, 13 Jan 2018 01:40:15 +0530 Subject: [PATCH 1/4] Refactor usage of dagger application with fixed dagger application --- .../free/nrw/commons/CommonsApplication.java | 38 +--- .../fr/free/nrw/commons/HandlerService.java | 5 +- .../free/nrw/commons/MediaWikiImageView.java | 7 +- .../free/nrw/commons/auth/LoginActivity.java | 7 +- .../auth/WikiAccountAuthenticatorService.java | 10 +- .../category/CategorizationFragment.java | 10 +- .../category/CategoryContentProvider.java | 18 +- .../ContributionsContentProvider.java | 19 +- .../ContributionsListFragment.java | 11 +- .../ContributionsSyncAdapter.java | 7 +- .../nrw/commons/di/ApplicationContext.java | 10 + .../commons/di/ApplicationlessInjection.java | 99 +++++++++ .../di/CommonsApplicationComponent.java | 16 +- .../commons/di/CommonsApplicationModule.java | 61 ++--- .../di/FixedDaggerAppCompatActivity.java | 43 ++++ .../di/FixedDaggerBroadcastReceiver.java | 31 +++ .../di/FixedDaggerContentProvider.java | 32 +++ .../nrw/commons/di/FixedDaggerFragment.java | 65 ++++++ .../commons/di/FixedDaggerIntentService.java | 32 +++ .../nrw/commons/di/FixedDaggerService.java | 31 +++ .../commons/media/MediaDetailFragment.java | 11 +- .../media/MediaDetailPagerFragment.java | 10 +- .../ModificationsContentProvider.java | 18 +- .../ModificationsSyncAdapter.java | 7 +- .../commons/nearby/NearbyListFragment.java | 11 +- .../commons/nearby/NoPermissionsFragment.java | 11 +- .../commons/settings/SettingsFragment.java | 6 +- .../free/nrw/commons/theme/BaseActivity.java | 5 +- .../upload/MultipleUploadListFragment.java | 11 +- .../commons/upload/SingleUploadFragment.java | 10 +- app/src/main/res/values-sr-el/error.xml | 7 - app/src/main/res/values-sr-el/strings.xml | 208 ------------------ 32 files changed, 556 insertions(+), 311 deletions(-) create mode 100644 app/src/main/java/fr/free/nrw/commons/di/ApplicationContext.java create mode 100644 app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.java create mode 100644 app/src/main/java/fr/free/nrw/commons/di/FixedDaggerAppCompatActivity.java create mode 100644 app/src/main/java/fr/free/nrw/commons/di/FixedDaggerBroadcastReceiver.java create mode 100644 app/src/main/java/fr/free/nrw/commons/di/FixedDaggerContentProvider.java create mode 100644 app/src/main/java/fr/free/nrw/commons/di/FixedDaggerFragment.java create mode 100644 app/src/main/java/fr/free/nrw/commons/di/FixedDaggerIntentService.java create mode 100644 app/src/main/java/fr/free/nrw/commons/di/FixedDaggerService.java delete mode 100644 app/src/main/res/values-sr-el/error.xml delete mode 100644 app/src/main/res/values-sr-el/strings.xml diff --git a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java index 5faf0c1d0..a6cf2d65d 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -1,5 +1,6 @@ package fr.free.nrw.commons; +import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; @@ -18,15 +19,12 @@ import java.io.File; import javax.inject.Inject; import javax.inject.Named; -import dagger.android.AndroidInjector; -import dagger.android.DaggerApplication; import fr.free.nrw.commons.auth.SessionManager; import fr.free.nrw.commons.category.CategoryDao; import fr.free.nrw.commons.contributions.ContributionDao; import fr.free.nrw.commons.data.DBOpenHelper; +import fr.free.nrw.commons.di.ApplicationlessInjection; import fr.free.nrw.commons.di.CommonsApplicationComponent; -import fr.free.nrw.commons.di.CommonsApplicationModule; -import fr.free.nrw.commons.di.DaggerCommonsApplicationComponent; import fr.free.nrw.commons.modifications.ModifierSequenceDao; import fr.free.nrw.commons.utils.FileUtils; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -42,10 +40,11 @@ import timber.log.Timber; resDialogCommentPrompt = R.string.crash_dialog_comment_prompt, resDialogOkToast = R.string.crash_dialog_ok_toast ) -public class CommonsApplication extends DaggerApplication { +public class CommonsApplication extends Application { @Inject SessionManager sessionManager; @Inject DBOpenHelper dbOpenHelper; + @Inject @Named("default_preferences") SharedPreferences defaultPrefs; @Inject @Named("application_preferences") SharedPreferences applicationPrefs; @Inject @Named("prefs") SharedPreferences otherPrefs; @@ -61,6 +60,7 @@ public class CommonsApplication extends DaggerApplication { private CommonsApplicationComponent component; private RefWatcher refWatcher; + /** * Used to declare and initialize various components and dependencies */ @@ -68,6 +68,11 @@ public class CommonsApplication extends DaggerApplication { public void onCreate() { super.onCreate(); + ApplicationlessInjection + .getInstance(this) + .getCommonsApplicationComponent() + .inject(this); + Fresco.initialize(this); if (setupLeakCanary() == RefWatcher.DISABLED) { return; @@ -85,6 +90,7 @@ public class CommonsApplication extends DaggerApplication { System.setProperty("in.yuvi.http.fluent.PROGRESS_TRIGGER_THRESHOLD", "3.0"); } + /** * Helps in setting up LeakCanary library * @return instance of LeakCanary @@ -107,28 +113,6 @@ public class CommonsApplication extends DaggerApplication { return application.refWatcher; } - /** - * Helps in injecting dependency library Dagger - * @return Dagger injector - */ - @Override - protected AndroidInjector applicationInjector() { - return injector(); - } - - /** - * used to create injector of application component - * @return Application component of Dagger - */ - public CommonsApplicationComponent injector() { - if (component == null) { - component = DaggerCommonsApplicationComponent.builder() - .appModule(new CommonsApplicationModule(this)) - .build(); - } - return component; - } - /** * clears data of current application * @param context Application context diff --git a/app/src/main/java/fr/free/nrw/commons/HandlerService.java b/app/src/main/java/fr/free/nrw/commons/HandlerService.java index 69a1ea4b9..f8f9e62b7 100644 --- a/app/src/main/java/fr/free/nrw/commons/HandlerService.java +++ b/app/src/main/java/fr/free/nrw/commons/HandlerService.java @@ -1,5 +1,6 @@ package fr.free.nrw.commons; +import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.Handler; @@ -8,9 +9,11 @@ import android.os.IBinder; import android.os.Looper; import android.os.Message; +import dagger.android.AndroidInjection; import dagger.android.DaggerService; +import fr.free.nrw.commons.di.FixedDaggerService; -public abstract class HandlerService extends DaggerService { +public abstract class HandlerService extends FixedDaggerService { private volatile Looper threadLooper; private volatile ServiceHandler threadHandler; private String serviceName; diff --git a/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java b/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java index 03fee8852..35d197782 100644 --- a/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java +++ b/app/src/main/java/fr/free/nrw/commons/MediaWikiImageView.java @@ -14,6 +14,7 @@ import com.facebook.drawee.view.SimpleDraweeView; import javax.inject.Inject; +import fr.free.nrw.commons.di.ApplicationlessInjection; import fr.free.nrw.commons.mwapi.MediaWikiApi; import timber.log.Timber; @@ -71,7 +72,11 @@ public class MediaWikiImageView extends SimpleDraweeView { * Initializes MediaWikiImageView. */ private void init() { - ((CommonsApplication) getContext().getApplicationContext()).injector().inject(this); + ApplicationlessInjection + .getInstance(getContext() + .getApplicationContext()) + .getCommonsApplicationComponent() + .inject(this); setHierarchy(GenericDraweeHierarchyBuilder .newInstance(getResources()) .setPlaceholderImage(VectorDrawableCompat.create(getResources(), diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java index d17120106..780f4310b 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java @@ -33,6 +33,7 @@ import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.WelcomeActivity; import fr.free.nrw.commons.contributions.ContributionsActivity; +import fr.free.nrw.commons.di.ApplicationlessInjection; import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.theme.NavigationBaseActivity; import timber.log.Timber; @@ -66,8 +67,12 @@ public class LoginActivity extends AccountAuthenticatorActivity { setTheme(Utils.isDarkTheme(this) ? R.style.DarkAppTheme : R.style.LightAppTheme); getDelegate().installViewFactory(); getDelegate().onCreate(savedInstanceState); - AndroidInjection.inject(this); + super.onCreate(savedInstanceState); + ApplicationlessInjection + .getInstance(this.getApplicationContext()) + .getCommonsApplicationComponent() + .inject(this); setContentView(R.layout.activity_login); diff --git a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java index b0f3e6063..d75696dbc 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java @@ -1,20 +1,28 @@ package fr.free.nrw.commons.auth; +import android.app.Service; import android.content.Intent; import android.os.IBinder; import javax.inject.Inject; +import dagger.android.AndroidInjection; import dagger.android.DaggerService; +import fr.free.nrw.commons.di.FixedDaggerService; import fr.free.nrw.commons.mwapi.MediaWikiApi; import static android.accounts.AccountManager.ACTION_AUTHENTICATOR_INTENT; -public class WikiAccountAuthenticatorService extends DaggerService { +public class WikiAccountAuthenticatorService extends FixedDaggerService { @Inject MediaWikiApi mwApi; private WikiAccountAuthenticator wikiAccountAuthenticator = null; + @Override + public void onCreate() { + super.onCreate(); + } + @Override public IBinder onBind(Intent intent) { if (!intent.getAction().equals(ACTION_AUTHENTICATOR_INTENT)) { diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 4787d0e4f..fdb7f390b 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -1,5 +1,6 @@ package fr.free.nrw.commons.category; +import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.AlertDialog; @@ -33,8 +34,8 @@ import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; -import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.di.FixedDaggerFragment; import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.upload.MwVolleyApi; import fr.free.nrw.commons.utils.StringSortingUtils; @@ -49,7 +50,7 @@ import static android.view.KeyEvent.KEYCODE_BACK; /** * Displays the category suggestion and selection screen. Category search is initiated here. */ -public class CategorizationFragment extends DaggerFragment { +public class CategorizationFragment extends FixedDaggerFragment { public static final int SEARCH_CATS_LIMIT = 25; @@ -82,6 +83,11 @@ public class CategorizationFragment extends DaggerFragment { } }); + @Override + public void onAttach(Context context) { + super.onAttach(context); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java index dcc1bc6f2..058082345 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java @@ -12,8 +12,10 @@ import android.text.TextUtils; import javax.inject.Inject; +import dagger.Lazy; import dagger.android.AndroidInjection; import fr.free.nrw.commons.data.DBOpenHelper; +import fr.free.nrw.commons.di.FixedDaggerContentProvider; import timber.log.Timber; import static android.content.UriMatcher.NO_MATCH; @@ -21,7 +23,7 @@ import static fr.free.nrw.commons.category.CategoryDao.Table.ALL_FIELDS; import static fr.free.nrw.commons.category.CategoryDao.Table.COLUMN_ID; import static fr.free.nrw.commons.category.CategoryDao.Table.TABLE_NAME; -public class CategoryContentProvider extends ContentProvider { +public class CategoryContentProvider extends FixedDaggerContentProvider { public static final String AUTHORITY = "fr.free.nrw.commons.categories.contentprovider"; // For URI matcher @@ -42,12 +44,12 @@ public class CategoryContentProvider extends ContentProvider { return Uri.parse(BASE_URI.toString() + "/" + id); } - @Inject DBOpenHelper dbOpenHelper; + @Inject Lazy dbOpenHelper; @Override public boolean onCreate() { - AndroidInjection.inject(this); - return false; + super.onCreate(); + return true; } @SuppressWarnings("ConstantConditions") @@ -59,7 +61,7 @@ public class CategoryContentProvider extends ContentProvider { int uriType = uriMatcher.match(uri); - SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); + SQLiteDatabase db = dbOpenHelper.get().getReadableDatabase(); Cursor cursor; switch (uriType) { @@ -95,7 +97,7 @@ public class CategoryContentProvider extends ContentProvider { @Override public Uri insert(@NonNull Uri uri, ContentValues contentValues) { int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); long id; switch (uriType) { case CATEGORIES: @@ -118,7 +120,7 @@ public class CategoryContentProvider extends ContentProvider { public int bulkInsert(@NonNull Uri uri, @NonNull ContentValues[] values) { Timber.d("Hello, bulk insert! (CategoryContentProvider)"); int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); sqlDB.beginTransaction(); switch (uriType) { case CATEGORIES: @@ -150,7 +152,7 @@ public class CategoryContentProvider extends ContentProvider { and will error out otherwise. */ int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); int rowsUpdated; switch (uriType) { case CATEGORIES_ID: diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java index 4d82bdfb1..ca5475347 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java @@ -12,15 +12,17 @@ import android.text.TextUtils; import javax.inject.Inject; +import dagger.Lazy; import dagger.android.AndroidInjection; import fr.free.nrw.commons.data.DBOpenHelper; +import fr.free.nrw.commons.di.FixedDaggerContentProvider; import timber.log.Timber; import static android.content.UriMatcher.NO_MATCH; import static fr.free.nrw.commons.contributions.ContributionDao.Table.ALL_FIELDS; import static fr.free.nrw.commons.contributions.ContributionDao.Table.TABLE_NAME; -public class ContributionsContentProvider extends ContentProvider { +public class ContributionsContentProvider extends FixedDaggerContentProvider { private static final int CONTRIBUTIONS = 1; private static final int CONTRIBUTIONS_ID = 2; @@ -39,11 +41,12 @@ public class ContributionsContentProvider extends ContentProvider { return Uri.parse(BASE_URI.toString() + "/" + id); } - @Inject DBOpenHelper dbOpenHelper; + @Inject + Lazy dbOpenHelper; @Override public boolean onCreate() { - AndroidInjection.inject(this); + super.onCreate(); return true; } @@ -56,7 +59,7 @@ public class ContributionsContentProvider extends ContentProvider { int uriType = uriMatcher.match(uri); - SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); + SQLiteDatabase db = dbOpenHelper.get().getReadableDatabase(); Cursor cursor; switch (uriType) { @@ -92,7 +95,7 @@ public class ContributionsContentProvider extends ContentProvider { @Override public Uri insert(@NonNull Uri uri, ContentValues contentValues) { int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); long id = 0; switch (uriType) { case CONTRIBUTIONS: @@ -111,7 +114,7 @@ public class ContributionsContentProvider extends ContentProvider { int rows; int uriType = uriMatcher.match(uri); - SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); + SQLiteDatabase db = dbOpenHelper.get().getReadableDatabase(); switch (uriType) { case CONTRIBUTIONS_ID: @@ -133,7 +136,7 @@ public class ContributionsContentProvider extends ContentProvider { public int bulkInsert(@NonNull Uri uri, @NonNull ContentValues[] values) { Timber.d("Hello, bulk insert! (ContributionsContentProvider)"); int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); sqlDB.beginTransaction(); switch (uriType) { case CONTRIBUTIONS: @@ -164,7 +167,7 @@ public class ContributionsContentProvider extends ContentProvider { error out otherwise. */ int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); int rowsUpdated = 0; switch (uriType) { case CONTRIBUTIONS: diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java index 590d4e6ad..f38e4e64b 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java @@ -1,11 +1,13 @@ package fr.free.nrw.commons.contributions; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; @@ -25,8 +27,10 @@ import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; +import dagger.android.support.AndroidSupportInjection; import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.di.FixedDaggerFragment; import fr.free.nrw.commons.nearby.NearbyActivity; import timber.log.Timber; @@ -36,7 +40,7 @@ import static android.app.Activity.RESULT_OK; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.view.View.GONE; -public class ContributionsListFragment extends DaggerFragment { +public class ContributionsListFragment extends FixedDaggerFragment { @BindView(R.id.contributionsList) GridView contributionsList; @@ -75,6 +79,11 @@ public class ContributionsListFragment extends DaggerFragment { return v; } + @Override + public void onAttach(Context context) { + super.onAttach(context); + } + public ListAdapter getAdapter() { return contributionsList.getAdapter(); } diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java index f8245032b..5be634a2e 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsSyncAdapter.java @@ -25,6 +25,7 @@ import javax.inject.Named; import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.Utils; +import fr.free.nrw.commons.di.ApplicationlessInjection; import fr.free.nrw.commons.mwapi.LogEventResult; import fr.free.nrw.commons.mwapi.MediaWikiApi; import timber.log.Timber; @@ -81,7 +82,11 @@ public class ContributionsSyncAdapter extends AbstractThreadedSyncAdapter { @Override public void onPerformSync(Account account, Bundle bundle, String authority, ContentProviderClient contentProviderClient, SyncResult syncResult) { - ((CommonsApplication) getContext().getApplicationContext()).injector().inject(this); + ApplicationlessInjection + .getInstance(getContext() + .getApplicationContext()) + .getCommonsApplicationComponent() + .inject(this); // This code is fraught with possibilities of race conditions, but lalalalala I can't hear you! String user = account.name; String lastModified = prefs.getString("lastSyncTimestamp", ""); diff --git a/app/src/main/java/fr/free/nrw/commons/di/ApplicationContext.java b/app/src/main/java/fr/free/nrw/commons/di/ApplicationContext.java new file mode 100644 index 000000000..82f88ae3b --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/di/ApplicationContext.java @@ -0,0 +1,10 @@ +package fr.free.nrw.commons.di; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import javax.inject.Qualifier; + +@Qualifier +@Retention(RetentionPolicy.RUNTIME) +public @interface ApplicationContext {} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.java b/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.java new file mode 100644 index 000000000..7ba35c47b --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.java @@ -0,0 +1,99 @@ +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 android.support.v4.app.Fragment; + +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; + +public class ApplicationlessInjection + implements + HasActivityInjector, + HasFragmentInjector, + HasSupportFragmentInjector, + HasServiceInjector, + HasBroadcastReceiverInjector, + HasContentProviderInjector { + + private static ApplicationlessInjection instance = null; + + @Inject + DispatchingAndroidInjector activityInjector; + @Inject + DispatchingAndroidInjector broadcastReceiverInjector; + @Inject + DispatchingAndroidInjector fragmentInjector; + @Inject + DispatchingAndroidInjector supportFragmentInjector; + @Inject + DispatchingAndroidInjector serviceInjector; + @Inject + DispatchingAndroidInjector contentProviderInjector; + + private CommonsApplicationComponent commonsApplicationComponent; + + public ApplicationlessInjection(Context applicationContext) { + commonsApplicationComponent = DaggerCommonsApplicationComponent.builder() + .appModule(new CommonsApplicationModule(applicationContext)).build(); + commonsApplicationComponent.inject(this); + } + + @Override + public DispatchingAndroidInjector activityInjector() { + return activityInjector; + } + + @Override + public DispatchingAndroidInjector fragmentInjector() { + return fragmentInjector; + } + + @Override + public DispatchingAndroidInjector supportFragmentInjector() { + return supportFragmentInjector; + } + + @Override + public DispatchingAndroidInjector broadcastReceiverInjector() { + return broadcastReceiverInjector; + } + + @Override + public DispatchingAndroidInjector serviceInjector() { + return serviceInjector; + } + + @Override + public AndroidInjector 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; + } + +} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationComponent.java b/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationComponent.java index 2881f33fd..14985c6b6 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationComponent.java +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationComponent.java @@ -1,5 +1,7 @@ package fr.free.nrw.commons.di; +import android.content.Context; + import javax.inject.Singleton; import dagger.Component; @@ -8,8 +10,13 @@ import dagger.android.AndroidInjector; 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.category.CategoryContentProvider; +import fr.free.nrw.commons.contributions.ContributionsContentProvider; import fr.free.nrw.commons.contributions.ContributionsSyncAdapter; +import fr.free.nrw.commons.modifications.ModificationsContentProvider; import fr.free.nrw.commons.modifications.ModificationsSyncAdapter; +import fr.free.nrw.commons.settings.SettingsFragment; @Singleton @Component(modules = { @@ -21,7 +28,7 @@ import fr.free.nrw.commons.modifications.ModificationsSyncAdapter; ServiceBuilderModule.class, ContentProviderBuilderModule.class }) -public interface CommonsApplicationComponent extends AndroidInjector { +public interface CommonsApplicationComponent extends AndroidInjector { void inject(CommonsApplication application); void inject(ContributionsSyncAdapter syncAdapter); @@ -30,6 +37,13 @@ public interface CommonsApplicationComponent extends AndroidInjector supportFragmentInjector; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + inject(); + super.onCreate(savedInstanceState); + } + + @Override + public AndroidInjector supportFragmentInjector() { + return supportFragmentInjector; + } + + 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); + } + +} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerBroadcastReceiver.java b/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerBroadcastReceiver.java new file mode 100644 index 000000000..4694e9893 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerBroadcastReceiver.java @@ -0,0 +1,31 @@ +package fr.free.nrw.commons.di; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import dagger.android.AndroidInjector; + +public abstract class FixedDaggerBroadcastReceiver extends BroadcastReceiver { + + public FixedDaggerBroadcastReceiver() { + super(); + } + + @Override + public void onReceive(Context context, Intent intent) { + inject(context); + } + + private void inject(Context context) { + ApplicationlessInjection injection = ApplicationlessInjection.getInstance(context.getApplicationContext()); + + AndroidInjector serviceInjector = injection.broadcastReceiverInjector(); + + if (serviceInjector == null) { + throw new NullPointerException("ApplicationlessInjection.broadcastReceiverInjector() returned null"); + } + serviceInjector.inject(this); + } + +} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerContentProvider.java b/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerContentProvider.java new file mode 100644 index 000000000..41dbc30c9 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerContentProvider.java @@ -0,0 +1,32 @@ +package fr.free.nrw.commons.di; + +import android.content.ContentProvider; + +import dagger.android.AndroidInjector; + + +public abstract class FixedDaggerContentProvider extends ContentProvider { + + public FixedDaggerContentProvider() { + super(); + } + + @Override + public boolean onCreate() { + inject(); + return true; + } + + private void inject() { + ApplicationlessInjection injection = ApplicationlessInjection.getInstance(getContext()); + + AndroidInjector serviceInjector = injection.contentProviderInjector(); + + if (serviceInjector == null) { + throw new NullPointerException("ApplicationlessInjection.contentProviderInjector() returned null"); + } + + serviceInjector.inject(this); + } + +} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerFragment.java b/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerFragment.java new file mode 100644 index 000000000..7227d2a93 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerFragment.java @@ -0,0 +1,65 @@ +package fr.free.nrw.commons.di; + +import android.app.Activity; +import android.content.Context; +import android.support.v4.app.Fragment; + +import javax.inject.Inject; + +import dagger.android.AndroidInjector; +import dagger.android.DispatchingAndroidInjector; +import dagger.android.support.HasSupportFragmentInjector; + +public abstract class FixedDaggerFragment extends Fragment implements HasSupportFragmentInjector { + + @Inject + DispatchingAndroidInjector childFragmentInjector; + + @Override + public void onAttach(Context context) { + inject(); + super.onAttach(context); + } + + @Override + public AndroidInjector supportFragmentInjector() { + return childFragmentInjector; + } + + + public void inject() { + HasSupportFragmentInjector hasSupportFragmentInjector = findHasFragmentInjector(); + + AndroidInjector fragmentInjector = hasSupportFragmentInjector.supportFragmentInjector(); + + if (fragmentInjector == null) { + throw new NullPointerException(String.format("%s.supportFragmentInjector() returned null", hasSupportFragmentInjector.getClass().getCanonicalName())); + } + + fragmentInjector.inject(this); + } + + private HasSupportFragmentInjector findHasFragmentInjector() { + Fragment parentFragment = this; + + while ((parentFragment = parentFragment.getParentFragment()) != null) { + if (parentFragment instanceof HasSupportFragmentInjector) { + return (HasSupportFragmentInjector) parentFragment; + } + } + + Activity activity = getActivity(); + + if (activity instanceof HasSupportFragmentInjector) { + return (HasSupportFragmentInjector) activity; + } + + ApplicationlessInjection injection = ApplicationlessInjection.getInstance(activity.getApplicationContext()); + if (injection != null) { + return injection; + } + + throw new IllegalArgumentException(String.format("No injector was found for %s", getClass().getCanonicalName())); + } + +} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerIntentService.java b/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerIntentService.java new file mode 100644 index 000000000..3a1df1cfd --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerIntentService.java @@ -0,0 +1,32 @@ +package fr.free.nrw.commons.di; + +import android.app.IntentService; +import android.app.Service; + +import dagger.android.AndroidInjector; + +public abstract class FixedDaggerIntentService extends IntentService { + + public FixedDaggerIntentService(String name) { + super(name); + } + + @Override + public void onCreate() { + inject(); + super.onCreate(); + } + + private void inject() { + ApplicationlessInjection injection = ApplicationlessInjection.getInstance(getApplicationContext()); + + AndroidInjector serviceInjector = injection.serviceInjector(); + + if (serviceInjector == null) { + throw new NullPointerException("ApplicationlessInjection.serviceInjector() returned null"); + } + + serviceInjector.inject(this); + } + +} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerService.java b/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerService.java new file mode 100644 index 000000000..b58f2273d --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerService.java @@ -0,0 +1,31 @@ +package fr.free.nrw.commons.di; + +import android.app.Service; + +import dagger.android.AndroidInjector; + +public abstract class FixedDaggerService extends Service { + + public FixedDaggerService() { + super(); + } + + @Override + public void onCreate() { + inject(); + super.onCreate(); + } + + private void inject() { + ApplicationlessInjection injection = ApplicationlessInjection.getInstance(getApplicationContext()); + + AndroidInjector serviceInjector = injection.serviceInjector(); + + if (serviceInjector == null) { + throw new NullPointerException("ApplicationlessInjection.serviceInjector() returned null"); + } + + serviceInjector.inject(this); + } + +} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 75e366767..382c5b64c 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -1,11 +1,13 @@ package fr.free.nrw.commons.media; +import android.content.Context; import android.content.Intent; import android.database.DataSetObserver; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; @@ -24,6 +26,7 @@ import java.util.Locale; import javax.inject.Inject; import javax.inject.Provider; +import dagger.android.support.AndroidSupportInjection; import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.License; import fr.free.nrw.commons.LicenseList; @@ -37,7 +40,7 @@ import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.ui.widget.CompatTextView; import timber.log.Timber; -public class MediaDetailFragment extends DaggerFragment { +public class MediaDetailFragment extends Fragment { private boolean editable; private MediaDetailPagerFragment.MediaDetailProvider detailProvider; @@ -57,6 +60,12 @@ public class MediaDetailFragment extends DaggerFragment { return mf; } + @Override + public void onAttach(Context context) { + AndroidSupportInjection.inject(this); + super.onAttach(context); + } + @Inject Provider mediaDataExtractorProvider; diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index 5d6e66faf..40d5d9d8f 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -2,6 +2,7 @@ package fr.free.nrw.commons.media; import android.annotation.SuppressLint; import android.app.DownloadManager; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.database.DataSetObserver; @@ -28,6 +29,7 @@ import android.view.ViewGroup; import javax.inject.Inject; import javax.inject.Named; +import dagger.android.support.AndroidSupportInjection; import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; @@ -41,7 +43,7 @@ import static android.content.Context.DOWNLOAD_SERVICE; import static android.content.Intent.ACTION_VIEW; import static android.content.pm.PackageManager.PERMISSION_GRANTED; -public class MediaDetailPagerFragment extends DaggerFragment implements ViewPager.OnPageChangeListener { +public class MediaDetailPagerFragment extends Fragment implements ViewPager.OnPageChangeListener { @Inject MediaWikiApi mwApi; @Inject SessionManager sessionManager; @@ -85,6 +87,12 @@ public class MediaDetailPagerFragment extends DaggerFragment implements ViewPage return view; } + @Override + public void onAttach(Context context) { + AndroidSupportInjection.inject(this); + super.onAttach(context); + } + @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); diff --git a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java index 3f2c01930..c1decaca6 100644 --- a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java @@ -12,13 +12,15 @@ import android.text.TextUtils; import javax.inject.Inject; +import dagger.Lazy; import dagger.android.AndroidInjection; import fr.free.nrw.commons.data.DBOpenHelper; +import fr.free.nrw.commons.di.FixedDaggerContentProvider; import timber.log.Timber; import static fr.free.nrw.commons.modifications.ModifierSequenceDao.Table.TABLE_NAME; -public class ModificationsContentProvider extends ContentProvider { +public class ModificationsContentProvider extends FixedDaggerContentProvider { private static final int MODIFICATIONS = 1; private static final int MODIFICATIONS_ID = 2; @@ -38,11 +40,11 @@ public class ModificationsContentProvider extends ContentProvider { return Uri.parse(BASE_URI.toString() + "/" + id); } - @Inject DBOpenHelper dbOpenHelper; + @Inject Lazy dbOpenHelper; @Override public boolean onCreate() { - AndroidInjection.inject(this); + super.onCreate(); return true; } @@ -60,7 +62,7 @@ public class ModificationsContentProvider extends ContentProvider { throw new IllegalArgumentException("Unknown URI" + uri); } - SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); + SQLiteDatabase db = dbOpenHelper.get().getReadableDatabase(); Cursor cursor = queryBuilder.query(db, projection, selection, selectionArgs, null, null, sortOrder); cursor.setNotificationUri(getContext().getContentResolver(), uri); @@ -76,7 +78,7 @@ public class ModificationsContentProvider extends ContentProvider { @Override public Uri insert(@NonNull Uri uri, ContentValues contentValues) { int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); long id = 0; switch (uriType) { case MODIFICATIONS: @@ -92,7 +94,7 @@ public class ModificationsContentProvider extends ContentProvider { @Override public int delete(@NonNull Uri uri, String s, String[] strings) { int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); switch (uriType) { case MODIFICATIONS_ID: String id = uri.getLastPathSegment(); @@ -110,7 +112,7 @@ public class ModificationsContentProvider extends ContentProvider { public int bulkInsert(@NonNull Uri uri, @NonNull ContentValues[] values) { Timber.d("Hello, bulk insert! (ModificationsContentProvider)"); int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); sqlDB.beginTransaction(); switch (uriType) { case MODIFICATIONS: @@ -138,7 +140,7 @@ public class ModificationsContentProvider extends ContentProvider { In here, the only concat created argument is for id. It is cast to an int, and will error out otherwise. */ int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); int rowsUpdated = 0; switch (uriType) { case MODIFICATIONS: diff --git a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java index f81c273d2..85bfedcfa 100644 --- a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsSyncAdapter.java @@ -20,6 +20,7 @@ import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.contributions.Contribution; import fr.free.nrw.commons.contributions.ContributionDao; import fr.free.nrw.commons.contributions.ContributionsContentProvider; +import fr.free.nrw.commons.di.ApplicationlessInjection; import fr.free.nrw.commons.mwapi.MediaWikiApi; import timber.log.Timber; @@ -36,7 +37,11 @@ public class ModificationsSyncAdapter extends AbstractThreadedSyncAdapter { @Override public void onPerformSync(Account account, Bundle bundle, String s, ContentProviderClient contentProviderClient, SyncResult syncResult) { // This code is fraught with possibilities of race conditions, but lalalalala I can't hear you! - ((CommonsApplication)getContext().getApplicationContext()).injector().inject(this); + ApplicationlessInjection + .getInstance(getContext() + .getApplicationContext()) + .getCommonsApplicationComponent() + .inject(this); Cursor allModifications; try { diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java index 81bc496f2..3cfb4840f 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java @@ -1,7 +1,9 @@ package fr.free.nrw.commons.nearby; +import android.content.Context; import android.net.Uri; import android.os.Bundle; +import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; @@ -16,13 +18,14 @@ import java.lang.reflect.Type; import java.util.Collections; import java.util.List; +import dagger.android.support.AndroidSupportInjection; import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.utils.UriDeserializer; import timber.log.Timber; -public class NearbyListFragment extends DaggerFragment { +public class NearbyListFragment extends Fragment { private static final Type LIST_TYPE = new TypeToken>() { }.getType(); private static final Type CUR_LAT_LNG_TYPE = new TypeToken() { @@ -40,6 +43,12 @@ public class NearbyListFragment extends DaggerFragment { setRetainInstance(true); } + @Override + public void onAttach(Context context) { + AndroidSupportInjection.inject(this); + super.onAttach(context); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java index ca0ae0a89..7a907a1e4 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NoPermissionsFragment.java @@ -1,11 +1,14 @@ package fr.free.nrw.commons.nearby; +import android.content.Context; import android.os.Bundle; +import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import butterknife.ButterKnife; +import dagger.android.support.AndroidSupportInjection; import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; import timber.log.Timber; @@ -13,11 +16,17 @@ import timber.log.Timber; /** * Tells user that Nearby Places cannot be displayed if location permissions are denied */ -public class NoPermissionsFragment extends DaggerFragment { +public class NoPermissionsFragment extends Fragment { public NoPermissionsFragment() { } + @Override + public void onAttach(Context context) { + AndroidSupportInjection.inject(this); + super.onAttach(context); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java index 33e42e4be..2a017c854 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java @@ -30,6 +30,7 @@ import fr.free.nrw.commons.BuildConfig; import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; +import fr.free.nrw.commons.di.ApplicationlessInjection; import fr.free.nrw.commons.utils.FileUtils; public class SettingsFragment extends PreferenceFragment { @@ -40,8 +41,11 @@ public class SettingsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { - AndroidInjection.inject(this); super.onCreate(savedInstanceState); + ApplicationlessInjection + .getInstance(getActivity().getApplicationContext()) + .getCommonsApplicationComponent() + .inject(this); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); diff --git a/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java b/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java index f08496914..43b13dfd6 100644 --- a/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java @@ -3,11 +3,14 @@ package fr.free.nrw.commons.theme; import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.v7.app.AppCompatActivity; +import dagger.android.AndroidInjection; import dagger.android.support.DaggerAppCompatActivity; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.di.FixedDaggerAppCompatActivity; -public abstract class BaseActivity extends DaggerAppCompatActivity { +public abstract class BaseActivity extends FixedDaggerAppCompatActivity { boolean currentTheme; @Override diff --git a/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java index d20d8c1eb..0b6e527e5 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java @@ -5,6 +5,7 @@ import android.graphics.Point; import android.net.Uri; import android.os.Bundle; import android.support.graphics.drawable.VectorDrawableCompat; +import android.support.v4.app.Fragment; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -27,12 +28,12 @@ import android.widget.TextView; import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder; import com.facebook.drawee.view.SimpleDraweeView; -import dagger.android.support.DaggerFragment; +import dagger.android.support.AndroidSupportInjection; import fr.free.nrw.commons.R; import fr.free.nrw.commons.contributions.Contribution; import fr.free.nrw.commons.media.MediaDetailPagerFragment; -public class MultipleUploadListFragment extends DaggerFragment { +public class MultipleUploadListFragment extends Fragment { public interface OnMultipleUploadInitiatedHandler { void OnMultipleUploadInitiated(); @@ -56,6 +57,12 @@ public class MultipleUploadListFragment extends DaggerFragment { private RelativeLayout overlay; } + @Override + public void onAttach(Context context) { + AndroidSupportInjection.inject(this); + super.onAttach(context); + } + private class PhotoDisplayAdapter extends BaseAdapter { @Override diff --git a/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java index 259f38c36..b7faa31e9 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java @@ -8,6 +8,7 @@ import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.annotation.NonNull; +import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; import android.text.Editable; import android.text.TextWatcher; @@ -36,16 +37,18 @@ import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.OnItemSelected; import butterknife.OnTouch; +import dagger.android.support.AndroidSupportInjection; import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; +import fr.free.nrw.commons.di.FixedDaggerFragment; import fr.free.nrw.commons.settings.Prefs; import timber.log.Timber; import static android.view.MotionEvent.ACTION_DOWN; import static android.view.MotionEvent.ACTION_UP; -public class SingleUploadFragment extends DaggerFragment { +public class SingleUploadFragment extends FixedDaggerFragment { @BindView(R.id.titleEdit) EditText titleEdit; @BindView(R.id.descEdit) EditText descEdit; @@ -67,6 +70,11 @@ public class SingleUploadFragment extends DaggerFragment { } } + @Override + public void onAttach(Context context) { + super.onAttach(context); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { diff --git a/app/src/main/res/values-sr-el/error.xml b/app/src/main/res/values-sr-el/error.xml deleted file mode 100644 index 80d668c8b..000000000 --- a/app/src/main/res/values-sr-el/error.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - Ostava se srušila - Ups! Nešto je pošlo naopako. - Recite nam šta ste radili pa to saznanje podelite s nama, putem e-pošte. Time ćete nam pomoći da rešimo problem! - Hvala vam! - diff --git a/app/src/main/res/values-sr-el/strings.xml b/app/src/main/res/values-sr-el/strings.xml deleted file mode 100644 index 3cf62f69c..000000000 --- a/app/src/main/res/values-sr-el/strings.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - Ostava - Podešavanja - Korisničko ime - Lozinka - Prijavi me - Otvori nalog - Prijavljivanje - Sačekajte… - Uspešno ste prijavljeni. - Prijavljivanje nije uspelo. - Datoteka nije pronađena. Pokušajte sa drugom datotekom. - Provera identiteta nije uspela. - Otpremanje je započeto. - Datoteka „%1$s“ je otpremljena. - Tapnite da biste videli otpremanje - Počinjem sa otpremanjem datoteke „%1$s“ - Otpremanje datoteke „%1$s“ - Završavam sa otpremanjem datoteke „%1$s“ - Ne mogu da otpremim „%1$s“ - Tapnite da biste videli - - %d datoteka se otprema - %d datoteke se otpremaju - - Moja skorašnja otpremanja - Na čekanju - Nije uspelo - %1$d%% otpremljeno - Otpremam - Iz galerije - Fotografiši - U blizini - Moja otpremanja - Deli - Otvori u pregledaču - Naslov - Opis - Ne mogu da vas prijavim – mreža ne radi - Ne mogu da vas prijavim – proverite svoje korisničko ime - Ne mogu da vas prijavim – proverite svoju lozinku - Previše neuspešnih pokušaja. Probajte ponovo za nekoliko minuta. - Nažalost, korisnik je blokiran na Ostavi - Morate uneti svoj dvofaktorski kod za autentifikaciju. - Prijava nije uspela - Otpremi - Dajte ime ovom kompletu - Izmene - Otpremi - Pretraži kategorije - Sačuvaj - Osveži - GPS je onemogućen na Vašem uređaju. Želite li ga omogućiti? - Omogući GPS - Još uvek nema otpremanja - - \@string/contributions_subtitle_zero - %d otpremanje - %d otpremanja - - - Započni %d otpremanje - Započni %d otpremanja - - - %d otpremanje - %d otpremanja - - Nema kategorija koje odgovaraju %1$s - Dodajte kategorije na slike da biste olakšali korisnicima njihovo pronalaženje na Ostavi.\n\nDa biste dodali kategoriju, počnite sa pisanjem njenog imena. - Kategorije - Postavke - Otvori nalog - O aplikaciji - Softver otvorenog koda dostupan pod licencom <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">Apache ver. 2</a> Vikimedijina Ostava i njen logo su zaštitni znaci Vikimedijine Fondacije i koriste se sa dozvolom Vikimedijine Fondacine. Mi ne odobravamo ili podržavmo Vikimedijinu Fondaciju.\n\nAplikacija za Vikimedijinu ostavu je aplikacija otvorenog koda koja je napravljena i koja se održava pomoću grantova i volontera Vikimedijine zajednice. Zadužbina Vikimedija nije uključena u stvaranje, razvoj ili održavanje aplikacije. - <a href=\"https://github.com/commons-app/apps-android-commons\">Izvorni kôd</a> i <a href=\"https://commons-app.github.io/\">veb-sajt</a> na GitHub-u. Napravite novi <a href=\"https://github.com/commons-app/apps-android-commons/issues\">zahtev na GitHub-u</a> da biste prijavili greške ili dali predloge. - <a href=\"https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\">Politika privatnosti</a> - <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/CREDITS\">Zasluge</a> - O aplikaciji - Pošaljite povratne informacije (putem e-pošte) - Nije instaliran imejl klijent - Nedavno korišćene kategorije - Čekam na prvu sinhronizaciju… - Još niste otpremili nijednu fotografiju. - Pokušaj ponovo - Otkaži - Slika će se voditi pod licencom %1$s - Slanjem ove slike, ja tvrdim da je u pitanju moj rad, da ne sadrži materijal ili selfije zaštićene autorskim pravima, te da je na ostale načine u skladu sa <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">smernicama Vikimedijine ostave</a>. - Preuzmi - Licenca - Koristi prethodan naslov/opis - Automatski detektuj trenutnu lokaciju - Primi trenutnu lokaciju da bi predložili kategoriju ako slika nije geografski označena - Noćni režim - Koristiti tamnu temu - Autorstvo-Deliti pod istim uslovima 4.0 - Autorstvo 4.0 - Autorstvo-Deliti pod istim uslovimau 3.0 - Autorstvo 3.0 - CC0 - CC BY-SA 3.0 - CC BY-SA 3.0 (Austrija) - CC BY-SA 3.0 (Nemačka) - CC BY-SA 3.0 (Estonija) - CC BY-SA 3.0 (Španija) - CC BY-SA 3.0 (Hrvatska) - CC BY-SA 3.0 (Luksemburg) - CC BY-SA 3.0 (Holandija) - CC BY-SA 3.0 (Norveška) - CC BY-SA 3.0 (Poljska) - CC BY-SA 3.0 (Rumunija) - CC BY 3.0 - CC BY-SA 4.0 - CC BY 4.0 - CC Nula - Vikimedijina Ostava sadrži većinu slika koja se koristi na Vikipediji. - Vaše slike pomažu u obrazovanju ljudi širom sveta. - Molimo Vas da postavite slike koje ste preuzeli ili kreirali u potpunosti sami: - - Prirodne objekte (cveće, životinje, planine)\n- Korisne objekte (bicikle, železničke stanice)\n- Poznate ljude (vaš gradonačelnik, Olimpijce koje ste sreli) - Molimo NE otpremajte: - - Selfije i slike tvojih prijatelja\n- Slike koje ste preuzeli sa interneta\n- Skrinšotove iz sopstvenih aplikacija - Primer otpremanja: - — Naslov: Sidnejska opera\n— Opis: Sidnejska opera, pogled preko zaliva\n— Kategorije: Sidnejska opera sa zapada, pogledi na Sidnejksu operu iz daljine - Delite svoje slike. Oživite članke na Vikipediji! - Slike na Vikipediji dolaze iz Ostave. - Sa vašim slikama pomažete u obrazovanju ljudi širom sveta. - Izbegavajte materijale koje ste našli na internetu, kao i slike plakata, korica knjiga itd. - Jeste li razumeli? - Jesam! - Kategorije - Učitavam… - Ništa nije izabrano - Nema opisa - Nepoznata licenca - Osveži - Potrebna dozvola: Provera spoljašnje memorije. Aplikacija bez ovoga ne može da funkcioniše. - Neophodna dozvola: Pisanje spoljašnjeg skladišta. Aplikacija ne može da funkcioniše bez ovoga. - Opciona dozvola: Preuzmi trenutnu lokaciju za predloge kategorija - U redu - Mesta u blizini - Nisu pronađena obližnja mesta - Upozorenje - Ova datoteka je već dostupna na Ostavi. Da li ste sigurni da želite da nastavite? - Da - Ne - Naslov - Naslov medija - Opis - Opis datoteke ide ovde. Može da bude poprilično dug i prikazivaće se u više redova. Nadamo se da će izgledati lepo. - Datum otpremanja - Licenca - Koordinate - Ništa nije uneto - Postani Beta Tester - Priključite se na naš beta kanal na Gugl pleju i pristupajte novim informacijama i popravkama bagova - Koristi Vikipodatke - (Upozorenje: onemogućavanjem ovoga može se izazvati velika potrošnja mobilnih podataka) - 2FA kod - Moj limit za skorašnja otpremanja - Maksimalni limit - Nije moguće prikazati više od 500 - Postavi limit za skorašnja otpremanja - Dvofaktorska autentifikacija trenutno nije podržana. - Zaista želite da se odjavite? - Logo Ostave - Pozadinska slika - Medijska slika neuspešna - Slika nije pronađena - Otpremi sliku - Planina Zao - Lame - Dugin most - Tulipan - Bez selfija - Vlasnička slika - Dobrodošlica Vikipediji - Dobrodošlica za autorska prava - Sidnejska opera - Otkaži - Otvori - Zatvori - Početna - Otpremanje - U blizini - O nama - Podešavanja - Povratne informacije - Odjavi me - Tutorijal - Obaveštenja - Obližnja mesta ne mogu da se prikazuju bez dozvola za lokaciju - opis nije pronađen - Stranica datoteke na Ostavi - Stavka na Vikipodacima - Greška pri keširanju slika - Jedinstven opisni naslov za datoteku, koji će biti ime datoteke. Možete da koristite obični jezik sa razmacima. Ne treba unositi ekstenziju datoteke - Molimo da opišete datoteku koliko je to moguće: Gde je napravljena? Šta prikazuje? Šta je kontekst? Opišite objekte i/ili osobe. Otkrijte informacije koje se ne mogu lako pogoditi, na primer doba dana ako je u pitanju pejzaž. Ako datoteka prikazuje nešto neobično, molimo da objasnite šta je to čini neobičnom. - Davanje dozvole - Upotreba spoljašnjeg skladišta - Spremanje slika napravljenih kamerom aplikacije na Vašem uređaju - Pošalji dnevničku datoteku - Pošalji dnevničku datoteku developerima preko imejla - Prijavite se na svoj nalog - Lokacija nije promenjena. - Lokacija nije dostupna. - Potrebna je dozvola za prikazivanje liste lokacija u blizini - From eb3e4484525c9c0acdc0c325a905c649216006b9 Mon Sep 17 00:00:00 2001 From: maskara Date: Sat, 13 Jan 2018 23:59:45 +0530 Subject: [PATCH 2/4] Refactoring based on comments --- .../fr/free/nrw/commons/HandlerService.java | 7 ++----- .../auth/WikiAccountAuthenticatorService.java | 7 ++----- .../category/CategorizationFragment.java | 4 ++-- .../category/CategoryContentProvider.java | 17 +++++++--------- .../ContributionsContentProvider.java | 20 ++++++++----------- .../ContributionsListFragment.java | 13 ++---------- .../nrw/commons/di/ApplicationContext.java | 10 ---------- .../commons/di/ApplicationlessInjection.java | 18 ++++++----------- ...va => CommonsDaggerAppCompatActivity.java} | 2 +- ...va => CommonsDaggerBroadcastReceiver.java} | 4 ++-- ...java => CommonsDaggerContentProvider.java} | 4 ++-- ...e.java => CommonsDaggerIntentService.java} | 4 ++-- ...Service.java => CommonsDaggerService.java} | 4 ++-- ...java => CommonsDaggerSupportFragment.java} | 2 +- .../ModificationsContentProvider.java | 19 ++++++++---------- .../free/nrw/commons/theme/BaseActivity.java | 7 ++----- .../commons/upload/SingleUploadFragment.java | 12 ++--------- 17 files changed, 51 insertions(+), 103 deletions(-) delete mode 100644 app/src/main/java/fr/free/nrw/commons/di/ApplicationContext.java rename app/src/main/java/fr/free/nrw/commons/di/{FixedDaggerAppCompatActivity.java => CommonsDaggerAppCompatActivity.java} (90%) rename app/src/main/java/fr/free/nrw/commons/di/{FixedDaggerBroadcastReceiver.java => CommonsDaggerBroadcastReceiver.java} (85%) rename app/src/main/java/fr/free/nrw/commons/di/{FixedDaggerContentProvider.java => CommonsDaggerContentProvider.java} (84%) rename app/src/main/java/fr/free/nrw/commons/di/{FixedDaggerIntentService.java => CommonsDaggerIntentService.java} (84%) rename app/src/main/java/fr/free/nrw/commons/di/{FixedDaggerService.java => CommonsDaggerService.java} (86%) rename app/src/main/java/fr/free/nrw/commons/di/{FixedDaggerFragment.java => CommonsDaggerSupportFragment.java} (94%) diff --git a/app/src/main/java/fr/free/nrw/commons/HandlerService.java b/app/src/main/java/fr/free/nrw/commons/HandlerService.java index f8f9e62b7..e5e1b3b1b 100644 --- a/app/src/main/java/fr/free/nrw/commons/HandlerService.java +++ b/app/src/main/java/fr/free/nrw/commons/HandlerService.java @@ -1,6 +1,5 @@ package fr.free.nrw.commons; -import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.Handler; @@ -9,11 +8,9 @@ import android.os.IBinder; import android.os.Looper; import android.os.Message; -import dagger.android.AndroidInjection; -import dagger.android.DaggerService; -import fr.free.nrw.commons.di.FixedDaggerService; +import fr.free.nrw.commons.di.CommonsDaggerService; -public abstract class HandlerService extends FixedDaggerService { +public abstract class HandlerService extends CommonsDaggerService { private volatile Looper threadLooper; private volatile ServiceHandler threadHandler; private String serviceName; diff --git a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java index d75696dbc..2e1e211f6 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java @@ -1,19 +1,16 @@ package fr.free.nrw.commons.auth; -import android.app.Service; import android.content.Intent; import android.os.IBinder; import javax.inject.Inject; -import dagger.android.AndroidInjection; -import dagger.android.DaggerService; -import fr.free.nrw.commons.di.FixedDaggerService; +import fr.free.nrw.commons.di.CommonsDaggerService; import fr.free.nrw.commons.mwapi.MediaWikiApi; import static android.accounts.AccountManager.ACTION_AUTHENTICATOR_INTENT; -public class WikiAccountAuthenticatorService extends FixedDaggerService { +public class WikiAccountAuthenticatorService extends CommonsDaggerService { @Inject MediaWikiApi mwApi; private WikiAccountAuthenticator wikiAccountAuthenticator = null; diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index fdb7f390b..2fce53f8e 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -35,7 +35,7 @@ import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; import fr.free.nrw.commons.R; -import fr.free.nrw.commons.di.FixedDaggerFragment; +import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.upload.MwVolleyApi; import fr.free.nrw.commons.utils.StringSortingUtils; @@ -50,7 +50,7 @@ import static android.view.KeyEvent.KEYCODE_BACK; /** * Displays the category suggestion and selection screen. Category search is initiated here. */ -public class CategorizationFragment extends FixedDaggerFragment { +public class CategorizationFragment extends CommonsDaggerSupportFragment { public static final int SEARCH_CATS_LIMIT = 25; diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java index 058082345..41148ca2a 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java @@ -1,6 +1,5 @@ package fr.free.nrw.commons.category; -import android.content.ContentProvider; import android.content.ContentValues; import android.content.UriMatcher; import android.database.Cursor; @@ -12,10 +11,8 @@ import android.text.TextUtils; import javax.inject.Inject; -import dagger.Lazy; -import dagger.android.AndroidInjection; import fr.free.nrw.commons.data.DBOpenHelper; -import fr.free.nrw.commons.di.FixedDaggerContentProvider; +import fr.free.nrw.commons.di.CommonsDaggerContentProvider; import timber.log.Timber; import static android.content.UriMatcher.NO_MATCH; @@ -23,7 +20,7 @@ import static fr.free.nrw.commons.category.CategoryDao.Table.ALL_FIELDS; import static fr.free.nrw.commons.category.CategoryDao.Table.COLUMN_ID; import static fr.free.nrw.commons.category.CategoryDao.Table.TABLE_NAME; -public class CategoryContentProvider extends FixedDaggerContentProvider { +public class CategoryContentProvider extends CommonsDaggerContentProvider { public static final String AUTHORITY = "fr.free.nrw.commons.categories.contentprovider"; // For URI matcher @@ -44,7 +41,7 @@ public class CategoryContentProvider extends FixedDaggerContentProvider { return Uri.parse(BASE_URI.toString() + "/" + id); } - @Inject Lazy dbOpenHelper; + @Inject DBOpenHelper dbOpenHelper; @Override public boolean onCreate() { @@ -61,7 +58,7 @@ public class CategoryContentProvider extends FixedDaggerContentProvider { int uriType = uriMatcher.match(uri); - SQLiteDatabase db = dbOpenHelper.get().getReadableDatabase(); + SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Cursor cursor; switch (uriType) { @@ -97,7 +94,7 @@ public class CategoryContentProvider extends FixedDaggerContentProvider { @Override public Uri insert(@NonNull Uri uri, ContentValues contentValues) { int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); long id; switch (uriType) { case CATEGORIES: @@ -120,7 +117,7 @@ public class CategoryContentProvider extends FixedDaggerContentProvider { public int bulkInsert(@NonNull Uri uri, @NonNull ContentValues[] values) { Timber.d("Hello, bulk insert! (CategoryContentProvider)"); int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); sqlDB.beginTransaction(); switch (uriType) { case CATEGORIES: @@ -152,7 +149,7 @@ public class CategoryContentProvider extends FixedDaggerContentProvider { and will error out otherwise. */ int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); int rowsUpdated; switch (uriType) { case CATEGORIES_ID: diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java index ca5475347..50c1f24f6 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java @@ -1,6 +1,5 @@ package fr.free.nrw.commons.contributions; -import android.content.ContentProvider; import android.content.ContentValues; import android.content.UriMatcher; import android.database.Cursor; @@ -12,17 +11,15 @@ import android.text.TextUtils; import javax.inject.Inject; -import dagger.Lazy; -import dagger.android.AndroidInjection; import fr.free.nrw.commons.data.DBOpenHelper; -import fr.free.nrw.commons.di.FixedDaggerContentProvider; +import fr.free.nrw.commons.di.CommonsDaggerContentProvider; import timber.log.Timber; import static android.content.UriMatcher.NO_MATCH; import static fr.free.nrw.commons.contributions.ContributionDao.Table.ALL_FIELDS; import static fr.free.nrw.commons.contributions.ContributionDao.Table.TABLE_NAME; -public class ContributionsContentProvider extends FixedDaggerContentProvider { +public class ContributionsContentProvider extends CommonsDaggerContentProvider { private static final int CONTRIBUTIONS = 1; private static final int CONTRIBUTIONS_ID = 2; @@ -41,8 +38,7 @@ public class ContributionsContentProvider extends FixedDaggerContentProvider { return Uri.parse(BASE_URI.toString() + "/" + id); } - @Inject - Lazy dbOpenHelper; + @Inject DBOpenHelper dbOpenHelper; @Override public boolean onCreate() { @@ -59,7 +55,7 @@ public class ContributionsContentProvider extends FixedDaggerContentProvider { int uriType = uriMatcher.match(uri); - SQLiteDatabase db = dbOpenHelper.get().getReadableDatabase(); + SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Cursor cursor; switch (uriType) { @@ -95,7 +91,7 @@ public class ContributionsContentProvider extends FixedDaggerContentProvider { @Override public Uri insert(@NonNull Uri uri, ContentValues contentValues) { int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); long id = 0; switch (uriType) { case CONTRIBUTIONS: @@ -114,7 +110,7 @@ public class ContributionsContentProvider extends FixedDaggerContentProvider { int rows; int uriType = uriMatcher.match(uri); - SQLiteDatabase db = dbOpenHelper.get().getReadableDatabase(); + SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); switch (uriType) { case CONTRIBUTIONS_ID: @@ -136,7 +132,7 @@ public class ContributionsContentProvider extends FixedDaggerContentProvider { public int bulkInsert(@NonNull Uri uri, @NonNull ContentValues[] values) { Timber.d("Hello, bulk insert! (ContributionsContentProvider)"); int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); sqlDB.beginTransaction(); switch (uriType) { case CONTRIBUTIONS: @@ -167,7 +163,7 @@ public class ContributionsContentProvider extends FixedDaggerContentProvider { error out otherwise. */ int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); int rowsUpdated = 0; switch (uriType) { case CONTRIBUTIONS: diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java index f38e4e64b..3a391b293 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java @@ -1,13 +1,11 @@ package fr.free.nrw.commons.contributions; -import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; @@ -27,10 +25,8 @@ import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; -import dagger.android.support.AndroidSupportInjection; -import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; -import fr.free.nrw.commons.di.FixedDaggerFragment; +import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; import fr.free.nrw.commons.nearby.NearbyActivity; import timber.log.Timber; @@ -40,7 +36,7 @@ import static android.app.Activity.RESULT_OK; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.view.View.GONE; -public class ContributionsListFragment extends FixedDaggerFragment { +public class ContributionsListFragment extends CommonsDaggerSupportFragment { @BindView(R.id.contributionsList) GridView contributionsList; @@ -79,11 +75,6 @@ public class ContributionsListFragment extends FixedDaggerFragment { return v; } - @Override - public void onAttach(Context context) { - super.onAttach(context); - } - public ListAdapter getAdapter() { return contributionsList.getAdapter(); } diff --git a/app/src/main/java/fr/free/nrw/commons/di/ApplicationContext.java b/app/src/main/java/fr/free/nrw/commons/di/ApplicationContext.java deleted file mode 100644 index 82f88ae3b..000000000 --- a/app/src/main/java/fr/free/nrw/commons/di/ApplicationContext.java +++ /dev/null @@ -1,10 +0,0 @@ -package fr.free.nrw.commons.di; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -import javax.inject.Qualifier; - -@Qualifier -@Retention(RetentionPolicy.RUNTIME) -public @interface ApplicationContext {} \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.java b/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.java index 7ba35c47b..2faf09b83 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.java +++ b/app/src/main/java/fr/free/nrw/commons/di/ApplicationlessInjection.java @@ -29,18 +29,12 @@ public class ApplicationlessInjection private static ApplicationlessInjection instance = null; - @Inject - DispatchingAndroidInjector activityInjector; - @Inject - DispatchingAndroidInjector broadcastReceiverInjector; - @Inject - DispatchingAndroidInjector fragmentInjector; - @Inject - DispatchingAndroidInjector supportFragmentInjector; - @Inject - DispatchingAndroidInjector serviceInjector; - @Inject - DispatchingAndroidInjector contentProviderInjector; + @Inject DispatchingAndroidInjector activityInjector; + @Inject DispatchingAndroidInjector broadcastReceiverInjector; + @Inject DispatchingAndroidInjector fragmentInjector; + @Inject DispatchingAndroidInjector supportFragmentInjector; + @Inject DispatchingAndroidInjector serviceInjector; + @Inject DispatchingAndroidInjector contentProviderInjector; private CommonsApplicationComponent commonsApplicationComponent; diff --git a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerAppCompatActivity.java b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerAppCompatActivity.java similarity index 90% rename from app/src/main/java/fr/free/nrw/commons/di/FixedDaggerAppCompatActivity.java rename to app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerAppCompatActivity.java index 29388f62a..9f06725de 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerAppCompatActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerAppCompatActivity.java @@ -12,7 +12,7 @@ import dagger.android.AndroidInjector; import dagger.android.DispatchingAndroidInjector; import dagger.android.support.HasSupportFragmentInjector; -public abstract class FixedDaggerAppCompatActivity extends AppCompatActivity implements HasSupportFragmentInjector { +public abstract class CommonsDaggerAppCompatActivity extends AppCompatActivity implements HasSupportFragmentInjector { @Inject DispatchingAndroidInjector supportFragmentInjector; diff --git a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerBroadcastReceiver.java b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerBroadcastReceiver.java similarity index 85% rename from app/src/main/java/fr/free/nrw/commons/di/FixedDaggerBroadcastReceiver.java rename to app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerBroadcastReceiver.java index 4694e9893..3c4cb9914 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerBroadcastReceiver.java +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerBroadcastReceiver.java @@ -6,9 +6,9 @@ import android.content.Intent; import dagger.android.AndroidInjector; -public abstract class FixedDaggerBroadcastReceiver extends BroadcastReceiver { +public abstract class CommonsDaggerBroadcastReceiver extends BroadcastReceiver { - public FixedDaggerBroadcastReceiver() { + public CommonsDaggerBroadcastReceiver() { super(); } diff --git a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerContentProvider.java b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerContentProvider.java similarity index 84% rename from app/src/main/java/fr/free/nrw/commons/di/FixedDaggerContentProvider.java rename to app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerContentProvider.java index 41dbc30c9..38506c4ca 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerContentProvider.java @@ -5,9 +5,9 @@ import android.content.ContentProvider; import dagger.android.AndroidInjector; -public abstract class FixedDaggerContentProvider extends ContentProvider { +public abstract class CommonsDaggerContentProvider extends ContentProvider { - public FixedDaggerContentProvider() { + public CommonsDaggerContentProvider() { super(); } diff --git a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerIntentService.java b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerIntentService.java similarity index 84% rename from app/src/main/java/fr/free/nrw/commons/di/FixedDaggerIntentService.java rename to app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerIntentService.java index 3a1df1cfd..995c517a1 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerIntentService.java +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerIntentService.java @@ -5,9 +5,9 @@ import android.app.Service; import dagger.android.AndroidInjector; -public abstract class FixedDaggerIntentService extends IntentService { +public abstract class CommonsDaggerIntentService extends IntentService { - public FixedDaggerIntentService(String name) { + public CommonsDaggerIntentService(String name) { super(name); } diff --git a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerService.java b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerService.java similarity index 86% rename from app/src/main/java/fr/free/nrw/commons/di/FixedDaggerService.java rename to app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerService.java index b58f2273d..dc6c10b9f 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerService.java +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerService.java @@ -4,9 +4,9 @@ import android.app.Service; import dagger.android.AndroidInjector; -public abstract class FixedDaggerService extends Service { +public abstract class CommonsDaggerService extends Service { - public FixedDaggerService() { + public CommonsDaggerService() { super(); } diff --git a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerFragment.java b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerSupportFragment.java similarity index 94% rename from app/src/main/java/fr/free/nrw/commons/di/FixedDaggerFragment.java rename to app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerSupportFragment.java index 7227d2a93..8c33e7a98 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/FixedDaggerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsDaggerSupportFragment.java @@ -10,7 +10,7 @@ import dagger.android.AndroidInjector; import dagger.android.DispatchingAndroidInjector; import dagger.android.support.HasSupportFragmentInjector; -public abstract class FixedDaggerFragment extends Fragment implements HasSupportFragmentInjector { +public abstract class CommonsDaggerSupportFragment extends Fragment implements HasSupportFragmentInjector { @Inject DispatchingAndroidInjector childFragmentInjector; diff --git a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java index c1decaca6..82361b602 100644 --- a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java @@ -1,6 +1,5 @@ package fr.free.nrw.commons.modifications; -import android.content.ContentProvider; import android.content.ContentValues; import android.content.UriMatcher; import android.database.Cursor; @@ -12,15 +11,13 @@ import android.text.TextUtils; import javax.inject.Inject; -import dagger.Lazy; -import dagger.android.AndroidInjection; import fr.free.nrw.commons.data.DBOpenHelper; -import fr.free.nrw.commons.di.FixedDaggerContentProvider; +import fr.free.nrw.commons.di.CommonsDaggerContentProvider; import timber.log.Timber; import static fr.free.nrw.commons.modifications.ModifierSequenceDao.Table.TABLE_NAME; -public class ModificationsContentProvider extends FixedDaggerContentProvider { +public class ModificationsContentProvider extends CommonsDaggerContentProvider { private static final int MODIFICATIONS = 1; private static final int MODIFICATIONS_ID = 2; @@ -40,7 +37,7 @@ public class ModificationsContentProvider extends FixedDaggerContentProvider { return Uri.parse(BASE_URI.toString() + "/" + id); } - @Inject Lazy dbOpenHelper; + @Inject DBOpenHelper dbOpenHelper; @Override public boolean onCreate() { @@ -62,7 +59,7 @@ public class ModificationsContentProvider extends FixedDaggerContentProvider { throw new IllegalArgumentException("Unknown URI" + uri); } - SQLiteDatabase db = dbOpenHelper.get().getReadableDatabase(); + SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); Cursor cursor = queryBuilder.query(db, projection, selection, selectionArgs, null, null, sortOrder); cursor.setNotificationUri(getContext().getContentResolver(), uri); @@ -78,7 +75,7 @@ public class ModificationsContentProvider extends FixedDaggerContentProvider { @Override public Uri insert(@NonNull Uri uri, ContentValues contentValues) { int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); long id = 0; switch (uriType) { case MODIFICATIONS: @@ -94,7 +91,7 @@ public class ModificationsContentProvider extends FixedDaggerContentProvider { @Override public int delete(@NonNull Uri uri, String s, String[] strings) { int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); switch (uriType) { case MODIFICATIONS_ID: String id = uri.getLastPathSegment(); @@ -112,7 +109,7 @@ public class ModificationsContentProvider extends FixedDaggerContentProvider { public int bulkInsert(@NonNull Uri uri, @NonNull ContentValues[] values) { Timber.d("Hello, bulk insert! (ModificationsContentProvider)"); int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); sqlDB.beginTransaction(); switch (uriType) { case MODIFICATIONS: @@ -140,7 +137,7 @@ public class ModificationsContentProvider extends FixedDaggerContentProvider { In here, the only concat created argument is for id. It is cast to an int, and will error out otherwise. */ int uriType = uriMatcher.match(uri); - SQLiteDatabase sqlDB = dbOpenHelper.get().getWritableDatabase(); + SQLiteDatabase sqlDB = dbOpenHelper.getWritableDatabase(); int rowsUpdated = 0; switch (uriType) { case MODIFICATIONS: diff --git a/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java b/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java index 43b13dfd6..8ef8e84a4 100644 --- a/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java @@ -3,14 +3,11 @@ package fr.free.nrw.commons.theme; import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceManager; -import android.support.v7.app.AppCompatActivity; -import dagger.android.AndroidInjection; -import dagger.android.support.DaggerAppCompatActivity; import fr.free.nrw.commons.R; -import fr.free.nrw.commons.di.FixedDaggerAppCompatActivity; +import fr.free.nrw.commons.di.CommonsDaggerAppCompatActivity; -public abstract class BaseActivity extends FixedDaggerAppCompatActivity { +public abstract class BaseActivity extends CommonsDaggerAppCompatActivity { boolean currentTheme; @Override diff --git a/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java index b7faa31e9..be2401b5c 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java @@ -8,7 +8,6 @@ import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.annotation.NonNull; -import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; import android.text.Editable; import android.text.TextWatcher; @@ -37,18 +36,16 @@ import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.OnItemSelected; import butterknife.OnTouch; -import dagger.android.support.AndroidSupportInjection; -import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; -import fr.free.nrw.commons.di.FixedDaggerFragment; +import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; import fr.free.nrw.commons.settings.Prefs; import timber.log.Timber; import static android.view.MotionEvent.ACTION_DOWN; import static android.view.MotionEvent.ACTION_UP; -public class SingleUploadFragment extends FixedDaggerFragment { +public class SingleUploadFragment extends CommonsDaggerSupportFragment { @BindView(R.id.titleEdit) EditText titleEdit; @BindView(R.id.descEdit) EditText descEdit; @@ -70,11 +67,6 @@ public class SingleUploadFragment extends FixedDaggerFragment { } } - @Override - public void onAttach(Context context) { - super.onAttach(context); - } - @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { From 7c54e953212b16c6d989c180b303a7796adc0c27 Mon Sep 17 00:00:00 2001 From: maskara Date: Sun, 14 Jan 2018 02:09:32 +0530 Subject: [PATCH 3/4] More cleanup based on comments --- .../commons/auth/WikiAccountAuthenticatorService.java | 5 ----- .../nrw/commons/category/CategorizationFragment.java | 10 ---------- .../nrw/commons/category/CategoryContentProvider.java | 6 ------ .../contributions/ContributionsContentProvider.java | 6 ------ .../fr/free/nrw/commons/media/MediaDetailFragment.java | 9 ++------- .../nrw/commons/media/MediaDetailPagerFragment.java | 9 ++------- .../modifications/ModificationsContentProvider.java | 6 ------ 7 files changed, 4 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java index 2e1e211f6..6bc6de076 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/WikiAccountAuthenticatorService.java @@ -15,11 +15,6 @@ public class WikiAccountAuthenticatorService extends CommonsDaggerService { @Inject MediaWikiApi mwApi; private WikiAccountAuthenticator wikiAccountAuthenticator = null; - @Override - public void onCreate() { - super.onCreate(); - } - @Override public IBinder onBind(Intent intent) { if (!intent.getAction().equals(ACTION_AUTHENTICATOR_INTENT)) { diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 2fce53f8e..76a70c0b3 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -83,11 +83,6 @@ public class CategorizationFragment extends CommonsDaggerSupportFragment { } }); - @Override - public void onAttach(Context context) { - super.onAttach(context); - } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -140,11 +135,6 @@ public class CategorizationFragment extends CommonsDaggerSupportFragment { } } - @Override - public void onDestroy() { - super.onDestroy(); - } - @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java index 41148ca2a..16cf49742 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryContentProvider.java @@ -43,12 +43,6 @@ public class CategoryContentProvider extends CommonsDaggerContentProvider { @Inject DBOpenHelper dbOpenHelper; - @Override - public boolean onCreate() { - super.onCreate(); - return true; - } - @SuppressWarnings("ConstantConditions") @Override public Cursor query(@NonNull Uri uri, String[] projection, String selection, diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java index 50c1f24f6..7dc750732 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsContentProvider.java @@ -40,12 +40,6 @@ public class ContributionsContentProvider extends CommonsDaggerContentProvider { @Inject DBOpenHelper dbOpenHelper; - @Override - public boolean onCreate() { - super.onCreate(); - return true; - } - @SuppressWarnings("ConstantConditions") @Override public Cursor query(@NonNull Uri uri, String[] projection, String selection, diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 382c5b64c..1c0a126b8 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -35,12 +35,13 @@ import fr.free.nrw.commons.MediaDataExtractor; import fr.free.nrw.commons.MediaWikiImageView; import fr.free.nrw.commons.PageTitle; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.ui.widget.CompatTextView; import timber.log.Timber; -public class MediaDetailFragment extends Fragment { +public class MediaDetailFragment extends CommonsDaggerSupportFragment { private boolean editable; private MediaDetailPagerFragment.MediaDetailProvider detailProvider; @@ -60,12 +61,6 @@ public class MediaDetailFragment extends Fragment { return mf; } - @Override - public void onAttach(Context context) { - AndroidSupportInjection.inject(this); - super.onAttach(context); - } - @Inject Provider mediaDataExtractorProvider; diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index 40d5d9d8f..ce5a32fbf 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -36,6 +36,7 @@ import fr.free.nrw.commons.R; import fr.free.nrw.commons.auth.SessionManager; import fr.free.nrw.commons.contributions.Contribution; import fr.free.nrw.commons.contributions.ContributionsActivity; +import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; import fr.free.nrw.commons.mwapi.MediaWikiApi; import static android.Manifest.permission.READ_EXTERNAL_STORAGE; @@ -43,7 +44,7 @@ import static android.content.Context.DOWNLOAD_SERVICE; import static android.content.Intent.ACTION_VIEW; import static android.content.pm.PackageManager.PERMISSION_GRANTED; -public class MediaDetailPagerFragment extends Fragment implements ViewPager.OnPageChangeListener { +public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment implements ViewPager.OnPageChangeListener { @Inject MediaWikiApi mwApi; @Inject SessionManager sessionManager; @@ -87,12 +88,6 @@ public class MediaDetailPagerFragment extends Fragment implements ViewPager.OnPa return view; } - @Override - public void onAttach(Context context) { - AndroidSupportInjection.inject(this); - super.onAttach(context); - } - @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); diff --git a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java index 82361b602..c7b92a3ec 100644 --- a/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java +++ b/app/src/main/java/fr/free/nrw/commons/modifications/ModificationsContentProvider.java @@ -39,12 +39,6 @@ public class ModificationsContentProvider extends CommonsDaggerContentProvider { @Inject DBOpenHelper dbOpenHelper; - @Override - public boolean onCreate() { - super.onCreate(); - return true; - } - @Override public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder(); From cb77cb8323517babaf712d462c249401c940a0d7 Mon Sep 17 00:00:00 2001 From: maskara Date: Sun, 14 Jan 2018 02:14:36 +0530 Subject: [PATCH 4/4] Remove unused imports --- .../java/fr/free/nrw/commons/media/MediaDetailFragment.java | 5 ----- .../fr/free/nrw/commons/media/MediaDetailPagerFragment.java | 3 --- 2 files changed, 8 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 1c0a126b8..60577ead7 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -1,13 +1,11 @@ package fr.free.nrw.commons.media; -import android.content.Context; import android.content.Intent; import android.database.DataSetObserver; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; @@ -26,8 +24,6 @@ import java.util.Locale; import javax.inject.Inject; import javax.inject.Provider; -import dagger.android.support.AndroidSupportInjection; -import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.License; import fr.free.nrw.commons.LicenseList; import fr.free.nrw.commons.Media; @@ -37,7 +33,6 @@ import fr.free.nrw.commons.PageTitle; import fr.free.nrw.commons.R; import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; import fr.free.nrw.commons.location.LatLng; -import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.ui.widget.CompatTextView; import timber.log.Timber; diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index ce5a32fbf..d70b515bb 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -2,7 +2,6 @@ package fr.free.nrw.commons.media; import android.annotation.SuppressLint; import android.app.DownloadManager; -import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.database.DataSetObserver; @@ -29,8 +28,6 @@ import android.view.ViewGroup; import javax.inject.Inject; import javax.inject.Named; -import dagger.android.support.AndroidSupportInjection; -import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; import fr.free.nrw.commons.auth.SessionManager;