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;
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<T> extends Service {
import dagger.android.DaggerService;
public abstract class HandlerService<T> extends DaggerService {
private volatile Looper threadLooper;
private volatile ServiceHandler threadHandler;
private String serviceName;

View file

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

View file

@ -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<CommonsApplication> {
void inject(CommonsApplication application);
void inject(WikiAccountAuthenticatorService service);
void inject(UploadService service);
void inject(ContributionsSyncAdapter 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.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<List<Place>>() {
}.getType();
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 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() {
}

View file

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

View file

@ -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;

View file

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