mirror of https://github.com/tasks/tasks
Move post-save activity to intent service
parent
7dce9854a2
commit
50eedbfe03
@ -1,50 +0,0 @@
|
||||
package org.tasks.injection;
|
||||
|
||||
import com.todoroo.astrid.alarms.AlarmTaskRepeatListener;
|
||||
import com.todoroo.astrid.calls.PhoneStateChangedReceiver;
|
||||
import com.todoroo.astrid.gcal.CalendarAlarmReceiver;
|
||||
import com.todoroo.astrid.gcal.GCalTaskCompleteListener;
|
||||
import com.todoroo.astrid.repeats.RepeatTaskCompleteListener;
|
||||
import com.todoroo.astrid.timers.TimerTaskCompleteListener;
|
||||
|
||||
import org.tasks.locale.receiver.FireReceiver;
|
||||
import org.tasks.notifications.NotificationClearedReceiver;
|
||||
import org.tasks.receivers.BootCompletedReceiver;
|
||||
import org.tasks.receivers.CompleteTaskReceiver;
|
||||
import org.tasks.receivers.MyPackageReplacedReceiver;
|
||||
import org.tasks.receivers.PushReceiver;
|
||||
import org.tasks.receivers.TeslaUnreadReceiver;
|
||||
import org.tasks.widget.TasksWidget;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent(modules = BroadcastModule.class)
|
||||
public interface BroadcastComponent {
|
||||
void inject(FireReceiver fireReceiver);
|
||||
|
||||
void inject(TimerTaskCompleteListener timerTaskCompleteListener);
|
||||
|
||||
void inject(PhoneStateChangedReceiver phoneStateChangedReceiver);
|
||||
|
||||
void inject(AlarmTaskRepeatListener alarmTaskRepeatListener);
|
||||
|
||||
void inject(GCalTaskCompleteListener gCalTaskCompleteListener);
|
||||
|
||||
void inject(CalendarAlarmReceiver calendarAlarmReceiver);
|
||||
|
||||
void inject(RepeatTaskCompleteListener repeatTaskCompleteListener);
|
||||
|
||||
void inject(MyPackageReplacedReceiver myPackageReplacedReceiver);
|
||||
|
||||
void inject(CompleteTaskReceiver completeTaskReceiver);
|
||||
|
||||
void inject(BootCompletedReceiver bootCompletedReceiver);
|
||||
|
||||
void inject(TasksWidget tasksWidget);
|
||||
|
||||
void inject(TeslaUnreadReceiver teslaUnreadReceiver);
|
||||
|
||||
void inject(PushReceiver pushReceiver);
|
||||
|
||||
void inject(NotificationClearedReceiver notificationClearedReceiver);
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package org.tasks.injection;
|
||||
|
||||
import com.todoroo.astrid.alarms.AlarmTaskRepeatListener;
|
||||
import com.todoroo.astrid.calls.PhoneStateChangedReceiver;
|
||||
import com.todoroo.astrid.gcal.CalendarAlarmReceiver;
|
||||
import com.todoroo.astrid.gcal.GCalTaskCompleteListener;
|
||||
import com.todoroo.astrid.repeats.RepeatTaskCompleteListener;
|
||||
import com.todoroo.astrid.timers.TimerTaskCompleteListener;
|
||||
|
||||
import org.tasks.locale.receiver.FireReceiver;
|
||||
import org.tasks.notifications.NotificationClearedReceiver;
|
||||
import org.tasks.receivers.BootCompletedReceiver;
|
||||
import org.tasks.receivers.CompleteTaskReceiver;
|
||||
import org.tasks.receivers.GoogleTaskPushReceiver;
|
||||
import org.tasks.receivers.MyPackageReplacedReceiver;
|
||||
import org.tasks.receivers.PushReceiver;
|
||||
import org.tasks.receivers.TeslaUnreadReceiver;
|
||||
import org.tasks.widget.TasksWidget;
|
||||
|
||||
import dagger.Subcomponent;
|
||||
|
||||
@Subcomponent(modules = BroadcastModule.class)
|
||||
public interface BroadcastComponent {
|
||||
void inject(FireReceiver fireReceiver);
|
||||
|
||||
void inject(GoogleTaskPushReceiver forceSyncReceiver);
|
||||
|
||||
void inject(TimerTaskCompleteListener timerTaskCompleteListener);
|
||||
|
||||
void inject(PhoneStateChangedReceiver phoneStateChangedReceiver);
|
||||
|
||||
void inject(AlarmTaskRepeatListener alarmTaskRepeatListener);
|
||||
|
||||
void inject(GCalTaskCompleteListener gCalTaskCompleteListener);
|
||||
|
||||
void inject(CalendarAlarmReceiver calendarAlarmReceiver);
|
||||
|
||||
void inject(RepeatTaskCompleteListener repeatTaskCompleteListener);
|
||||
|
||||
void inject(MyPackageReplacedReceiver myPackageReplacedReceiver);
|
||||
|
||||
void inject(CompleteTaskReceiver completeTaskReceiver);
|
||||
|
||||
void inject(BootCompletedReceiver bootCompletedReceiver);
|
||||
|
||||
void inject(TasksWidget tasksWidget);
|
||||
|
||||
void inject(TeslaUnreadReceiver teslaUnreadReceiver);
|
||||
|
||||
void inject(PushReceiver pushReceiver);
|
||||
|
||||
void inject(NotificationClearedReceiver notificationClearedReceiver);
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
package org.tasks.receivers;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import com.todoroo.andlib.data.Property;
|
||||
import com.todoroo.astrid.api.AstridApiConstants;
|
||||
import com.todoroo.astrid.data.SyncFlags;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
|
||||
import org.tasks.gtasks.SyncAdapterHelper;
|
||||
import org.tasks.injection.BroadcastComponent;
|
||||
import org.tasks.injection.InjectingBroadcastReceiver;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class GoogleTaskPushReceiver extends InjectingBroadcastReceiver {
|
||||
|
||||
public static void broadcast(Context context, Task task, ContentValues values) {
|
||||
Intent intent = new Intent(context, GoogleTaskPushReceiver.class);
|
||||
intent.putExtra(AstridApiConstants.EXTRAS_TASK, task);
|
||||
intent.putExtra(AstridApiConstants.EXTRAS_VALUES, values);
|
||||
context.sendBroadcast(intent);
|
||||
}
|
||||
|
||||
private static final Property<?>[] TASK_PROPERTIES = { Task.ID, Task.TITLE,
|
||||
Task.NOTES, Task.DUE_DATE, Task.COMPLETION_DATE, Task.DELETION_DATE };
|
||||
|
||||
@Inject SyncAdapterHelper syncAdapterHelper;
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
super.onReceive(context, intent);
|
||||
|
||||
if(!syncAdapterHelper.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Task model = intent.getParcelableExtra(AstridApiConstants.EXTRAS_TASK);
|
||||
ContentValues setValues = intent.getParcelableExtra(AstridApiConstants.EXTRAS_VALUES);
|
||||
if (model == null) {
|
||||
return;
|
||||
}
|
||||
if(model.checkTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC)) {
|
||||
return;
|
||||
}
|
||||
if (checkValuesForProperties(setValues, TASK_PROPERTIES) || model.checkTransitory(SyncFlags.FORCE_SYNC)) {
|
||||
syncAdapterHelper.requestSynchronization();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void inject(BroadcastComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if any of the values changed are among the properties we sync
|
||||
* @return false if none of the properties we sync were changed, true otherwise
|
||||
*/
|
||||
private boolean checkValuesForProperties(ContentValues values, Property<?>[] properties) {
|
||||
if (values == null) {
|
||||
return false;
|
||||
}
|
||||
for (Property<?> property : properties) {
|
||||
if (property != Task.ID && values.containsKey(property.name)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package org.tasks.receivers;
|
||||
|
||||
import android.content.ContentValues;
|
||||
|
||||
import com.todoroo.andlib.data.Property;
|
||||
import com.todoroo.astrid.data.SyncFlags;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
|
||||
import org.tasks.gtasks.SyncAdapterHelper;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class GoogleTaskPusher {
|
||||
|
||||
private static final Property<?>[] GOOGLE_TASK_PROPERTIES = { Task.ID, Task.TITLE,
|
||||
Task.NOTES, Task.DUE_DATE, Task.COMPLETION_DATE, Task.DELETION_DATE };
|
||||
|
||||
private final SyncAdapterHelper syncAdapterHelper;
|
||||
|
||||
@Inject
|
||||
public GoogleTaskPusher(SyncAdapterHelper syncAdapterHelper) {
|
||||
this.syncAdapterHelper = syncAdapterHelper;
|
||||
}
|
||||
|
||||
void push(Task task, ContentValues modifiedValues) {
|
||||
if(!syncAdapterHelper.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(task.checkTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (checkValuesForProperties(modifiedValues, GOOGLE_TASK_PROPERTIES) || task.checkTransitory(SyncFlags.FORCE_SYNC)) {
|
||||
syncAdapterHelper.requestSynchronization();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkValuesForProperties(ContentValues values, Property<?>[] properties) {
|
||||
if (values == null) {
|
||||
return false;
|
||||
}
|
||||
for (Property<?> property : properties) {
|
||||
if (property != Task.ID && values.containsKey(property.name)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2012 Todoroo Inc
|
||||
*
|
||||
* See the file "LICENSE" for the full license governing this code.
|
||||
*/
|
||||
package com.todoroo.astrid.alarms;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import com.todoroo.andlib.utility.DateUtilities;
|
||||
import com.todoroo.astrid.api.AstridApiConstants;
|
||||
|
||||
import org.tasks.injection.BroadcastComponent;
|
||||
import org.tasks.injection.InjectingBroadcastReceiver;
|
||||
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class AlarmTaskRepeatListener extends InjectingBroadcastReceiver {
|
||||
|
||||
public static void broadcast(Context context, long taskId, long oldDueDate, long newDueDate) {
|
||||
Intent intent = new Intent(context, AlarmTaskRepeatListener.class);
|
||||
intent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, taskId);
|
||||
intent.putExtra(AstridApiConstants.EXTRAS_OLD_DUE_DATE, oldDueDate);
|
||||
intent.putExtra(AstridApiConstants.EXTRAS_NEW_DUE_DATE, newDueDate);
|
||||
context.sendBroadcast(intent);
|
||||
}
|
||||
|
||||
@Inject AlarmService alarmService;
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
super.onReceive(context, intent);
|
||||
|
||||
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
|
||||
if(taskId == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
long oldDueDateExtra = intent.getLongExtra(AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0);
|
||||
final long oldDueDate = oldDueDateExtra == 0 ? DateUtilities.now() : oldDueDateExtra;
|
||||
final long newDueDate = intent.getLongExtra(AstridApiConstants.EXTRAS_NEW_DUE_DATE, -1);
|
||||
|
||||
if(newDueDate <= 0 || newDueDate <= oldDueDate) {
|
||||
return;
|
||||
}
|
||||
|
||||
final Set<Long> alarms = new LinkedHashSet<>();
|
||||
alarmService.getAlarms(taskId, metadata -> alarms.add(metadata.getValue(AlarmFields.TIME) + (newDueDate - oldDueDate)));
|
||||
if (!alarms.isEmpty()) {
|
||||
alarmService.synchronizeAlarms(taskId, alarms);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void inject(BroadcastComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
}
|
@ -1,72 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2012 Todoroo Inc
|
||||
*
|
||||
* See the file "LICENSE" for the full license governing this code.
|
||||
*/
|
||||
package com.todoroo.astrid.gcal;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.provider.CalendarContract;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.todoroo.astrid.api.AstridApiConstants;
|
||||
import com.todoroo.astrid.dao.TaskDao;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
|
||||
import org.tasks.R;
|
||||
import org.tasks.injection.BroadcastComponent;
|
||||
import org.tasks.injection.InjectingBroadcastReceiver;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import timber.log.Timber;
|
||||
|
||||
public class GCalTaskCompleteListener extends InjectingBroadcastReceiver {
|
||||
|
||||
public static void broadcast(Context context, long taskId) {
|
||||
Intent intent = new Intent(context, GCalTaskCompleteListener.class);
|
||||
intent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, taskId);
|
||||
context.sendBroadcast(intent);
|
||||
}
|
||||
|
||||
@Inject TaskDao taskDao;
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
super.onReceive(context, intent);
|
||||
|
||||
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
|
||||
if(taskId == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
Task task = taskDao.fetch(taskId, Task.ID, Task.TITLE, Task.CALENDAR_URI);
|
||||
if(task == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String calendarUri = task.getCalendarURI();
|
||||
if(!TextUtils.isEmpty(calendarUri)) {
|
||||
try {
|
||||
// change title of calendar event
|
||||
ContentResolver cr = context.getContentResolver();
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(CalendarContract.Events.TITLE, context.getString(R.string.gcal_completed_title,
|
||||
task.getTitle()));
|
||||
cr.update(Uri.parse(calendarUri), values, null, null);
|
||||
} catch (Exception e) {
|
||||
Timber.e(e, e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void inject(BroadcastComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2012 Todoroo Inc
|
||||
*
|
||||
* See the file "LICENSE" for the full license governing this code.
|
||||
*/
|
||||
package com.todoroo.astrid.timers;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import com.todoroo.astrid.api.AstridApiConstants;
|
||||
import com.todoroo.astrid.dao.TaskDao;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
|
||||
import org.tasks.injection.BroadcastComponent;
|
||||
import org.tasks.injection.InjectingBroadcastReceiver;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class TimerTaskCompleteListener extends InjectingBroadcastReceiver {
|
||||
|
||||
public static void broadcast(Context context, long taskId) {
|
||||
Intent intent = new Intent(context, TimerTaskCompleteListener.class);
|
||||
intent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, taskId);
|
||||
context.sendBroadcast(intent);
|
||||
}
|
||||
|
||||
@Inject TaskDao taskDao;
|
||||
@Inject TimerPlugin timerPlugin;
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
super.onReceive(context, intent);
|
||||
|
||||
long taskId = intent.getLongExtra(AstridApiConstants.EXTRAS_TASK_ID, -1);
|
||||
if(taskId == -1) {
|
||||
return;
|
||||
}
|
||||
|
||||
Task task = taskDao.fetch(taskId, Task.ID, Task.ELAPSED_SECONDS,
|
||||
Task.TIMER_START);
|
||||
if(task == null || task.getTimerStart() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
timerPlugin.stopTimer(task);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void inject(BroadcastComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
}
|
@ -0,0 +1,135 @@
|
||||
package org.tasks.jobs;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.provider.CalendarContract;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.todoroo.astrid.dao.TaskDao;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
import com.todoroo.astrid.data.TaskApiDao;
|
||||
import com.todoroo.astrid.reminders.ReminderService;
|
||||
import com.todoroo.astrid.repeats.RepeatTaskHelper;
|
||||
import com.todoroo.astrid.timers.TimerPlugin;
|
||||
|
||||
import org.tasks.LocalBroadcastManager;
|
||||
import org.tasks.R;
|
||||
import org.tasks.injection.ForApplication;
|
||||
import org.tasks.injection.InjectingJobIntentService;
|
||||
import org.tasks.injection.IntentServiceComponent;
|
||||
import org.tasks.location.GeofenceService;
|
||||
import org.tasks.notifications.NotificationManager;
|
||||
import org.tasks.receivers.PushReceiver;
|
||||
import org.tasks.scheduling.RefreshScheduler;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import timber.log.Timber;
|
||||
|
||||
import static com.todoroo.astrid.dao.TaskDao.TRANS_SUPPRESS_REFRESH;
|
||||
|
||||
public class AfterSaveIntentService extends InjectingJobIntentService {
|
||||
|
||||
private static final String EXTRA_TASK_ID = "extra_task_id";
|
||||
private static final String EXTRA_MODIFIED_VALUES = "extra_modified_values";
|
||||
|
||||
public static void enqueue(Context context, long taskId, ContentValues modifiedValues) {
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(EXTRA_TASK_ID, taskId);
|
||||
intent.putExtra(EXTRA_MODIFIED_VALUES, modifiedValues);
|
||||
AfterSaveIntentService.enqueueWork(context, AfterSaveIntentService.class, JobManager.JOB_ID_TASK_STATUS_CHANGE, intent);
|
||||
}
|
||||
|
||||
@Inject RepeatTaskHelper repeatTaskHelper;
|
||||
@Inject @ForApplication Context context;
|
||||
@Inject TaskDao taskDao;
|
||||
@Inject NotificationManager notificationManager;
|
||||
@Inject GeofenceService geofenceService;
|
||||
@Inject TimerPlugin timerPlugin;
|
||||
@Inject ReminderService reminderService;
|
||||
@Inject RefreshScheduler refreshScheduler;
|
||||
@Inject LocalBroadcastManager localBroadcastManager;
|
||||
|
||||
@Override
|
||||
protected void onHandleWork(@NonNull Intent intent) {
|
||||
super.onHandleWork(intent);
|
||||
|
||||
long taskId = intent.getLongExtra(EXTRA_TASK_ID, -1);
|
||||
ContentValues modifiedValues = intent.getParcelableExtra(EXTRA_MODIFIED_VALUES);
|
||||
|
||||
if (taskId == -1 || modifiedValues == null) {
|
||||
Timber.e("Invalid extras, taskId=%s modifiedValues=%s", taskId, modifiedValues);
|
||||
return;
|
||||
}
|
||||
|
||||
Task task = taskDao.fetch(taskId);
|
||||
if (task == null) {
|
||||
Timber.e("Can't find task with id %s", taskId);
|
||||
return;
|
||||
}
|
||||
|
||||
if(modifiedValues.containsKey(Task.DUE_DATE.name) ||
|
||||
modifiedValues.containsKey(Task.REMINDER_FLAGS.name) ||
|
||||
modifiedValues.containsKey(Task.REMINDER_PERIOD.name) ||
|
||||
modifiedValues.containsKey(Task.REMINDER_LAST.name) ||
|
||||
modifiedValues.containsKey(Task.REMINDER_SNOOZE.name)) {
|
||||
reminderService.scheduleAlarm(taskDao, task);
|
||||
}
|
||||
|
||||
if(TaskApiDao.insignificantChange(modifiedValues)) {
|
||||
return;
|
||||
}
|
||||
|
||||
boolean completionDateModified = modifiedValues.containsKey(Task.COMPLETION_DATE.name);
|
||||
boolean deletionDateModified = modifiedValues.containsKey(Task.DELETION_DATE.name);
|
||||
|
||||
boolean justCompleted = completionDateModified && task.isCompleted();
|
||||
boolean justDeleted = deletionDateModified && task.isDeleted();
|
||||
|
||||
if (justCompleted || justDeleted) {
|
||||
notificationManager.cancel(taskId);
|
||||
geofenceService.cancelGeofences(taskId);
|
||||
} else if (completionDateModified || deletionDateModified) {
|
||||
geofenceService.setupGeofences(taskId);
|
||||
}
|
||||
|
||||
if (justCompleted) {
|
||||
repeatTaskHelper.handleRepeat(task);
|
||||
updateCalendarTitle(task);
|
||||
if (task.getTimerStart() > 0) {
|
||||
timerPlugin.stopTimer(task);
|
||||
}
|
||||
}
|
||||
|
||||
PushReceiver.broadcast(context, task, modifiedValues);
|
||||
refreshScheduler.scheduleRefresh(task);
|
||||
if (!task.checkAndClearTransitory(TRANS_SUPPRESS_REFRESH)) {
|
||||
localBroadcastManager.broadcastRefresh();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateCalendarTitle(Task task) {
|
||||
String calendarUri = task.getCalendarURI();
|
||||
if(!TextUtils.isEmpty(calendarUri)) {
|
||||
try {
|
||||
// change title of calendar event
|
||||
ContentResolver cr = context.getContentResolver();
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(CalendarContract.Events.TITLE, context.getString(R.string.gcal_completed_title,
|
||||
task.getTitle()));
|
||||
cr.update(Uri.parse(calendarUri), values, null, null);
|
||||
} catch (Exception e) {
|
||||
Timber.e(e, e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void inject(IntentServiceComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue