From 388f5883018c5319896cd367929393cfa6d80f4f Mon Sep 17 00:00:00 2001 From: Paul Hawke Date: Fri, 25 Aug 2017 22:54:44 -0500 Subject: [PATCH] Correctly configured injection for fragments and services. --- .../fr/free/nrw/commons/HandlerService.java | 5 ++- .../auth/WikiAccountAuthenticatorService.java | 5 ++- .../di/CommonsApplicationComponent.java | 6 +-- .../nrw/commons/di/FragmentBuilderModule.java | 45 +++++++++++++++++++ .../nrw/commons/di/ServiceBuilderModule.java | 26 +++++++++++ .../commons/nearby/NearbyListFragment.java | 3 +- .../commons/nearby/NoPermissionsFragment.java | 3 +- .../upload/MultipleUploadListFragment.java | 3 +- .../commons/upload/SingleUploadFragment.java | 3 +- .../nrw/commons/upload/UploadService.java | 2 - 10 files changed, 87 insertions(+), 14 deletions(-) create mode 100644 app/src/main/java/fr/free/nrw/commons/di/FragmentBuilderModule.java create mode 100644 app/src/main/java/fr/free/nrw/commons/di/ServiceBuilderModule.java 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 61fa1f1c5..69a1ea4b9 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,7 +8,9 @@ import android.os.IBinder; import android.os.Looper; import android.os.Message; -public abstract class HandlerService extends Service { +import dagger.android.DaggerService; + +public abstract class HandlerService extends DaggerService { 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 617f974b2..0df6b6b35 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 @@ -7,13 +7,15 @@ import android.os.IBinder; import javax.inject.Inject; +import dagger.android.DaggerService; import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.mwapi.MediaWikiApi; -public class WikiAccountAuthenticatorService extends Service { +public class WikiAccountAuthenticatorService extends DaggerService { @Inject MediaWikiApi mwApi; @Inject AccountUtil accountUtil; + private WikiAccountAuthenticator wikiAccountAuthenticator = null; @Override @@ -22,7 +24,6 @@ public class WikiAccountAuthenticatorService extends Service { return null; } - ((CommonsApplication)getApplication()).injector().inject(this); if (wikiAccountAuthenticator == null) { wikiAccountAuthenticator = new WikiAccountAuthenticator(this, accountUtil, mwApi); } 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 ede3d6a20..c4e79c343 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 @@ -19,15 +19,13 @@ import fr.free.nrw.commons.upload.UploadService; AndroidInjectionModule.class, AndroidSupportInjectionModule.class, ActivityBuilderModule.class, + FragmentBuilderModule.class, + ServiceBuilderModule.class, ContentProviderBuilderModule.class }) public interface CommonsApplicationComponent extends AndroidInjector { void inject(CommonsApplication application); - void inject(WikiAccountAuthenticatorService service); - - void inject(UploadService service); - void inject(ContributionsSyncAdapter syncAdapter); void inject(ModificationsSyncAdapter syncAdapter); diff --git a/app/src/main/java/fr/free/nrw/commons/di/FragmentBuilderModule.java b/app/src/main/java/fr/free/nrw/commons/di/FragmentBuilderModule.java new file mode 100644 index 000000000..ddb91fb3d --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/di/FragmentBuilderModule.java @@ -0,0 +1,45 @@ +package fr.free.nrw.commons.di; + +import dagger.Module; +import dagger.android.ContributesAndroidInjector; +import fr.free.nrw.commons.category.CategorizationFragment; +import fr.free.nrw.commons.contributions.ContributionsListFragment; +import fr.free.nrw.commons.media.MediaDetailFragment; +import fr.free.nrw.commons.media.MediaDetailPagerFragment; +import fr.free.nrw.commons.nearby.NearbyListFragment; +import fr.free.nrw.commons.nearby.NoPermissionsFragment; +import fr.free.nrw.commons.settings.SettingsFragment; +import fr.free.nrw.commons.upload.MultipleUploadListFragment; +import fr.free.nrw.commons.upload.SingleUploadFragment; + +@Module +public abstract class FragmentBuilderModule { + + @ContributesAndroidInjector + abstract CategorizationFragment bindCategorizationFragment(); + + @ContributesAndroidInjector + abstract ContributionsListFragment bindContributionsListFragment(); + + @ContributesAndroidInjector + abstract MediaDetailFragment bindMediaDetailFragment(); + + @ContributesAndroidInjector + abstract MediaDetailPagerFragment bindMediaDetailPagerFragment(); + + @ContributesAndroidInjector + abstract NearbyListFragment bindNearbyListFragment(); + + @ContributesAndroidInjector + abstract NoPermissionsFragment bindNoPermissionsFragment(); + + @ContributesAndroidInjector + abstract SettingsFragment bindSettingsFragment(); + + @ContributesAndroidInjector + abstract MultipleUploadListFragment bindMultipleUploadListFragment(); + + @ContributesAndroidInjector + abstract SingleUploadFragment bindSingleUploadFragment(); + +} diff --git a/app/src/main/java/fr/free/nrw/commons/di/ServiceBuilderModule.java b/app/src/main/java/fr/free/nrw/commons/di/ServiceBuilderModule.java new file mode 100644 index 000000000..3d3bc7712 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/di/ServiceBuilderModule.java @@ -0,0 +1,26 @@ +package fr.free.nrw.commons.di; + +import dagger.Module; +import dagger.android.ContributesAndroidInjector; +import fr.free.nrw.commons.auth.WikiAccountAuthenticatorService; +import fr.free.nrw.commons.category.CategorizationFragment; +import fr.free.nrw.commons.contributions.ContributionsListFragment; +import fr.free.nrw.commons.media.MediaDetailFragment; +import fr.free.nrw.commons.media.MediaDetailPagerFragment; +import fr.free.nrw.commons.nearby.NearbyListFragment; +import fr.free.nrw.commons.nearby.NoPermissionsFragment; +import fr.free.nrw.commons.settings.SettingsFragment; +import fr.free.nrw.commons.upload.MultipleUploadListFragment; +import fr.free.nrw.commons.upload.SingleUploadFragment; +import fr.free.nrw.commons.upload.UploadService; + +@Module +public abstract class ServiceBuilderModule { + + @ContributesAndroidInjector + abstract UploadService bindUploadService(); + + @ContributesAndroidInjector + abstract WikiAccountAuthenticatorService bindWikiAccountAuthenticatorService(); + +} 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 00b8a2840..83aebcf4f 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 @@ -17,12 +17,13 @@ import java.lang.reflect.Type; import java.util.Collections; import java.util.List; +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 Fragment { +public class NearbyListFragment extends DaggerFragment { private static final Type LIST_TYPE = new TypeToken>() { }.getType(); private static final Type CUR_LAT_LNG_TYPE = new TypeToken() { 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 5065a7d93..ba9a8de7f 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 @@ -7,13 +7,14 @@ import android.view.View; import android.view.ViewGroup; import butterknife.ButterKnife; +import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; import timber.log.Timber; /** * Tells user that Nearby Places cannot be displayed if location permissions are denied */ -public class NoPermissionsFragment extends Fragment { +public class NoPermissionsFragment extends DaggerFragment { public NoPermissionsFragment() { } 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 629d41639..b81b2e7af 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 @@ -28,11 +28,12 @@ import android.widget.TextView; import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder; import com.facebook.drawee.view.SimpleDraweeView; +import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; import fr.free.nrw.commons.contributions.Contribution; import fr.free.nrw.commons.media.MediaDetailPagerFragment; -public class MultipleUploadListFragment extends Fragment { +public class MultipleUploadListFragment extends DaggerFragment { public interface OnMultipleUploadInitiatedHandler { void OnMultipleUploadInitiated(); 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 161054053..bf0ecf9ae 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 @@ -34,12 +34,13 @@ import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.OnItemSelected; import butterknife.OnTouch; +import dagger.android.support.DaggerFragment; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.settings.Prefs; import timber.log.Timber; -public class SingleUploadFragment extends Fragment { +public class SingleUploadFragment extends DaggerFragment { private SharedPreferences prefs; private String license; diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java index 6b099f32c..c51f055cb 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadService.java @@ -117,8 +117,6 @@ public class UploadService extends HandlerService { @Override public void onCreate() { - ((CommonsApplication)getApplicationContext()).injector().inject(this); - super.onCreate(); notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);