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;
|
package org.tasks.jobs;
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import com.evernote.android.job.Job;
|
import javax.inject.Inject;
|
||||||
import org.tasks.LocalBroadcastManager;
|
import org.tasks.LocalBroadcastManager;
|
||||||
|
import org.tasks.injection.InjectingJob;
|
||||||
|
import org.tasks.injection.JobComponent;
|
||||||
import org.tasks.scheduling.RefreshScheduler;
|
import org.tasks.scheduling.RefreshScheduler;
|
||||||
|
|
||||||
public class RefreshJob extends Job {
|
public class RefreshJob extends InjectingJob {
|
||||||
|
|
||||||
public static final String TAG = "job_refresh";
|
public static final String TAG = "job_refresh";
|
||||||
|
|
||||||
private final RefreshScheduler refreshScheduler;
|
@Inject RefreshScheduler refreshScheduler;
|
||||||
private final LocalBroadcastManager localBroadcastManager;
|
@Inject LocalBroadcastManager localBroadcastManager;
|
||||||
|
|
||||||
RefreshJob(RefreshScheduler refreshScheduler, LocalBroadcastManager localBroadcastManager) {
|
|
||||||
this.refreshScheduler = refreshScheduler;
|
|
||||||
this.localBroadcastManager = localBroadcastManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
protected Result onRunJob(@NonNull Params params) {
|
protected Result onRunJob(@NonNull Params params) {
|
||||||
|
super.onRunJob(params);
|
||||||
|
|
||||||
localBroadcastManager.broadcastRefresh();
|
localBroadcastManager.broadcastRefresh();
|
||||||
refreshScheduler.scheduleNext();
|
refreshScheduler.scheduleNext();
|
||||||
return Result.SUCCESS;
|
return Result.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void inject(JobComponent component) {
|
||||||
|
component.inject(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue