Move google task sync code back into main

pull/645/head
Alex Baker 6 years ago
parent bcc5deba18
commit 4c5c1487de

@ -144,13 +144,13 @@ dependencies {
exclude group: 'com.android.support', module: 'support-v4'
}
compile "me.leolin:ShortcutBadger:1.1.18@aar"
compile 'com.google.apis:google-api-services-tasks:v1-rev47-1.22.0'
compile 'com.google.api-client:google-api-client-android:1.22.0'
googleplayCompile "com.google.android.gms:play-services-location:${GPS_VERSION}"
googleplayCompile "com.google.android.gms:play-services-analytics:${GPS_VERSION}"
googleplayCompile "com.google.android.gms:play-services-auth:${GPS_VERSION}"
googleplayCompile "com.google.android.gms:play-services-places:${GPS_VERSION}"
googleplayCompile 'com.google.apis:google-api-services-tasks:v1-rev47-1.22.0'
googleplayCompile 'com.google.api-client:google-api-client-android:1.22.0'
amazonCompile "com.google.android.gms:play-services-analytics:${GPS_VERSION}"

@ -1,23 +0,0 @@
package com.todoroo.astrid.gtasks;
import com.todoroo.astrid.api.Filter;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
public class GtasksFilterExposer {
@Inject
public GtasksFilterExposer() {
}
public List<Filter> getFilters() {
return Collections.emptyList();
}
public Filter getFilter(long aLong) {
return null;
}
}

@ -1,28 +0,0 @@
package com.todoroo.astrid.gtasks;
import org.tasks.data.GoogleTaskList;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
public class GtasksListService {
@Inject
public GtasksListService() {
}
public List<GoogleTaskList> getLists() {
return Collections.emptyList();
}
public GoogleTaskList getList(long storeId) {
return null;
}
public GoogleTaskList getList(String remoteId) {
return null;
}
}

@ -1,13 +0,0 @@
package com.todoroo.astrid.gtasks;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.GtasksFilter;
import org.tasks.data.GoogleTaskList;
import org.tasks.tasklist.GtasksListFragment;
public class GtasksSubtaskListFragment extends GtasksListFragment {
public static TaskListFragment newGtasksSubtaskListFragment(GtasksFilter gtasksFilter, GoogleTaskList list) {
return null;
}
}

@ -1,23 +0,0 @@
package org.tasks;
import android.accounts.Account;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
public class AccountManager {
@Inject
public AccountManager() {
}
public List<String> getAccounts() {
return Collections.emptyList();
}
public Account getAccount(String userName) {
return null;
}
}

@ -1,4 +0,0 @@
package org.tasks.activities;
public class GoogleTaskListSettingsActivity {
}

@ -0,0 +1,40 @@
package org.tasks.gtasks;
import android.app.Activity;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity;
import javax.inject.Inject;
public class PlayServices {
@Inject
public PlayServices() {
}
public boolean isPlayServicesAvailable() {
return false;
}
public boolean refreshAndCheck() {
return false;
}
public void resolve(Activity activity) {
}
public String getStatus() {
return null;
}
public boolean clearToken(GoogleAccountCredential googleAccountCredential) {
return false;
}
public void getAuthToken(GtasksLoginActivity gtasksLoginActivity, String a, GtasksLoginActivity.AuthResultHandler authResultHandler) {
}
}

@ -1,132 +0,0 @@
package org.tasks.injection;
import com.todoroo.astrid.activity.BeastModePreferences;
import com.todoroo.astrid.activity.ShareLinkActivity;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.core.CustomFilterActivity;
import com.todoroo.astrid.core.DefaultsPreferences;
import com.todoroo.astrid.core.OldTaskPreferences;
import com.todoroo.astrid.files.AACRecordingActivity;
import com.todoroo.astrid.gcal.CalendarReminderActivity;
import com.todoroo.astrid.reminders.ReminderPreferences;
import org.tasks.activities.AddAttachmentActivity;
import org.tasks.activities.CalendarSelectionActivity;
import org.tasks.activities.CameraActivity;
import org.tasks.activities.ColorPickerActivity;
import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.activities.DatePickerActivity;
import org.tasks.activities.FilterSelectionActivity;
import org.tasks.activities.FilterSettingsActivity;
import org.tasks.activities.GoogleTaskListSettingsActivity;
import org.tasks.activities.TagSettingsActivity;
import org.tasks.activities.TimePickerActivity;
import org.tasks.caldav.CalDAVSettingsActivity;
import org.tasks.dashclock.DashClockSettings;
import org.tasks.files.FileExplore;
import org.tasks.files.MyFilePickerActivity;
import org.tasks.locale.ui.activity.TaskerCreateTaskActivity;
import org.tasks.locale.ui.activity.TaskerSettingsActivity;
import org.tasks.preferences.AppearancePreferences;
import org.tasks.preferences.BasicPreferences;
import org.tasks.preferences.DateTimePreferences;
import org.tasks.preferences.HelpAndFeedbackActivity;
import org.tasks.preferences.MiscellaneousPreferences;
import org.tasks.reminders.MissedCallActivity;
import org.tasks.reminders.NotificationActivity;
import org.tasks.reminders.SnoozeActivity;
import org.tasks.themes.Theme;
import org.tasks.ui.TaskListViewModel;
import org.tasks.voice.VoiceCommandActivity;
import org.tasks.widget.ShortcutConfigActivity;
import org.tasks.widget.WidgetConfigActivity;
import dagger.Subcomponent;
@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {
Theme getTheme();
FragmentComponent plus(FragmentModule module);
DialogFragmentComponent plus(DialogFragmentModule dialogFragmentModule);
NativeDialogFragmentComponent plus(NativeDialogFragmentModule nativeDialogFragmentModule);
void inject(TaskerSettingsActivity taskerSettingsActivity);
void inject(DashClockSettings dashClockSettings);
void inject(AACRecordingActivity aacRecordingActivity);
void inject(CustomFilterActivity customFilterActivity);
void inject(CalendarReminderActivity calendarReminderActivity);
void inject(FilterSettingsActivity filterSettingsActivity);
void inject(TagSettingsActivity tagSettingsActivity);
void inject(ShareLinkActivity shareLinkActivity);
void inject(TaskListActivity taskListActivity);
void inject(BeastModePreferences beastModePreferences);
void inject(NotificationActivity notificationActivity);
void inject(SnoozeActivity snoozeActivity);
void inject(MissedCallActivity missedCallActivity);
void inject(FileExplore fileExplore);
void inject(CalendarSelectionActivity calendarSelectionActivity);
void inject(FilterSelectionActivity filterSelectionActivity);
void inject(DateAndTimePickerActivity dateAndTimePickerActivity);
void inject(AddAttachmentActivity addAttachmentActivity);
void inject(DatePickerActivity datePickerActivity);
void inject(CameraActivity cameraActivity);
void inject(TimePickerActivity timePickerActivity);
void inject(VoiceCommandActivity voiceCommandActivity);
void inject(ReminderPreferences reminderPreferences);
void inject(WidgetConfigActivity widgetConfigActivity);
void inject(OldTaskPreferences oldTaskPreferences);
void inject(DefaultsPreferences defaultsPreferences);
void inject(ShortcutConfigActivity shortcutConfigActivity);
void inject(MiscellaneousPreferences miscellaneousPreferences);
void inject(HelpAndFeedbackActivity helpAndFeedbackActivity);
void inject(DateTimePreferences dateTimePreferences);
void inject(AppearancePreferences appearancePreferences);
void inject(MyFilePickerActivity myFilePickerActivity);
void inject(ColorPickerActivity colorPickerActivity);
void inject(BasicPreferences basicPreferences);
void inject(GoogleTaskListSettingsActivity googleTaskListSettingsActivity);
void inject(CalDAVSettingsActivity calDAVSettingsActivity);
void inject(TaskerCreateTaskActivity taskerCreateTaskActivity);
void inject(TaskListViewModel viewModel);
}

@ -1,25 +0,0 @@
package org.tasks.injection;
import org.tasks.Tasks;
import org.tasks.dashclock.DashClockExtension;
import org.tasks.widget.ScrollableWidgetUpdateService;
import dagger.Component;
@ApplicationScope
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
void inject(DashClockExtension dashClockExtension);
void inject(Tasks tasks);
void inject(ScrollableWidgetUpdateService scrollableWidgetUpdateService);
ActivityComponent plus(ActivityModule module);
BroadcastComponent plus(BroadcastModule module);
IntentServiceComponent plus(IntentServiceModule module);
SyncAdapterComponent plus(SyncAdapterModule syncAdapterModule);
}

@ -1,40 +0,0 @@
package org.tasks.injection;
import org.tasks.activities.CalendarSelectionDialog;
import org.tasks.activities.RemoteListSupportPicker;
import org.tasks.caldav.DeleteAccountDialog;
import org.tasks.dialogs.AddAttachmentDialog;
import org.tasks.dialogs.ColorPickerDialog;
import org.tasks.dialogs.RecordAudioDialog;
import org.tasks.dialogs.SortDialog;
import org.tasks.reminders.MissedCallDialog;
import org.tasks.reminders.NotificationDialog;
import org.tasks.reminders.SnoozeDialog;
import org.tasks.repeats.CustomRecurrenceDialog;
import dagger.Subcomponent;
@Subcomponent(modules = DialogFragmentModule.class)
public interface DialogFragmentComponent {
void inject(NotificationDialog notificationDialog);
void inject(MissedCallDialog missedCallDialog);
void inject(CalendarSelectionDialog calendarSelectionDialog);
void inject(AddAttachmentDialog addAttachmentDialog);
void inject(SnoozeDialog snoozeDialog);
void inject(SortDialog sortDialog);
void inject(ColorPickerDialog colorPickerDialog);
void inject(RecordAudioDialog recordAudioDialog);
void inject(CustomRecurrenceDialog customRecurrenceDialog);
void inject(RemoteListSupportPicker remoteListSupportPicker);
void inject(DeleteAccountDialog deleteAccountDialog);
}

@ -1,10 +0,0 @@
package org.tasks.injection;
import org.tasks.caldav.CalDAVSyncAdapter;
import dagger.Subcomponent;
@Subcomponent(modules = SyncAdapterModule.class)
public interface SyncAdapterComponent {
void inject(CalDAVSyncAdapter calDAVSyncAdapter);
}

@ -1,17 +0,0 @@
package org.tasks.receivers;
import com.todoroo.astrid.data.Task;
import javax.inject.Inject;
public class PushReceiver {
@Inject
public PushReceiver() {
}
public void push(Task task, Task original) {
}
}

@ -1,42 +0,0 @@
package org.tasks.sync;
import android.content.ContentResolver;
import com.todoroo.astrid.activity.TaskListFragment;
import org.tasks.caldav.CaldavAccountManager;
import javax.inject.Inject;
public class SyncAdapters {
private CaldavAccountManager caldavAccountManager;
@Inject
public SyncAdapters(CaldavAccountManager caldavAccountManager) {
this.caldavAccountManager = caldavAccountManager;
}
public boolean initiateManualSync() {
return caldavAccountManager.initiateManualSync();
}
public void requestSynchronization() {
caldavAccountManager.requestSynchronization();
}
public boolean isGoogleTaskSyncEnabled() {
return false;
}
public void checkPlayServices(TaskListFragment taskListFragment) {
}
public boolean isMasterSyncEnabled() {
return ContentResolver.getMasterSyncAutomatically();
}
public boolean isSyncEnabled() {
return caldavAccountManager.getAccounts().size() > 0;
}
}

@ -1,12 +0,0 @@
package org.tasks.tasklist;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.GtasksFilter;
import org.tasks.data.GoogleTaskList;
public class GtasksListFragment extends TaskListFragment {
public static TaskListFragment newGtasksListFragment(GtasksFilter gtasksFilter, GoogleTaskList list) {
return null;
}
}

@ -1,40 +0,0 @@
package org.tasks.ui;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.data.Task;
import org.tasks.R;
import org.tasks.injection.FragmentComponent;
public class RemoteListFragment extends TaskEditControlFragment {
public static final int TAG = R.string.TEA_ctrl_google_task_list;
@Override
protected int getLayout() {
return 0;
}
@Override
protected int getIcon() {
return 0;
}
@Override
public int controlId() {
return 0;
}
@Override
public void apply(Task task) {
}
@Override
protected void inject(FragmentComponent component) {
}
public void setList(Filter filter) {
}
}

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sku_themes">themes</string>
<string name="common_google_play_services_notification_ticker">Google Play services error</string>
</resources>

@ -1,23 +0,0 @@
package com.todoroo.astrid.gtasks;
import com.todoroo.astrid.api.Filter;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
public class GtasksFilterExposer {
@Inject
public GtasksFilterExposer() {
}
public List<Filter> getFilters() {
return Collections.emptyList();
}
public Filter getFilter(long aLong) {
return null;
}
}

@ -1,28 +0,0 @@
package com.todoroo.astrid.gtasks;
import org.tasks.data.GoogleTaskList;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
public class GtasksListService {
@Inject
public GtasksListService() {
}
public List<GoogleTaskList> getLists() {
return Collections.emptyList();
}
public GoogleTaskList getList(long storeId) {
return null;
}
public GoogleTaskList getList(String remoteId) {
return null;
}
}

@ -1,13 +0,0 @@
package com.todoroo.astrid.gtasks;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.GtasksFilter;
import org.tasks.data.GoogleTaskList;
import org.tasks.tasklist.GtasksListFragment;
public class GtasksSubtaskListFragment extends GtasksListFragment {
public static TaskListFragment newGtasksSubtaskListFragment(GtasksFilter gtasksFilter, GoogleTaskList list) {
return null;
}
}

@ -1,23 +0,0 @@
package org.tasks;
import android.accounts.Account;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;
public class AccountManager {
@Inject
public AccountManager() {
}
public List<String> getAccounts() {
return Collections.emptyList();
}
public Account getAccount(String userName) {
return null;
}
}

@ -1,4 +0,0 @@
package org.tasks.activities;
public class GoogleTaskListSettingsActivity {
}

@ -0,0 +1,40 @@
package org.tasks.gtasks;
import android.app.Activity;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity;
import javax.inject.Inject;
public class PlayServices {
@Inject
public PlayServices() {
}
public boolean isPlayServicesAvailable() {
return false;
}
public boolean refreshAndCheck() {
return false;
}
public void resolve(Activity activity) {
}
public String getStatus() {
return null;
}
public boolean clearToken(GoogleAccountCredential googleAccountCredential) {
return false;
}
public void getAuthToken(GtasksLoginActivity gtasksLoginActivity, String a, GtasksLoginActivity.AuthResultHandler authResultHandler) {
}
}

@ -1,132 +0,0 @@
package org.tasks.injection;
import com.todoroo.astrid.activity.BeastModePreferences;
import com.todoroo.astrid.activity.ShareLinkActivity;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.core.CustomFilterActivity;
import com.todoroo.astrid.core.DefaultsPreferences;
import com.todoroo.astrid.core.OldTaskPreferences;
import com.todoroo.astrid.files.AACRecordingActivity;
import com.todoroo.astrid.gcal.CalendarReminderActivity;
import com.todoroo.astrid.reminders.ReminderPreferences;
import org.tasks.activities.AddAttachmentActivity;
import org.tasks.activities.CalendarSelectionActivity;
import org.tasks.activities.CameraActivity;
import org.tasks.activities.ColorPickerActivity;
import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.activities.DatePickerActivity;
import org.tasks.activities.FilterSelectionActivity;
import org.tasks.activities.FilterSettingsActivity;
import org.tasks.activities.GoogleTaskListSettingsActivity;
import org.tasks.activities.TagSettingsActivity;
import org.tasks.activities.TimePickerActivity;
import org.tasks.caldav.CalDAVSettingsActivity;
import org.tasks.dashclock.DashClockSettings;
import org.tasks.files.FileExplore;
import org.tasks.files.MyFilePickerActivity;
import org.tasks.locale.ui.activity.TaskerCreateTaskActivity;
import org.tasks.locale.ui.activity.TaskerSettingsActivity;
import org.tasks.preferences.AppearancePreferences;
import org.tasks.preferences.BasicPreferences;
import org.tasks.preferences.DateTimePreferences;
import org.tasks.preferences.HelpAndFeedbackActivity;
import org.tasks.preferences.MiscellaneousPreferences;
import org.tasks.reminders.MissedCallActivity;
import org.tasks.reminders.NotificationActivity;
import org.tasks.reminders.SnoozeActivity;
import org.tasks.themes.Theme;
import org.tasks.ui.TaskListViewModel;
import org.tasks.voice.VoiceCommandActivity;
import org.tasks.widget.ShortcutConfigActivity;
import org.tasks.widget.WidgetConfigActivity;
import dagger.Subcomponent;
@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {
Theme getTheme();
FragmentComponent plus(FragmentModule module);
DialogFragmentComponent plus(DialogFragmentModule dialogFragmentModule);
NativeDialogFragmentComponent plus(NativeDialogFragmentModule nativeDialogFragmentModule);
void inject(TaskerSettingsActivity taskerSettingsActivity);
void inject(DashClockSettings dashClockSettings);
void inject(AACRecordingActivity aacRecordingActivity);
void inject(CustomFilterActivity customFilterActivity);
void inject(CalendarReminderActivity calendarReminderActivity);
void inject(FilterSettingsActivity filterSettingsActivity);
void inject(TagSettingsActivity tagSettingsActivity);
void inject(ShareLinkActivity shareLinkActivity);
void inject(TaskListActivity taskListActivity);
void inject(BeastModePreferences beastModePreferences);
void inject(NotificationActivity notificationActivity);
void inject(SnoozeActivity snoozeActivity);
void inject(MissedCallActivity missedCallActivity);
void inject(FileExplore fileExplore);
void inject(CalendarSelectionActivity calendarSelectionActivity);
void inject(FilterSelectionActivity filterSelectionActivity);
void inject(DateAndTimePickerActivity dateAndTimePickerActivity);
void inject(AddAttachmentActivity addAttachmentActivity);
void inject(DatePickerActivity datePickerActivity);
void inject(CameraActivity cameraActivity);
void inject(TimePickerActivity timePickerActivity);
void inject(VoiceCommandActivity voiceCommandActivity);
void inject(ReminderPreferences reminderPreferences);
void inject(WidgetConfigActivity widgetConfigActivity);
void inject(OldTaskPreferences oldTaskPreferences);
void inject(DefaultsPreferences defaultsPreferences);
void inject(ShortcutConfigActivity shortcutConfigActivity);
void inject(MiscellaneousPreferences miscellaneousPreferences);
void inject(HelpAndFeedbackActivity helpAndFeedbackActivity);
void inject(DateTimePreferences dateTimePreferences);
void inject(AppearancePreferences appearancePreferences);
void inject(MyFilePickerActivity myFilePickerActivity);
void inject(ColorPickerActivity colorPickerActivity);
void inject(BasicPreferences basicPreferences);
void inject(GoogleTaskListSettingsActivity googleTaskListSettingsActivity);
void inject(CalDAVSettingsActivity calDAVSettingsActivity);
void inject(TaskerCreateTaskActivity taskerCreateTaskActivity);
void inject(TaskListViewModel viewModel);
}

@ -1,25 +0,0 @@
package org.tasks.injection;
import org.tasks.Tasks;
import org.tasks.dashclock.DashClockExtension;
import org.tasks.widget.ScrollableWidgetUpdateService;
import dagger.Component;
@ApplicationScope
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
void inject(DashClockExtension dashClockExtension);
void inject(Tasks tasks);
void inject(ScrollableWidgetUpdateService scrollableWidgetUpdateService);
ActivityComponent plus(ActivityModule module);
BroadcastComponent plus(BroadcastModule module);
IntentServiceComponent plus(IntentServiceModule module);
SyncAdapterComponent plus(SyncAdapterModule syncAdapterModule);
}

@ -1,40 +0,0 @@
package org.tasks.injection;
import org.tasks.activities.CalendarSelectionDialog;
import org.tasks.activities.RemoteListSupportPicker;
import org.tasks.caldav.DeleteAccountDialog;
import org.tasks.dialogs.AddAttachmentDialog;
import org.tasks.dialogs.ColorPickerDialog;
import org.tasks.dialogs.RecordAudioDialog;
import org.tasks.dialogs.SortDialog;
import org.tasks.reminders.MissedCallDialog;
import org.tasks.reminders.NotificationDialog;
import org.tasks.reminders.SnoozeDialog;
import org.tasks.repeats.CustomRecurrenceDialog;
import dagger.Subcomponent;
@Subcomponent(modules = DialogFragmentModule.class)
public interface DialogFragmentComponent {
void inject(NotificationDialog notificationDialog);
void inject(MissedCallDialog missedCallDialog);
void inject(CalendarSelectionDialog calendarSelectionDialog);
void inject(AddAttachmentDialog addAttachmentDialog);
void inject(SnoozeDialog snoozeDialog);
void inject(SortDialog sortDialog);
void inject(ColorPickerDialog colorPickerDialog);
void inject(RecordAudioDialog recordAudioDialog);
void inject(CustomRecurrenceDialog customRecurrenceDialog);
void inject(RemoteListSupportPicker remoteListSupportPicker);
void inject(DeleteAccountDialog deleteAccountDialog);
}

@ -1,10 +0,0 @@
package org.tasks.injection;
import org.tasks.caldav.CalDAVSyncAdapter;
import dagger.Subcomponent;
@Subcomponent(modules = SyncAdapterModule.class)
public interface SyncAdapterComponent {
void inject(CalDAVSyncAdapter calDAVSyncAdapter);
}

@ -1,17 +0,0 @@
package org.tasks.receivers;
import com.todoroo.astrid.data.Task;
import javax.inject.Inject;
public class PushReceiver {
@Inject
public PushReceiver() {
}
public void push(Task task, Task original) {
}
}

@ -1,42 +0,0 @@
package org.tasks.sync;
import android.content.ContentResolver;
import com.todoroo.astrid.activity.TaskListFragment;
import org.tasks.caldav.CaldavAccountManager;
import javax.inject.Inject;
public class SyncAdapters {
private CaldavAccountManager caldavAccountManager;
@Inject
public SyncAdapters(CaldavAccountManager caldavAccountManager) {
this.caldavAccountManager = caldavAccountManager;
}
public boolean initiateManualSync() {
return caldavAccountManager.initiateManualSync();
}
public void requestSynchronization() {
caldavAccountManager.requestSynchronization();
}
public boolean isGoogleTaskSyncEnabled() {
return false;
}
public void checkPlayServices(TaskListFragment taskListFragment) {
}
public boolean isMasterSyncEnabled() {
return ContentResolver.getMasterSyncAutomatically();
}
public boolean isSyncEnabled() {
return caldavAccountManager.getAccounts().size() > 0;
}
}

@ -1,12 +0,0 @@
package org.tasks.tasklist;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.GtasksFilter;
import org.tasks.data.GoogleTaskList;
public class GtasksListFragment extends TaskListFragment {
public static TaskListFragment newGtasksListFragment(GtasksFilter gtasksFilter, GoogleTaskList list) {
return null;
}
}

@ -1,40 +0,0 @@
package org.tasks.ui;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.data.Task;
import org.tasks.R;
import org.tasks.injection.FragmentComponent;
public class RemoteListFragment extends TaskEditControlFragment {
public static final int TAG = R.string.TEA_ctrl_google_task_list;
@Override
protected int getLayout() {
return 0;
}
@Override
protected int getIcon() {
return 0;
}
@Override
public int controlId() {
return 0;
}
@Override
public void apply(Task task) {
}
@Override
protected void inject(FragmentComponent component) {
}
public void setList(Filter filter) {
}
}

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sku_themes">themes</string>
<string name="common_google_play_services_notification_ticker">Google Play services error</string>
</resources>

@ -44,7 +44,7 @@
android:theme="@style/TranslucentDialog" />
<activity
android:name="com.todoroo.astrid.gtasks.GtasksPreferences"
android:name=".sync.SynchronizationPreferences"
android:label="@string/synchronization"
android:theme="@style/Tasks" />

@ -3,8 +3,8 @@ package org.tasks;
import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import org.tasks.billing.InventoryHelper;
import org.tasks.gtasks.PlayServicesAvailability;
import org.tasks.gtasks.GtaskSyncAdapterHelper;
import org.tasks.gtasks.PlayServices;
import javax.inject.Inject;
@ -13,21 +13,21 @@ public class FlavorSetup {
private final GtasksPreferenceService gtasksPreferenceService;
private final InventoryHelper inventoryHelper;
private final GtaskSyncAdapterHelper gtaskSyncAdapterHelper;
private final PlayServicesAvailability playServicesAvailability;
private final PlayServices playServices;
@Inject
public FlavorSetup(GtasksPreferenceService gtasksPreferenceService, InventoryHelper inventoryHelper,
GtaskSyncAdapterHelper gtaskSyncAdapterHelper, PlayServicesAvailability playServicesAvailability) {
GtaskSyncAdapterHelper gtaskSyncAdapterHelper, PlayServices playServices) {
this.gtasksPreferenceService = gtasksPreferenceService;
this.inventoryHelper = inventoryHelper;
this.gtaskSyncAdapterHelper = gtaskSyncAdapterHelper;
this.playServicesAvailability = playServicesAvailability;
this.playServices = playServices;
}
public void setup() {
inventoryHelper.initialize();
gtasksPreferenceService.stopOngoing(); // if sync ongoing flag was set, clear it
gtaskSyncAdapterHelper.enableSynchronization(gtaskSyncAdapterHelper.isEnabled());
playServicesAvailability.refresh();
gtaskSyncAdapterHelper.enableBackgroundSynchronization(gtaskSyncAdapterHelper.isBackgroundSyncEnabled());
playServices.refresh();
}
}

@ -0,0 +1,115 @@
package org.tasks.gtasks;
import android.accounts.Account;
import android.app.Activity;
import android.content.Context;
import android.widget.Toast;
import com.google.android.gms.auth.GoogleAuthException;
import com.google.android.gms.auth.GoogleAuthUtil;
import com.google.android.gms.auth.UserRecoverableAuthException;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
import com.google.api.services.tasks.TasksScopes;
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity;
import org.tasks.R;
import org.tasks.injection.ForApplication;
import org.tasks.preferences.Preferences;
import java.io.IOException;
import javax.inject.Inject;
import timber.log.Timber;
public class PlayServices {
private static final int REQUEST_RESOLUTION = 10000;
private final Context context;
private final Preferences preferences;
private final GoogleAccountManager accountManager;
@Inject
public PlayServices(@ForApplication Context context, Preferences preferences,
GoogleAccountManager googleAccountManager) {
this.context = context;
this.preferences = preferences;
this.accountManager = googleAccountManager;
}
public boolean refreshAndCheck() {
refresh();
return isPlayServicesAvailable();
}
public boolean isPlayServicesAvailable() {
return getResult() == ConnectionResult.SUCCESS;
}
public void refresh() {
GoogleApiAvailability instance = GoogleApiAvailability.getInstance();
int googlePlayServicesAvailable = instance.isGooglePlayServicesAvailable(context);
preferences.setInt(R.string.play_services_available, googlePlayServicesAvailable);
if (googlePlayServicesAvailable == ConnectionResult.SUCCESS) {
preferences.setBoolean(R.string.warned_play_services, false);
}
Timber.d(getStatus());
}
public void resolve(Activity activity) {
GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
int error = preferences.getInt(R.string.play_services_available, -1);
if (googleApiAvailability.isUserResolvableError(error)) {
googleApiAvailability.getErrorDialog(activity, error, REQUEST_RESOLUTION).show();
} else {
Toast.makeText(activity, R.string.common_google_play_services_notification_ticker, Toast.LENGTH_LONG).show();
}
}
public String getStatus() {
return GoogleApiAvailability.getInstance().getErrorString(getResult());
}
private int getResult() {
return preferences.getInt(R.string.play_services_available, -1);
}
public boolean clearToken(GoogleAccountCredential credential){
try {
String token = credential.getToken();
Timber.d("Invalidating %s", token);
GoogleAuthUtil.clearToken(context, token);
GoogleAuthUtil.getToken(context, credential.getSelectedAccount(), "oauth2:" + TasksScopes.TASKS, null);
return true;
} catch (GoogleAuthException e) {
Timber.e(e, e.getMessage());
return false;
} catch (IOException e) {
Timber.e(e, e.getMessage());
return true;
}
}
public void getAuthToken(final Activity activity, final String accountName, final GtasksLoginActivity.AuthResultHandler handler) {
final Account account = accountManager.getAccount(accountName);
if (account == null) {
handler.authenticationFailed(activity.getString(R.string.gtasks_error_accountNotFound, accountName));
} else {
new Thread(() -> {
try {
GoogleAuthUtil.getToken(activity, account, "oauth2:" + TasksScopes.TASKS, null);
handler.authenticationSuccessful(accountName);
} catch(UserRecoverableAuthException e) {
Timber.e(e, e.getMessage());
activity.startActivityForResult(e.getIntent(), GtasksLoginActivity.RC_REQUEST_OAUTH);
} catch(GoogleAuthException | IOException e) {
Timber.e(e, e.getMessage());
handler.authenticationFailed(activity.getString(R.string.gtasks_GLA_errorIOAuth));
}
}).start();
}
}
}

@ -1,67 +0,0 @@
package org.tasks.gtasks;
import android.app.Activity;
import android.content.Context;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import org.tasks.R;
import org.tasks.injection.ForApplication;
import org.tasks.preferences.Preferences;
import javax.inject.Inject;
import timber.log.Timber;
public class PlayServicesAvailability {
private static final int REQUEST_RESOLUTION = 10000;
private final Context context;
private final Preferences preferences;
@Inject
public PlayServicesAvailability(@ForApplication Context context, Preferences preferences) {
this.context = context;
this.preferences = preferences;
}
public boolean refreshAndCheck() {
refresh();
return isPlayServicesAvailable();
}
public boolean isPlayServicesAvailable() {
return getResult() == ConnectionResult.SUCCESS;
}
public void refresh() {
GoogleApiAvailability instance = GoogleApiAvailability.getInstance();
int googlePlayServicesAvailable = instance.isGooglePlayServicesAvailable(context);
preferences.setInt(R.string.play_services_available, googlePlayServicesAvailable);
if (googlePlayServicesAvailable == ConnectionResult.SUCCESS) {
preferences.setBoolean(R.string.warned_play_services, false);
}
Timber.d(getStatus());
}
public void resolve(Activity activity) {
GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
int error = preferences.getInt(R.string.play_services_available, -1);
if (googleApiAvailability.isUserResolvableError(error)) {
googleApiAvailability.getErrorDialog(activity, error, REQUEST_RESOLUTION).show();
} else {
Toast.makeText(activity, R.string.common_google_play_services_notification_ticker, Toast.LENGTH_LONG).show();
}
}
public String getStatus() {
return GoogleApiAvailability.getInstance().getErrorString(getResult());
}
private int getResult() {
return preferences.getInt(R.string.play_services_available, -1);
}
}

@ -3,5 +3,4 @@
<string name="gp_key">MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk8mXRE3dDXwtinUILCEzKjov2rxs3kZbLRzNrcjFWXpG9OEsUzRGLzqEN+WwibVuMRpZLj/+IxbU2sJWq/M0q+90rOhmXn46ZPeNyr77IqX2pWKIAWpzBoWq/mshRwtm9m1FIiGdBNlXrhSE7u3TGB5FuEuuSqKWvWzxeqQ7fHmlM04Lqrh1mN3FaMne8rWv+DWVHDbLrtnXBuC36glOAj17HxrzaE2v6Pv7Df3QefJ3rM1+0fAp/5jNInaP0qHAlG8WTbUmDShQ5kG3urbv3HLByyx6TSqhmNudXUK/6TusvIj50OptAG7x+UFYf956dD3diXhY3yoICvyFWx1sNwIDAQAB</string>
<string name="sku_themes">themes</string>
<string name="play_services_available">play_services_available</string>
<string name="warned_play_services">warned_play_services</string>
</resources>

@ -44,8 +44,8 @@ import org.tasks.injection.FragmentComponent;
import org.tasks.injection.InjectingFragment;
import org.tasks.notifications.NotificationManager;
import org.tasks.preferences.Preferences;
import org.tasks.ui.RemoteListFragment;
import org.tasks.ui.MenuColorizer;
import org.tasks.ui.RemoteListFragment;
import org.tasks.ui.TaskEditControlFragment;
import java.util.List;

@ -272,7 +272,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
localBroadcastManager.registerRepeatReceiver(repeatConfirmationReceiver);
syncAdapters.checkPlayServices(getTaskListFragment());
syncAdapters.checkPlayServices(this);
}
public void restart() {

@ -6,12 +6,12 @@ import android.net.Uri;
import com.todoroo.andlib.utility.DateUtilities;
import org.tasks.AccountManager;
import org.tasks.BuildConfig;
import org.tasks.R;
import org.tasks.calendars.AndroidCalendarEvent;
import org.tasks.calendars.AndroidCalendarEventAttendee;
import org.tasks.calendars.CalendarEventProvider;
import org.tasks.gtasks.GoogleAccountManager;
import org.tasks.injection.BroadcastComponent;
import org.tasks.injection.InjectingBroadcastReceiver;
import org.tasks.preferences.Preferences;
@ -32,7 +32,7 @@ public class CalendarAlarmReceiver extends InjectingBroadcastReceiver {
@Inject Preferences preferences;
@Inject CalendarEventProvider calendarEventProvider;
@Inject AccountManager accountManager;
@Inject GoogleAccountManager accountManager;
@Override
public void onReceive(Context context, Intent intent) {

@ -21,7 +21,6 @@ import org.tasks.tasklist.GtasksListFragment;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.inject.Inject;

@ -18,6 +18,7 @@ import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import org.tasks.BuildConfig;
import org.tasks.gtasks.GoogleTasksUnsuccessfulResponseHandler;
import org.tasks.gtasks.PlayServices;
import org.tasks.injection.ApplicationScope;
import org.tasks.injection.ForApplication;
@ -37,14 +38,15 @@ import timber.log.Timber;
@ApplicationScope
public class GtasksInvoker {
private final Context context;
private final GoogleAccountCredential credential;
private final PlayServices playServices;
private final Tasks service;
@Inject
public GtasksInvoker(@ForApplication Context context, GtasksPreferenceService preferenceService) {
this.context = context;
public GtasksInvoker(@ForApplication Context context, GtasksPreferenceService preferenceService,
PlayServices playServices) {
credential = GoogleAccountCredential.usingOAuth2(context, Collections.singletonList(TasksScopes.TASKS));
this.playServices = playServices;
setUserName(preferenceService.getUserName());
service = new Tasks.Builder(new NetHttpTransport(), new JacksonFactory(), credential)
.setApplicationName(String.format("Tasks/%s", BuildConfig.VERSION_NAME))
@ -140,7 +142,7 @@ public class GtasksInvoker {
String caller = getCaller();
Timber.d("%s request: %s", caller, request);
HttpRequest httpRequest = request.buildHttpRequest();
httpRequest.setUnsuccessfulResponseHandler(new GoogleTasksUnsuccessfulResponseHandler(context, credential));
httpRequest.setUnsuccessfulResponseHandler(new GoogleTasksUnsuccessfulResponseHandler(playServices, credential));
HttpResponse httpResponse = httpRequest.execute();
T response = httpResponse.parseAs(request.getResponseClass());
Timber.d("%s response: %s", caller, prettyPrint(response));

@ -5,33 +5,24 @@
*/
package com.todoroo.astrid.gtasks.auth;
import android.accounts.Account;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
import com.google.android.gms.auth.GoogleAuthException;
import com.google.android.gms.auth.GoogleAuthUtil;
import com.google.android.gms.auth.UserRecoverableAuthException;
import com.google.api.services.tasks.TasksScopes;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import com.todoroo.astrid.gtasks.api.GtasksInvoker;
import org.tasks.AccountManager;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.gtasks.GoogleAccountManager;
import org.tasks.gtasks.PlayServices;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
import java.io.IOException;
import javax.inject.Inject;
import timber.log.Timber;
/**
* This activity allows users to sign in or log in to Google Tasks
* through the Android account manager
@ -46,13 +37,14 @@ public class GtasksLoginActivity extends InjectingAppCompatActivity {
void authenticationFailed(String message);
}
private static final int RC_REQUEST_OAUTH = 10987;
public static final int RC_REQUEST_OAUTH = 10987;
private static final int RC_CHOOSE_ACCOUNT = 10988;
@Inject GtasksPreferenceService gtasksPreferenceService;
@Inject DialogBuilder dialogBuilder;
@Inject AccountManager accountManager;
@Inject GoogleAccountManager accountManager;
@Inject GtasksInvoker gtasksInvoker;
@Inject PlayServices playServices;
private String accountName;
@ -83,7 +75,7 @@ public class GtasksLoginActivity extends InjectingAppCompatActivity {
}
private void getAuthToken(String a, final ProgressDialog pd) {
getAuthToken(this, a, new AuthResultHandler() {
playServices.getAuthToken(this, a, new AuthResultHandler() {
@Override
public void authenticationSuccessful(String accountName) {
gtasksPreferenceService.setUserName(accountName);
@ -116,24 +108,4 @@ public class GtasksLoginActivity extends InjectingAppCompatActivity {
finish();
}
}
private void getAuthToken(final Activity activity, final String accountName, final AuthResultHandler handler) {
final Account account = accountManager.getAccount(accountName);
if (account == null) {
handler.authenticationFailed(activity.getString(R.string.gtasks_error_accountNotFound, accountName));
} else {
new Thread(() -> {
try {
GoogleAuthUtil.getToken(activity, account, "oauth2:" + TasksScopes.TASKS, null);
handler.authenticationSuccessful(accountName);
} catch(UserRecoverableAuthException e) {
Timber.e(e, e.getMessage());
activity.startActivityForResult(e.getIntent(), RC_REQUEST_OAUTH);
} catch(GoogleAuthException | IOException e) {
Timber.e(e, e.getMessage());
handler.authenticationFailed(getString(R.string.gtasks_GLA_errorIOAuth));
}
}).start();
}
}
}

@ -14,16 +14,13 @@ import android.widget.Toast;
import com.google.api.services.tasks.model.TaskList;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.api.GtasksFilter;
import org.tasks.data.GoogleTaskList;
import org.tasks.data.GoogleTaskListDao;
import com.todoroo.astrid.gtasks.GtasksListService;
import org.tasks.R;
import org.tasks.analytics.Tracker;
import org.tasks.analytics.Tracking;
import org.tasks.dialogs.ColorPickerDialog;
import org.tasks.data.GoogleTaskList;
import org.tasks.data.GoogleTaskListDao;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.gtasks.CreateListDialog;
import org.tasks.gtasks.DeleteListDialog;

@ -10,7 +10,6 @@ import com.todoroo.astrid.timers.TimerFilterExposer;
import org.tasks.caldav.CalDAVFilterExposer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.inject.Inject;

@ -21,8 +21,8 @@ import org.tasks.sync.SyncAdapters;
import org.tasks.ui.CalendarControlSet;
import org.tasks.ui.DeadlineControlSet;
import org.tasks.ui.DescriptionControlSet;
import org.tasks.ui.RemoteListFragment;
import org.tasks.ui.PriorityControlSet;
import org.tasks.ui.RemoteListFragment;
import org.tasks.ui.TaskEditControlFragment;
import java.util.ArrayList;

@ -1,10 +1,10 @@
package org.tasks;
package org.tasks.gtasks;
import android.accounts.Account;
import android.content.Context;
import com.google.api.client.googleapis.extensions.android.accounts.GoogleAccountManager;
import com.google.common.base.Strings;
import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import org.tasks.injection.ForApplication;
import org.tasks.preferences.PermissionChecker;
@ -18,16 +18,19 @@ import static com.google.common.collect.Iterables.tryFind;
import static com.google.common.collect.Lists.transform;
import static java.util.Arrays.asList;
public class AccountManager {
public class GoogleAccountManager {
private final PermissionChecker permissionChecker;
private final GoogleAccountManager googleAccountManager;
private final android.accounts.AccountManager accountManager;
private final GtasksPreferenceService gtasksPreferenceService;
@Inject
public AccountManager(@ForApplication Context context, PermissionChecker permissionChecker) {
public GoogleAccountManager(@ForApplication Context context, PermissionChecker permissionChecker,
GtasksPreferenceService gtasksPreferenceService) {
this.permissionChecker = permissionChecker;
googleAccountManager = new GoogleAccountManager(context);
accountManager = android.accounts.AccountManager.get(context);
this.gtasksPreferenceService = gtasksPreferenceService;
}
public List<String> getAccounts() {
@ -40,10 +43,14 @@ public class AccountManager {
private List<Account> getAccountList() {
return permissionChecker.canAccessAccounts()
? asList(googleAccountManager.getAccounts())
? asList(accountManager.getAccountsByType("com.google"))
: Collections.emptyList();
}
public Account getSelectedAccount() {
return getAccount(gtasksPreferenceService.getUserName());
}
public Account getAccount(final String name) {
if (Strings.isNullOrEmpty(name)) {
return null;

@ -1,9 +1,5 @@
package org.tasks.gtasks;
import android.content.Context;
import com.google.android.gms.auth.GoogleAuthException;
import com.google.android.gms.auth.GoogleAuthUtil;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;
import com.google.api.client.http.HttpBackOffUnsuccessfulResponseHandler;
import com.google.api.client.http.HttpRequest;
@ -13,7 +9,6 @@ import com.google.api.client.http.HttpStatusCodes;
import com.google.api.client.http.HttpUnsuccessfulResponseHandler;
import com.google.api.client.util.BackOff;
import com.google.api.client.util.ExponentialBackOff;
import com.google.api.services.tasks.TasksScopes;
import com.todoroo.astrid.gtasks.api.HttpNotFoundException;
import java.io.IOException;
@ -24,12 +19,12 @@ public class GoogleTasksUnsuccessfulResponseHandler implements HttpUnsuccessfulR
private static final BackOff BACKOFF = new ExponentialBackOff.Builder().build();
private final Context context;
private final PlayServices playServices;
private final GoogleAccountCredential googleAccountCredential;
private final HttpBackOffUnsuccessfulResponseHandler backoffHandler = new HttpBackOffUnsuccessfulResponseHandler(BACKOFF);
public GoogleTasksUnsuccessfulResponseHandler(Context context, GoogleAccountCredential googleAccountCredential) {
this.context = context;
public GoogleTasksUnsuccessfulResponseHandler(PlayServices playServices, GoogleAccountCredential googleAccountCredential) {
this.playServices = playServices;
this.googleAccountCredential = googleAccountCredential;
}
@ -42,7 +37,7 @@ public class GoogleTasksUnsuccessfulResponseHandler implements HttpUnsuccessfulR
}
int statusCode = response.getStatusCode();
if ((statusCode == HttpStatusCodes.STATUS_CODE_UNAUTHORIZED || statusCode == HttpStatusCodes.STATUS_CODE_FORBIDDEN)) {
boolean shouldRetry = clearToken(googleAccountCredential);
boolean shouldRetry = playServices.clearToken(googleAccountCredential);
if (!shouldRetry) {
return false;
}
@ -54,20 +49,4 @@ public class GoogleTasksUnsuccessfulResponseHandler implements HttpUnsuccessfulR
return backoffHandler.handleResponse(request, response, supportsRetry);
}
private boolean clearToken(GoogleAccountCredential credential){
try {
String token = credential.getToken();
Timber.d("Invalidating %s", token);
GoogleAuthUtil.clearToken(context, token);
GoogleAuthUtil.getToken(context, credential.getSelectedAccount(), "oauth2:" + TasksScopes.TASKS, null);
return true;
} catch (GoogleAuthException e) {
Timber.e(e, e.getMessage());
return false;
} catch (IOException e) {
Timber.e(e, e.getMessage());
return true;
}
}
}

@ -1,13 +1,12 @@
package org.tasks.gtasks;
import android.accounts.Account;
import android.app.Activity;
import android.content.ContentResolver;
import android.os.Bundle;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import org.tasks.AccountManager;
import org.tasks.R;
import org.tasks.analytics.Tracker;
import org.tasks.analytics.Tracking;
@ -23,20 +22,20 @@ public class GtaskSyncAdapterHelper {
private static final String AUTHORITY = "org.tasks";
private final AccountManager accountManager;
private final GoogleAccountManager accountManager;
private final Preferences preferences;
private final GtasksPreferenceService gtasksPreferenceService;
private final PlayServicesAvailability playServicesAvailability;
private final PlayServices playServices;
private final Tracker tracker;
@Inject
public GtaskSyncAdapterHelper(AccountManager accountManager, Preferences preferences,
public GtaskSyncAdapterHelper(GoogleAccountManager accountManager, Preferences preferences,
GtasksPreferenceService gtasksPreferenceService,
PlayServicesAvailability playServicesAvailability, Tracker tracker) {
PlayServices playServices, Tracker tracker) {
this.accountManager = accountManager;
this.preferences = preferences;
this.gtasksPreferenceService = gtasksPreferenceService;
this.playServicesAvailability = playServicesAvailability;
this.playServices = playServices;
this.tracker = tracker;
}
@ -74,14 +73,14 @@ public class GtaskSyncAdapterHelper {
public boolean isEnabled() {
return preferences.getBoolean(R.string.sync_gtasks, false) &&
playServicesAvailability.isPlayServicesAvailable() &&
playServices.isPlayServicesAvailable() &&
getAccount() != null;
}
public void enableSynchronization(boolean enabled) {
public void enableBackgroundSynchronization(boolean enabled) {
Account account = getAccount();
if (account != null) {
Timber.d("enableSynchronization=%s", enabled);
Timber.d("enableBackgroundSynchronization=%s", enabled);
ContentResolver.setSyncAutomatically(account, AUTHORITY, enabled);
if (enabled) {
ContentResolver.addPeriodicSync(account, AUTHORITY, Bundle.EMPTY, TimeUnit.HOURS.toSeconds(1));
@ -91,7 +90,7 @@ public class GtaskSyncAdapterHelper {
}
}
public boolean isSyncEnabled() {
public boolean isBackgroundSyncEnabled() {
return isEnabled() && ContentResolver.getSyncAutomatically(getAccount(), AUTHORITY);
}
@ -99,14 +98,13 @@ public class GtaskSyncAdapterHelper {
return accountManager.getAccount(gtasksPreferenceService.getUserName());
}
public void checkPlayServices(TaskListFragment taskListFragment) {
if (taskListFragment != null &&
preferences.getBoolean(R.string.sync_gtasks, false) &&
!playServicesAvailability.refreshAndCheck() &&
public void checkPlayServices(Activity activity) {
if (preferences.getBoolean(R.string.sync_gtasks, false) &&
!playServices.refreshAndCheck() &&
!preferences.getBoolean(R.string.warned_play_services, false)) {
preferences.setBoolean(R.string.warned_play_services, true);
playServicesAvailability.resolve(taskListFragment.getActivity());
tracker.reportEvent(Tracking.Events.PLAY_SERVICES_WARNING, playServicesAvailability.getStatus());
playServices.resolve(activity);
tracker.reportEvent(Tracking.Events.PLAY_SERVICES_WARNING, playServices.getStatus());
}
}
}

@ -10,7 +10,9 @@ import com.todoroo.astrid.core.DefaultsPreferences;
import com.todoroo.astrid.core.OldTaskPreferences;
import com.todoroo.astrid.files.AACRecordingActivity;
import com.todoroo.astrid.gcal.CalendarReminderActivity;
import com.todoroo.astrid.gtasks.GtasksPreferences;
import org.tasks.activities.GoogleTaskListSettingsActivity;
import org.tasks.sync.SynchronizationPreferences;
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity;
import com.todoroo.astrid.reminders.ReminderPreferences;
@ -22,7 +24,6 @@ import org.tasks.activities.DateAndTimePickerActivity;
import org.tasks.activities.DatePickerActivity;
import org.tasks.activities.FilterSelectionActivity;
import org.tasks.activities.FilterSettingsActivity;
import org.tasks.activities.GoogleTaskListSettingsActivity;
import org.tasks.activities.TagSettingsActivity;
import org.tasks.activities.TimePickerActivity;
import org.tasks.caldav.CalDAVSettingsActivity;
@ -51,7 +52,7 @@ import dagger.Subcomponent;
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {
void inject(GtasksPreferences gtasksPreferences);
void inject(SynchronizationPreferences synchronizationPreferences);
void inject(GtasksLoginActivity gtasksLoginActivity);

@ -20,9 +20,9 @@ import org.tasks.tasklist.TagListFragment;
import org.tasks.ui.CalendarControlSet;
import org.tasks.ui.DeadlineControlSet;
import org.tasks.ui.DescriptionControlSet;
import org.tasks.ui.RemoteListFragment;
import org.tasks.ui.NavigationDrawerFragment;
import org.tasks.ui.PriorityControlSet;
import org.tasks.ui.RemoteListFragment;
import dagger.Subcomponent;

@ -9,7 +9,6 @@ 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.reminders.ReminderService;
import com.todoroo.astrid.repeats.RepeatTaskHelper;
@ -45,7 +44,6 @@ public class AfterSaveIntentService extends InjectingJobIntentService {
@Inject RepeatTaskHelper repeatTaskHelper;
@Inject @ForApplication Context context;
@Inject TaskDao taskDao;
@Inject NotificationManager notificationManager;
@Inject GeofenceService geofenceService;
@Inject TimerPlugin timerPlugin;

@ -1,9 +1,8 @@
package org.tasks.sync;
import android.app.Activity;
import android.content.ContentResolver;
import com.todoroo.astrid.activity.TaskListFragment;
import org.tasks.caldav.CaldavAccountManager;
import org.tasks.gtasks.GtaskSyncAdapterHelper;
@ -38,14 +37,14 @@ public class SyncAdapters {
}
public boolean isGoogleTaskSyncEnabled() {
return gtaskSyncAdapterHelper.isSyncEnabled();
return gtaskSyncAdapterHelper.isEnabled();
}
public boolean isCaldavSyncEnabled() {
return caldavAccountManager.getAccounts().size() > 0;
}
public void checkPlayServices(TaskListFragment taskListFragment) {
gtaskSyncAdapterHelper.checkPlayServices(taskListFragment);
public void checkPlayServices(Activity activity) {
gtaskSyncAdapterHelper.checkPlayServices(activity);
}
}

@ -3,7 +3,7 @@
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.gtasks;
package org.tasks.sync;
import android.content.Intent;
import android.os.Bundle;
@ -11,6 +11,7 @@ import android.preference.CheckBoxPreference;
import android.support.annotation.NonNull;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import com.todoroo.astrid.gtasks.auth.GtasksLoginActivity;
import org.tasks.R;
@ -19,18 +20,17 @@ import org.tasks.analytics.Tracking;
import org.tasks.data.GoogleTaskDao;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.gtasks.GtaskSyncAdapterHelper;
import org.tasks.gtasks.PlayServicesAvailability;
import org.tasks.gtasks.PlayServices;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingPreferenceActivity;
import org.tasks.preferences.ActivityPermissionRequestor;
import org.tasks.preferences.PermissionRequestor;
import org.tasks.sync.SyncAdapters;
import javax.inject.Inject;
import static org.tasks.PermissionUtil.verifyPermissions;
public class GtasksPreferences extends InjectingPreferenceActivity {
public class SynchronizationPreferences extends InjectingPreferenceActivity {
private static final int REQUEST_LOGIN = 0;
@ -38,7 +38,7 @@ public class GtasksPreferences extends InjectingPreferenceActivity {
@Inject ActivityPermissionRequestor permissionRequestor;
@Inject Tracker tracker;
@Inject GtaskSyncAdapterHelper gtaskSyncAdapterHelper;
@Inject PlayServicesAvailability playServicesAvailability;
@Inject PlayServices playServices;
@Inject DialogBuilder dialogBuilder;
@Inject SyncAdapters syncAdapters;
@Inject GoogleTaskDao googleTaskDao;
@ -53,14 +53,14 @@ public class GtasksPreferences extends InjectingPreferenceActivity {
gtaskPreference.setChecked(gtaskSyncAdapterHelper.isEnabled());
gtaskPreference.setOnPreferenceChangeListener((preference, newValue) -> {
if ((boolean) newValue) {
if (!playServicesAvailability.refreshAndCheck()) {
playServicesAvailability.resolve(GtasksPreferences.this);
if (!playServices.refreshAndCheck()) {
playServices.resolve(SynchronizationPreferences.this);
} else if (permissionRequestor.requestAccountPermissions()) {
requestLogin();
}
return false;
} else {
gtaskSyncAdapterHelper.enableSynchronization(false);
gtaskSyncAdapterHelper.enableBackgroundSynchronization(false);
tracker.reportEvent(Tracking.Events.GTASK_DISABLED);
gtasksPreferenceService.stopOngoing();
return true;
@ -68,11 +68,11 @@ public class GtasksPreferences extends InjectingPreferenceActivity {
});
if (gtasksPreferenceService.getLastSyncDate() > 0) {
gtaskPreference.setSummary(getString(R.string.sync_status_success,
DateUtilities.getDateStringWithTime(GtasksPreferences.this,
DateUtilities.getDateStringWithTime(SynchronizationPreferences.this,
gtasksPreferenceService.getLastSyncDate())));
}
findPreference(getString(R.string.gtask_background_sync)).setOnPreferenceChangeListener((preference, o) -> {
gtaskSyncAdapterHelper.enableSynchronization((Boolean) o);
gtaskSyncAdapterHelper.enableBackgroundSynchronization((Boolean) o);
return true;
});
findPreference(getString(R.string.sync_SPr_forget_key)).setOnPreferenceClickListener(preference -> {
@ -81,7 +81,7 @@ public class GtasksPreferences extends InjectingPreferenceActivity {
gtasksPreferenceService.clearLastSyncDate();
gtasksPreferenceService.setUserName(null);
googleTaskDao.deleteAll();
gtaskSyncAdapterHelper.enableSynchronization(false);
gtaskSyncAdapterHelper.enableBackgroundSynchronization(false);
tracker.reportEvent(Tracking.Events.GTASK_LOGOUT);
gtaskPreference.setChecked(false);
})
@ -92,7 +92,7 @@ public class GtasksPreferences extends InjectingPreferenceActivity {
}
private void requestLogin() {
startActivityForResult(new Intent(GtasksPreferences.this, GtasksLoginActivity.class), REQUEST_LOGIN);
startActivityForResult(new Intent(SynchronizationPreferences.this, GtasksLoginActivity.class), REQUEST_LOGIN);
}
@Override
@ -100,7 +100,7 @@ public class GtasksPreferences extends InjectingPreferenceActivity {
super.onResume();
CheckBoxPreference backgroundSync = (CheckBoxPreference) findPreference(getString(R.string.gtask_background_sync));
backgroundSync.setChecked(gtaskSyncAdapterHelper.isSyncEnabled());
backgroundSync.setChecked(gtaskSyncAdapterHelper.isBackgroundSyncEnabled());
if (syncAdapters.isMasterSyncEnabled()) {
backgroundSync.setSummary(null);
} else {
@ -113,7 +113,7 @@ public class GtasksPreferences extends InjectingPreferenceActivity {
if (requestCode == REQUEST_LOGIN) {
boolean enabled = resultCode == RESULT_OK;
if (enabled) {
gtaskSyncAdapterHelper.enableSynchronization(true);
gtaskSyncAdapterHelper.enableBackgroundSynchronization(true);
tracker.reportEvent(Tracking.Events.GTASK_ENABLED);
}
((CheckBoxPreference) findPreference(getString(R.string.sync_gtasks))).setChecked(enabled);

@ -16,7 +16,6 @@ import com.todoroo.astrid.gtasks.GtasksListService;
import com.todoroo.astrid.helper.UUIDHelper;
import org.tasks.R;
import org.tasks.analytics.Tracker;
import org.tasks.data.CaldavDao;
import org.tasks.data.CaldavTask;
import org.tasks.data.GoogleTask;
@ -45,7 +44,6 @@ public class RemoteListFragment extends TaskEditControlFragment {
@Inject GtasksListService gtasksListService;
@Inject GoogleTaskDao googleTaskDao;
@Inject CaldavDao caldavDao;
@Inject Tracker tracker;
@Inject DefaultFilterProvider defaultFilterProvider;
@Nullable private Filter originalList;

@ -295,5 +295,6 @@
<string name="gtask_background_sync">gtask_background_sync</string>
<string name="p_bundle_notifications">bundle_notifications</string>
<string name="p_strict_mode">strict_mode</string>
<string name="warned_play_services">warned_play_services</string>
</resources>

@ -425,7 +425,7 @@ File %1$s contained %2$s.\n\n
<!-- Error Message when we receive an IO Exception -->
<string name="gtasks_GLA_errorIOAuth">Sorry, we had trouble communicating with Google servers. Please try again later.</string>
<!-- ============================================== GtasksPreferences == -->
<!-- ===========================================SynchronizationPreferencesnces == -->
<!-- GTasks Preferences Title -->
<string name="gtasks_GPr_header">Google Tasks</string>

@ -29,7 +29,7 @@
<screenName name="org.tasks.activities.FilterSelectionActivity">FilterSelectionActivity</screenName>
<screenName name="org.tasks.activities.TimePickerActivity">TimePickerActivity</screenName>
<screenName name="org.tasks.files.FileExplore">FileExplore</screenName>
<screenName name="com.todoroo.astrid.gtasks.GtasksPreferences">GtasksPreferences</screenName>
<screenName name="org.tasks.sync.SynchronizationPreferences">GtasksPreferences</screenName>
<screenName name="org.tasks.dashclock.DashClockSettings">DashClockSettings</screenName>
<screenName name="com.todoroo.astrid.core.DefaultsPreferences">DefaultsPreferences</screenName>
<screenName name="com.todoroo.astrid.core.OldTaskPreferences">OldTaskPreferences</screenName>

Loading…
Cancel
Save