mirror of https://github.com/tasks/tasks
Add InjectingJob
parent
a496040222
commit
f0fd3fa944
@ -0,0 +1,18 @@
|
||||
package org.tasks.injection;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import com.evernote.android.job.Job;
|
||||
|
||||
public abstract class InjectingJob extends Job {
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
protected Result onRunJob(@NonNull Params params) {
|
||||
JobComponent component =
|
||||
Dagger.get(getContext()).getApplicationComponent().plus(new JobModule());
|
||||
inject(component);
|
||||
return Result.SUCCESS;
|
||||
}
|
||||
|
||||
protected abstract void inject(JobComponent component);
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package org.tasks.injection;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
import org.tasks.jobs.AfterSaveIntentService;
|
||||
import org.tasks.jobs.BackupJob;
|
||||
import org.tasks.jobs.NotificationJob;
|
||||
import org.tasks.jobs.RefreshJob;
|
||||
import org.tasks.jobs.SyncJob;
|
||||
import org.tasks.locale.receiver.TaskerIntentService;
|
||||
import org.tasks.location.GeofenceTransitionsIntentService;
|
||||
import org.tasks.scheduling.BackgroundScheduler;
|
||||
import org.tasks.scheduling.CalendarNotificationIntentService;
|
||||
import org.tasks.scheduling.GeofenceSchedulingIntentService;
|
||||
import org.tasks.scheduling.NotificationSchedulerIntentService;
|
||||
|
||||
@Subcomponent(modules = JobModule.class)
|
||||
public interface JobComponent {
|
||||
|
||||
void inject(SyncJob syncJob);
|
||||
|
||||
void inject(NotificationJob notificationJob);
|
||||
|
||||
void inject(BackupJob backupJob);
|
||||
|
||||
void inject(RefreshJob refreshJob);
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package org.tasks.injection;
|
||||
|
||||
import dagger.Module;
|
||||
|
||||
@Module
|
||||
public class JobModule {}
|
@ -1,27 +1,31 @@
|
||||
package org.tasks.jobs;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import com.evernote.android.job.Job;
|
||||
import javax.inject.Inject;
|
||||
import org.tasks.LocalBroadcastManager;
|
||||
import org.tasks.injection.InjectingJob;
|
||||
import org.tasks.injection.JobComponent;
|
||||
import org.tasks.scheduling.RefreshScheduler;
|
||||
|
||||
public class RefreshJob extends Job {
|
||||
public class RefreshJob extends InjectingJob {
|
||||
|
||||
public static final String TAG = "job_refresh";
|
||||
|
||||
private final RefreshScheduler refreshScheduler;
|
||||
private final LocalBroadcastManager localBroadcastManager;
|
||||
|
||||
RefreshJob(RefreshScheduler refreshScheduler, LocalBroadcastManager localBroadcastManager) {
|
||||
this.refreshScheduler = refreshScheduler;
|
||||
this.localBroadcastManager = localBroadcastManager;
|
||||
}
|
||||
@Inject RefreshScheduler refreshScheduler;
|
||||
@Inject LocalBroadcastManager localBroadcastManager;
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
protected Result onRunJob(@NonNull Params params) {
|
||||
super.onRunJob(params);
|
||||
|
||||
localBroadcastManager.broadcastRefresh();
|
||||
refreshScheduler.scheduleNext();
|
||||
return Result.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void inject(JobComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue