Correctly configured injection for fragments and services.

This commit is contained in:
Paul Hawke 2017-08-25 22:54:44 -05:00
parent cfe17cafa6
commit 388f588301
10 changed files with 87 additions and 14 deletions

View file

@ -1,6 +1,5 @@
package fr.free.nrw.commons; package fr.free.nrw.commons;
import android.app.Service;
import android.content.Intent; import android.content.Intent;
import android.os.Binder; import android.os.Binder;
import android.os.Handler; import android.os.Handler;
@ -9,7 +8,9 @@ import android.os.IBinder;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
public abstract class HandlerService<T> extends Service { import dagger.android.DaggerService;
public abstract class HandlerService<T> extends DaggerService {
private volatile Looper threadLooper; private volatile Looper threadLooper;
private volatile ServiceHandler threadHandler; private volatile ServiceHandler threadHandler;
private String serviceName; private String serviceName;

View file

@ -7,13 +7,15 @@ import android.os.IBinder;
import javax.inject.Inject; import javax.inject.Inject;
import dagger.android.DaggerService;
import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.CommonsApplication;
import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.mwapi.MediaWikiApi;
public class WikiAccountAuthenticatorService extends Service { public class WikiAccountAuthenticatorService extends DaggerService {
@Inject MediaWikiApi mwApi; @Inject MediaWikiApi mwApi;
@Inject AccountUtil accountUtil; @Inject AccountUtil accountUtil;
private WikiAccountAuthenticator wikiAccountAuthenticator = null; private WikiAccountAuthenticator wikiAccountAuthenticator = null;
@Override @Override
@ -22,7 +24,6 @@ public class WikiAccountAuthenticatorService extends Service {
return null; return null;
} }
((CommonsApplication)getApplication()).injector().inject(this);
if (wikiAccountAuthenticator == null) { if (wikiAccountAuthenticator == null) {
wikiAccountAuthenticator = new WikiAccountAuthenticator(this, accountUtil, mwApi); wikiAccountAuthenticator = new WikiAccountAuthenticator(this, accountUtil, mwApi);
} }

View file

@ -19,15 +19,13 @@ import fr.free.nrw.commons.upload.UploadService;
AndroidInjectionModule.class, AndroidInjectionModule.class,
AndroidSupportInjectionModule.class, AndroidSupportInjectionModule.class,
ActivityBuilderModule.class, ActivityBuilderModule.class,
FragmentBuilderModule.class,
ServiceBuilderModule.class,
ContentProviderBuilderModule.class ContentProviderBuilderModule.class
}) })
public interface CommonsApplicationComponent extends AndroidInjector<CommonsApplication> { public interface CommonsApplicationComponent extends AndroidInjector<CommonsApplication> {
void inject(CommonsApplication application); void inject(CommonsApplication application);
void inject(WikiAccountAuthenticatorService service);
void inject(UploadService service);
void inject(ContributionsSyncAdapter syncAdapter); void inject(ContributionsSyncAdapter syncAdapter);
void inject(ModificationsSyncAdapter syncAdapter); void inject(ModificationsSyncAdapter syncAdapter);

View file

@ -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();
}

View file

@ -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();
}

View file

@ -17,12 +17,13 @@ import java.lang.reflect.Type;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import dagger.android.support.DaggerFragment;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.location.LatLng;
import fr.free.nrw.commons.utils.UriDeserializer; import fr.free.nrw.commons.utils.UriDeserializer;
import timber.log.Timber; import timber.log.Timber;
public class NearbyListFragment extends Fragment { public class NearbyListFragment extends DaggerFragment {
private static final Type LIST_TYPE = new TypeToken<List<Place>>() { private static final Type LIST_TYPE = new TypeToken<List<Place>>() {
}.getType(); }.getType();
private static final Type CUR_LAT_LNG_TYPE = new TypeToken<LatLng>() { private static final Type CUR_LAT_LNG_TYPE = new TypeToken<LatLng>() {

View file

@ -7,13 +7,14 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import dagger.android.support.DaggerFragment;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
import timber.log.Timber; import timber.log.Timber;
/** /**
* Tells user that Nearby Places cannot be displayed if location permissions are denied * 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() { public NoPermissionsFragment() {
} }

View file

@ -28,11 +28,12 @@ import android.widget.TextView;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder; import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.drawee.view.SimpleDraweeView;
import dagger.android.support.DaggerFragment;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
import fr.free.nrw.commons.contributions.Contribution; import fr.free.nrw.commons.contributions.Contribution;
import fr.free.nrw.commons.media.MediaDetailPagerFragment; import fr.free.nrw.commons.media.MediaDetailPagerFragment;
public class MultipleUploadListFragment extends Fragment { public class MultipleUploadListFragment extends DaggerFragment {
public interface OnMultipleUploadInitiatedHandler { public interface OnMultipleUploadInitiatedHandler {
void OnMultipleUploadInitiated(); void OnMultipleUploadInitiated();

View file

@ -34,12 +34,13 @@ import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
import butterknife.OnItemSelected; import butterknife.OnItemSelected;
import butterknife.OnTouch; import butterknife.OnTouch;
import dagger.android.support.DaggerFragment;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.Utils;
import fr.free.nrw.commons.settings.Prefs; import fr.free.nrw.commons.settings.Prefs;
import timber.log.Timber; import timber.log.Timber;
public class SingleUploadFragment extends Fragment { public class SingleUploadFragment extends DaggerFragment {
private SharedPreferences prefs; private SharedPreferences prefs;
private String license; private String license;

View file

@ -117,8 +117,6 @@ public class UploadService extends HandlerService<Contribution> {
@Override @Override
public void onCreate() { public void onCreate() {
((CommonsApplication)getApplicationContext()).injector().inject(this);
super.onCreate(); super.onCreate();
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);