diff --git a/.travis.yml b/.travis.yml index 18872622d..65ed4acca 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ android: components: - android-22 - platform-tools-23.0.1 - - build-tools-23.0.2 + - build-tools-22.0.1 - extra-android-m2repository - extra-google-m2repository licenses: diff --git a/build.gradle b/build.gradle index 3072d95a3..1e09855e4 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ android { } compileSdkVersion 22 - buildToolsVersion "23.0.2" + buildToolsVersion "22.0.1" defaultConfig { versionCode 379 @@ -102,15 +102,12 @@ dependencies { exclude group: 'com.android.support', module: 'support-v4' } - googleplayCompile group: 'com.google.android.gms', name: 'play-services-location', version: '7.5.0' + googleplayCompile group: 'com.google.android.gms', name: 'play-services-location', version: '8.3.0' - compile(group: 'com.google.apis', name: 'google-api-services-tasks', version: 'v1-rev33-1.18.0-rc') { + googleplayCompile(group: 'com.google.apis', name: 'google-api-services-tasks', version: 'v1-rev41-1.21.0') { exclude group: 'org.apache.httpcomponents', module: 'httpclient' } - compile(group: 'com.google.api-client', name: 'google-api-client-android', version: '1.18.0-rc') { - exclude group: 'org.apache.httpcomponents', module: 'httpclient' - } - compile(group: 'com.google.http-client', name: 'google-http-client-gson', version: '1.18.0-rc') { + googleplayCompile(group: 'com.google.api-client', name: 'google-api-client-android', version: '1.21.0') { exclude group: 'org.apache.httpcomponents', module: 'httpclient' } compile group: 'com.google.guava', name: 'guava-jdk5', version: '13.0' diff --git a/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java b/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java new file mode 100644 index 000000000..bee865e81 --- /dev/null +++ b/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java @@ -0,0 +1,12 @@ +package com.todoroo.astrid.gtasks; + +import android.test.AndroidTestCase; + +import javax.inject.Inject; + +public class GtasksIndentActionTest extends AndroidTestCase { + @Inject + public GtasksIndentActionTest() { + + } +} diff --git a/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksListServiceTest.java b/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksListServiceTest.java new file mode 100644 index 000000000..b2b5fcc6a --- /dev/null +++ b/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksListServiceTest.java @@ -0,0 +1,12 @@ +package com.todoroo.astrid.gtasks; + +import android.test.AndroidTestCase; + +import javax.inject.Inject; + +public class GtasksListServiceTest extends AndroidTestCase { + @Inject + public GtasksListServiceTest() { + + } +} diff --git a/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java b/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java new file mode 100644 index 000000000..487877a5f --- /dev/null +++ b/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java @@ -0,0 +1,12 @@ +package com.todoroo.astrid.gtasks; + +import android.test.AndroidTestCase; + +import javax.inject.Inject; + +public class GtasksTaskListUpdaterTest extends AndroidTestCase { + @Inject + public GtasksTaskListUpdaterTest() { + + } +} diff --git a/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java b/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java new file mode 100644 index 000000000..f951bf065 --- /dev/null +++ b/src/androidTestGeneric/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java @@ -0,0 +1,12 @@ +package com.todoroo.astrid.gtasks; + +import android.test.AndroidTestCase; + +import javax.inject.Inject; + +public class GtasksTaskMovingTest extends AndroidTestCase { + @Inject + public GtasksTaskMovingTest() { + + } +} diff --git a/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java b/src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java similarity index 100% rename from src/androidTest/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java rename to src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksIndentActionTest.java diff --git a/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksListServiceTest.java b/src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksListServiceTest.java similarity index 100% rename from src/androidTest/java/com/todoroo/astrid/gtasks/GtasksListServiceTest.java rename to src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksListServiceTest.java diff --git a/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java b/src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java similarity index 96% rename from src/androidTest/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java rename to src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java index dd03ecdc3..7696133eb 100644 --- a/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java +++ b/src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java @@ -29,7 +29,7 @@ public class GtasksMetadataServiceTest extends DatabaseTestCase { private final GtasksTestPreferenceService service; public GtasksMetadataServiceTestModule(Context context) { - service = new GtasksTestPreferenceService(new Preferences(context, null)); + service = new GtasksTestPreferenceService(context, new Preferences(context, null)); } @Provides diff --git a/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java b/src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java similarity index 100% rename from src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java rename to src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdaterTest.java diff --git a/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java b/src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java similarity index 100% rename from src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java rename to src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksTaskMovingTest.java diff --git a/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTestPreferenceService.java b/src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksTestPreferenceService.java similarity index 73% rename from src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTestPreferenceService.java rename to src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksTestPreferenceService.java index 3827c7acf..3118dd871 100644 --- a/src/androidTest/java/com/todoroo/astrid/gtasks/GtasksTestPreferenceService.java +++ b/src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/GtasksTestPreferenceService.java @@ -5,12 +5,14 @@ */ package com.todoroo.astrid.gtasks; +import android.content.Context; + import org.tasks.preferences.Preferences; public class GtasksTestPreferenceService extends GtasksPreferenceService { - public GtasksTestPreferenceService(Preferences preferences) { - super(preferences); + public GtasksTestPreferenceService(Context context, Preferences preferences) { + super(context, preferences); } @Override diff --git a/src/androidTest/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilitiesTest.java b/src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilitiesTest.java similarity index 100% rename from src/androidTest/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilitiesTest.java rename to src/androidTestGoogleplay/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilitiesTest.java diff --git a/src/androidTest/java/org/tasks/makers/RemoteGtaskListMaker.java b/src/androidTestGoogleplay/java/org/tasks/makers/RemoteGtaskListMaker.java similarity index 100% rename from src/androidTest/java/org/tasks/makers/RemoteGtaskListMaker.java rename to src/androidTestGoogleplay/java/org/tasks/makers/RemoteGtaskListMaker.java diff --git a/src/generic/java/com/todoroo/astrid/gtasks/GtasksFilterExposer.java b/src/generic/java/com/todoroo/astrid/gtasks/GtasksFilterExposer.java new file mode 100644 index 000000000..0b714c718 --- /dev/null +++ b/src/generic/java/com/todoroo/astrid/gtasks/GtasksFilterExposer.java @@ -0,0 +1,19 @@ +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 getFilters() { + return Collections.emptyList(); + } +} diff --git a/src/generic/java/com/todoroo/astrid/gtasks/GtasksListFragment.java b/src/generic/java/com/todoroo/astrid/gtasks/GtasksListFragment.java new file mode 100644 index 000000000..ce3a15587 --- /dev/null +++ b/src/generic/java/com/todoroo/astrid/gtasks/GtasksListFragment.java @@ -0,0 +1,6 @@ +package com.todoroo.astrid.gtasks; + +import com.todoroo.astrid.activity.TaskListFragment; + +public class GtasksListFragment extends TaskListFragment { +} diff --git a/src/generic/java/com/todoroo/astrid/gtasks/GtasksListService.java b/src/generic/java/com/todoroo/astrid/gtasks/GtasksListService.java new file mode 100644 index 000000000..554ce3fe6 --- /dev/null +++ b/src/generic/java/com/todoroo/astrid/gtasks/GtasksListService.java @@ -0,0 +1,18 @@ +package com.todoroo.astrid.gtasks; + +import java.util.Collections; +import java.util.List; + +import javax.inject.Inject; + +public class GtasksListService { + + @Inject + public GtasksListService() { + + } + + public List getLists() { + return Collections.emptyList(); + } +} diff --git a/src/generic/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java b/src/generic/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java new file mode 100644 index 000000000..95390f949 --- /dev/null +++ b/src/generic/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java @@ -0,0 +1,10 @@ +package com.todoroo.astrid.gtasks; + +import javax.inject.Inject; + +public class GtasksMetadataService { + @Inject + public GtasksMetadataService() { + + } +} diff --git a/src/generic/java/com/todoroo/astrid/gtasks/GtasksPreferences.java b/src/generic/java/com/todoroo/astrid/gtasks/GtasksPreferences.java new file mode 100644 index 000000000..2ad98d226 --- /dev/null +++ b/src/generic/java/com/todoroo/astrid/gtasks/GtasksPreferences.java @@ -0,0 +1,10 @@ +package com.todoroo.astrid.gtasks; + +import javax.inject.Inject; + +public class GtasksPreferences { + @Inject + public GtasksPreferences() { + + } +} diff --git a/src/generic/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java b/src/generic/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java new file mode 100644 index 000000000..b900a77c8 --- /dev/null +++ b/src/generic/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java @@ -0,0 +1,10 @@ +package com.todoroo.astrid.gtasks; + +import javax.inject.Inject; + +public class GtasksTaskListUpdater { + @Inject + public GtasksTaskListUpdater() { + + } +} diff --git a/src/generic/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java b/src/generic/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java new file mode 100644 index 000000000..e60f2bdbe --- /dev/null +++ b/src/generic/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java @@ -0,0 +1,10 @@ +package com.todoroo.astrid.gtasks.auth; + +import javax.inject.Inject; + +public class GtasksLoginActivity { + @Inject + public GtasksLoginActivity() { + + } +} diff --git a/src/generic/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java b/src/generic/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java new file mode 100644 index 000000000..adcdcf54f --- /dev/null +++ b/src/generic/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java @@ -0,0 +1,14 @@ +package com.todoroo.astrid.gtasks.sync; + +import javax.inject.Inject; + +public class GtasksSyncService { + @Inject + public GtasksSyncService() { + + } + + public void initialize() { + + } +} diff --git a/src/generic/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java b/src/generic/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java new file mode 100644 index 000000000..f56acc236 --- /dev/null +++ b/src/generic/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java @@ -0,0 +1,26 @@ +package com.todoroo.astrid.gtasks.sync; + +import com.todoroo.astrid.gtasks.GtasksList; +import com.todoroo.astrid.sync.SyncResultCallback; + +import javax.inject.Inject; + +public class GtasksSyncV2Provider { + + @Inject + public GtasksSyncV2Provider() { + + } + + public boolean isActive() { + return false; + } + + public void synchronizeActiveTasks(SyncResultCallback callback) { + + } + + public void synchronizeList(GtasksList list, SyncResultCallback callback) { + + } +} diff --git a/src/generic/java/org/tasks/activities/ClearGtaskDataActivity.java b/src/generic/java/org/tasks/activities/ClearGtaskDataActivity.java new file mode 100644 index 000000000..0c676ccec --- /dev/null +++ b/src/generic/java/org/tasks/activities/ClearGtaskDataActivity.java @@ -0,0 +1,10 @@ +package org.tasks.activities; + +import javax.inject.Inject; + +public class ClearGtaskDataActivity { + @Inject + public ClearGtaskDataActivity() { + + } +} diff --git a/src/generic/java/org/tasks/dialogs/AccountSelectionDialog.java b/src/generic/java/org/tasks/dialogs/AccountSelectionDialog.java new file mode 100644 index 000000000..229aea1cb --- /dev/null +++ b/src/generic/java/org/tasks/dialogs/AccountSelectionDialog.java @@ -0,0 +1,10 @@ +package org.tasks.dialogs; + +import javax.inject.Inject; + +public class AccountSelectionDialog { + @Inject + public AccountSelectionDialog() { + + } +} diff --git a/src/generic/java/org/tasks/scheduling/GtasksBackgroundService.java b/src/generic/java/org/tasks/scheduling/GtasksBackgroundService.java new file mode 100644 index 000000000..e6ef38aa2 --- /dev/null +++ b/src/generic/java/org/tasks/scheduling/GtasksBackgroundService.java @@ -0,0 +1,10 @@ +package org.tasks.scheduling; + +import javax.inject.Inject; + +public class GtasksBackgroundService { + @Inject + public GtasksBackgroundService() { + + } +} diff --git a/src/googleplay/AndroidManifest.xml b/src/googleplay/AndroidManifest.xml index 805e3b82c..ae3bbc7d8 100644 --- a/src/googleplay/AndroidManifest.xml +++ b/src/googleplay/AndroidManifest.xml @@ -13,6 +13,16 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/todoroo/astrid/gtasks/GtasksFilterExposer.java b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksFilterExposer.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/GtasksFilterExposer.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/GtasksFilterExposer.java diff --git a/src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/GtasksListFragment.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java diff --git a/src/main/java/com/todoroo/astrid/gtasks/GtasksListService.java b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListService.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/GtasksListService.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListService.java diff --git a/src/main/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/GtasksMetadataService.java diff --git a/src/main/java/com/todoroo/astrid/gtasks/GtasksPreferences.java b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksPreferences.java similarity index 96% rename from src/main/java/com/todoroo/astrid/gtasks/GtasksPreferences.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/GtasksPreferences.java index ff2050535..78fd65817 100644 --- a/src/main/java/com/todoroo/astrid/gtasks/GtasksPreferences.java +++ b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksPreferences.java @@ -20,8 +20,6 @@ import org.tasks.scheduling.BackgroundScheduler; import javax.inject.Inject; -import static org.tasks.date.DateTimeUtils.newDate; - public class GtasksPreferences extends InjectingPreferenceActivity { private static final int REQUEST_LOGIN = 0; @@ -45,7 +43,6 @@ public class GtasksPreferences extends InjectingPreferenceActivity { startActivityForResult(new Intent(GtasksPreferences.this, GtasksLoginActivity.class), REQUEST_LOGIN); } else { gtasksPreferenceService.stopOngoing(); - gtasksPreferenceService.setToken(null); } return true; } diff --git a/src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/GtasksTaskListUpdater.java diff --git a/src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java b/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java diff --git a/src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListUpdater.java b/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListUpdater.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/OrderedMetadataListUpdater.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListUpdater.java diff --git a/src/main/java/com/todoroo/astrid/gtasks/api/GoogleTasksException.java b/src/googleplay/java/com/todoroo/astrid/gtasks/api/GoogleTasksException.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/api/GoogleTasksException.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/api/GoogleTasksException.java diff --git a/src/main/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilities.java b/src/googleplay/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilities.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilities.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/api/GtasksApiUtilities.java diff --git a/src/main/java/com/todoroo/astrid/gtasks/api/GtasksInvoker.java b/src/googleplay/java/com/todoroo/astrid/gtasks/api/GtasksInvoker.java similarity index 64% rename from src/main/java/com/todoroo/astrid/gtasks/api/GtasksInvoker.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/api/GtasksInvoker.java index 2b3beb295..105374b66 100644 --- a/src/main/java/com/todoroo/astrid/gtasks/api/GtasksInvoker.java +++ b/src/googleplay/java/com/todoroo/astrid/gtasks/api/GtasksInvoker.java @@ -2,25 +2,29 @@ package com.todoroo.astrid.gtasks.api; import android.content.Context; -import com.google.api.client.extensions.android.http.AndroidHttp; -import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; -import com.google.api.client.http.HttpRequest; -import com.google.api.client.http.HttpRequestInitializer; +import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential; import com.google.api.client.http.HttpResponseException; +import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.GenericJson; -import com.google.api.client.json.gson.GsonFactory; +import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.tasks.Tasks; import com.google.api.services.tasks.TasksRequest; +import com.google.api.services.tasks.TasksScopes; import com.google.api.services.tasks.model.Task; import com.google.api.services.tasks.model.TaskList; import com.google.api.services.tasks.model.TaskLists; -import com.todoroo.astrid.gtasks.auth.GtasksTokenValidator; +import com.todoroo.astrid.gtasks.GtasksPreferenceService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.tasks.R; +import org.tasks.AccountManager; +import org.tasks.BuildConfig; +import org.tasks.injection.ForApplication; import java.io.IOException; +import java.util.Collections; + +import javax.inject.Inject; /** * Wrapper around the official Google Tasks API to simplify common operations. In the case @@ -32,45 +36,28 @@ public class GtasksInvoker { private static final Logger log = LoggerFactory.getLogger(GtasksInvoker.class); - private final Context context; - private final GtasksTokenValidator gtasksTokenValidator; + private AccountManager accountManager; + private final GoogleAccountCredential credential; private Tasks service; - private GoogleCredential credential = new GoogleCredential(); - private String token; - - private final String key; - - public static final String AUTH_TOKEN_TYPE = "Manage your tasks"; //"oauth2:https://www.googleapis.com/auth/tasks"; - - public GtasksInvoker(Context context, GtasksTokenValidator gtasksTokenValidator, String authToken) { - this.context = context; - this.gtasksTokenValidator = gtasksTokenValidator; - this.token = authToken; - key = context.getString(R.string.gapi_key); - credential.setAccessToken(authToken); - HttpRequestInitializer httpRequestInitializer = new HttpRequestInitializer() { - @Override - public void initialize(HttpRequest request) throws IOException { - credential.initialize(request); - request.setReadTimeout(0); // infinite - } - }; - service = new Tasks.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), httpRequestInitializer) - .setApplicationName("Tasks") + @Inject + public GtasksInvoker(@ForApplication Context context, GtasksPreferenceService preferenceService, AccountManager accountManager) { + this.accountManager = accountManager; + credential = GoogleAccountCredential.usingOAuth2(context, Collections.singletonList(TasksScopes.TASKS)) + .setSelectedAccountName(preferenceService.getUserName()); + service = new Tasks.Builder(new NetHttpTransport(), new JacksonFactory(), credential) + .setApplicationName(String.format("Tasks/%s", BuildConfig.VERSION_NAME)) .build(); } //If we get a 401 or 403, try revalidating the auth token before bailing private synchronized void handleException(IOException e) throws IOException { + log.error(e.getMessage(), e); if (e instanceof HttpResponseException) { HttpResponseException h = (HttpResponseException) e; int statusCode = h.getStatusCode(); if (statusCode == 401 || statusCode == 403) { - token = gtasksTokenValidator.validateAuthToken(context, token); - if (token != null) { - credential.setAccessToken(token); - } + accountManager.clearToken(credential); } else if (statusCode == 400 || statusCode == 500) { throw h; } else if (statusCode == 404) { @@ -79,25 +66,9 @@ public class GtasksInvoker { log.error(statusCode + ": " + h.getStatusMessage(), e); } // 503 errors are generally either 1) quota limit reached or 2) problems on Google's end - } else { - log.error(e.getMessage(), e); } } - /** - * A simple service query that will throw an exception if anything goes wrong. - * Useful for checking if token needs revalidating or if there are network problems-- - * no exception means all is well - * - * @throws IOException - */ - public void ping() throws IOException { - service.tasklists() - .get("@default") - .setKey(key) - .execute(); - } - public TaskLists allGtaskLists() throws IOException { return execute(service .tasklists() @@ -152,14 +123,10 @@ public class GtasksInvoker { log.debug("{} request: {}", caller, request); T response; try { - response = request - .setKey(key) - .execute(); + response = request.execute(); } catch (IOException e) { handleException(e); - response = request - .setKey(key) - .execute(); + response = request.execute(); } log.debug("{} response: {}", caller, prettyPrint(response)); return response; diff --git a/src/main/java/com/todoroo/astrid/gtasks/api/HttpNotFoundException.java b/src/googleplay/java/com/todoroo/astrid/gtasks/api/HttpNotFoundException.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/api/HttpNotFoundException.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/api/HttpNotFoundException.java diff --git a/src/main/java/com/todoroo/astrid/gtasks/api/MoveRequest.java b/src/googleplay/java/com/todoroo/astrid/gtasks/api/MoveRequest.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/api/MoveRequest.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/api/MoveRequest.java diff --git a/src/main/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java b/src/googleplay/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java similarity index 93% rename from src/main/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java index 6e3f39e4e..f7d0fccb9 100644 --- a/src/main/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java +++ b/src/googleplay/java/com/todoroo/astrid/gtasks/auth/GtasksLoginActivity.java @@ -68,10 +68,9 @@ public class GtasksLoginActivity extends InjectingAppCompatActivity implements A } private void getAuthToken(String a, final ProgressDialog pd) { - accountManager.getAuthToken(a, new AccountManager.AuthResultHandler() { + accountManager.getAuthToken(this, a, new AccountManager.AuthResultHandler() { @Override public void authenticationSuccessful(String accountName, String authToken) { - gtasksPreferenceService.setToken(authToken); gtasksPreferenceService.setUserName(accountName); setResult(RESULT_OK); finish(); @@ -91,12 +90,10 @@ public class GtasksLoginActivity extends InjectingAppCompatActivity implements A }); } - private static final int REQUEST_AUTHENTICATE = 0; - @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - if(requestCode == REQUEST_AUTHENTICATE && resultCode == RESULT_OK){ + if(requestCode == AccountManager.REQUEST_AUTHORIZATION && resultCode == RESULT_OK){ final ProgressDialog pd = dialogBuilder.newProgressDialog(R.string.gtasks_GLA_authenticating); pd.show(); getAuthToken(accountName, pd); diff --git a/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java b/src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java similarity index 94% rename from src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java index d9c154882..391538162 100644 --- a/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java +++ b/src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java @@ -6,7 +6,6 @@ package com.todoroo.astrid.gtasks.sync; import android.content.ContentValues; -import android.content.Context; import android.text.TextUtils; import com.todoroo.andlib.data.DatabaseDao.ModelUpdateListener; @@ -25,12 +24,10 @@ import com.todoroo.astrid.gtasks.api.GtasksApiUtilities; import com.todoroo.astrid.gtasks.api.GtasksInvoker; import com.todoroo.astrid.gtasks.api.HttpNotFoundException; import com.todoroo.astrid.gtasks.api.MoveRequest; -import com.todoroo.astrid.gtasks.auth.GtasksTokenValidator; import com.todoroo.astrid.service.TaskService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.tasks.injection.ForApplication; import java.io.IOException; import java.util.concurrent.LinkedBlockingQueue; @@ -46,26 +43,24 @@ public class GtasksSyncService { private static final String DEFAULT_LIST = "@default"; //$NON-NLS-1$ - private Context context; private final MetadataDao metadataDao; private final GtasksMetadataService gtasksMetadataService; private final TaskDao taskDao; private final GtasksPreferenceService gtasksPreferenceService; - private final GtasksTokenValidator gtasksTokenValidator; private final GtasksMetadata gtasksMetadataFactory; + private GtasksInvoker gtasksInvoker; private final LinkedBlockingQueue operationQueue = new LinkedBlockingQueue<>(); @Inject - public GtasksSyncService(@ForApplication Context context, MetadataDao metadataDao, GtasksMetadataService gtasksMetadataService, + public GtasksSyncService(MetadataDao metadataDao, GtasksMetadataService gtasksMetadataService, TaskDao taskDao, GtasksPreferenceService gtasksPreferenceService, - GtasksTokenValidator gtasksTokenValidator, GtasksMetadata gtasksMetadataFactory) { - this.context = context; + GtasksMetadata gtasksMetadataFactory, GtasksInvoker gtasksInvoker) { this.metadataDao = metadataDao; this.gtasksMetadataService = gtasksMetadataService; this.taskDao = taskDao; this.gtasksPreferenceService = gtasksPreferenceService; - this.gtasksTokenValidator = gtasksTokenValidator; this.gtasksMetadataFactory = gtasksMetadataFactory; + this.gtasksInvoker = gtasksInvoker; } private abstract class SyncOnSaveOperation { @@ -159,8 +154,7 @@ public class GtasksSyncService { continue; } try { - GtasksInvoker invoker = new GtasksInvoker(context, gtasksTokenValidator, gtasksPreferenceService.getToken()); - op.op(invoker); + op.op(gtasksInvoker); } catch (IOException e) { log.error(e.getMessage(), e); } diff --git a/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java b/src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java similarity index 85% rename from src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java index 0d84b38b9..7533f3662 100644 --- a/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java +++ b/src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksSyncV2Provider.java @@ -28,9 +28,7 @@ import com.todoroo.astrid.gtasks.GtasksMetadata; import com.todoroo.astrid.gtasks.GtasksMetadataService; import com.todoroo.astrid.gtasks.GtasksPreferenceService; import com.todoroo.astrid.gtasks.GtasksTaskListUpdater; -import com.todoroo.astrid.gtasks.api.GoogleTasksException; import com.todoroo.astrid.gtasks.api.GtasksInvoker; -import com.todoroo.astrid.gtasks.auth.GtasksTokenValidator; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.sync.SyncResultCallback; @@ -55,8 +53,8 @@ import static org.tasks.date.DateTimeUtils.newDateTime; public class GtasksSyncV2Provider { public class SyncExceptionHandler { - public void handleException(String tag, Exception e) { - log.error("{}: {}", tag, e.getMessage(), e); + public void handleException(Exception e) { + log.error(e.getMessage(), e); } } @@ -83,15 +81,15 @@ public class GtasksSyncV2Provider { private final GtasksTaskListUpdater gtasksTaskListUpdater; private final Context context; private final Preferences preferences; - private final GtasksTokenValidator gtasksTokenValidator; private final GtasksMetadata gtasksMetadataFactory; private final SyncExecutor executor; + private final GtasksInvoker gtasksInvoker; @Inject public GtasksSyncV2Provider(TaskService taskService, StoreObjectDao storeObjectDao, GtasksPreferenceService gtasksPreferenceService, GtasksSyncService gtasksSyncService, GtasksListService gtasksListService, GtasksMetadataService gtasksMetadataService, GtasksTaskListUpdater gtasksTaskListUpdater, @ForApplication Context context, Preferences preferences, - GtasksTokenValidator gtasksTokenValidator, GtasksMetadata gtasksMetadata, SyncExecutor executor) { + GtasksMetadata gtasksMetadata, SyncExecutor executor, GtasksInvoker gtasksInvoker) { this.taskService = taskService; this.storeObjectDao = storeObjectDao; this.gtasksPreferenceService = gtasksPreferenceService; @@ -101,9 +99,9 @@ public class GtasksSyncV2Provider { this.gtasksTaskListUpdater = gtasksTaskListUpdater; this.context = context; this.preferences = preferences; - this.gtasksTokenValidator = gtasksTokenValidator; this.gtasksMetadataFactory = gtasksMetadata; this.executor = executor; + this.gtasksInvoker = gtasksInvoker; } private String getName() { @@ -112,7 +110,6 @@ public class GtasksSyncV2Provider { public void signOut() { gtasksPreferenceService.clearLastSyncDate(); - gtasksPreferenceService.setToken(null); gtasksPreferenceService.setUserName(null); gtasksMetadataService.clearMetadata(); } @@ -128,14 +125,12 @@ public class GtasksSyncV2Provider { callback.started(); try { - String authToken = getValidatedAuthToken(); - final GtasksInvoker invoker = new GtasksInvoker(context, gtasksTokenValidator, authToken); TaskLists remoteLists = null; try { - remoteLists = invoker.allGtaskLists(); + remoteLists = gtasksInvoker.allGtaskLists(); gtasksListService.updateLists(remoteLists); } catch (IOException e) { - handler.handleException("gtasks-sync=io", e); //$NON-NLS-1$ + handler.handleException(e); } if (remoteLists == null) { @@ -156,16 +151,16 @@ public class GtasksSyncV2Provider { executor.execute(callback, new Runnable() { @Override public void run() { - synchronizeListHelper(list, invoker, handler); + synchronizeListHelper(list, gtasksInvoker, handler); if (finisher.decrementAndGet() == 0) { - pushUpdated(invoker); + pushUpdated(gtasksInvoker); finishSync(callback); } } }); } - } catch(Exception e) { - handler.handleException("gtasks-sync=io", e); //$NON-NLS-1$ + } catch (Exception e) { + handler.handleException(e); callback.finished(); } } @@ -186,7 +181,7 @@ public class GtasksSyncV2Provider { try { gtasksSyncService.pushTaskOnSave(task, task.getMergedValues(), invoker); } catch (IOException e) { - handler.handleException("gtasks-sync-io", e); //$NON-NLS-1$ + handler.handleException(e); } } } finally { @@ -201,10 +196,8 @@ public class GtasksSyncV2Provider { callback.started(); try { - String authToken = getValidatedAuthToken(); gtasksSyncService.waitUntilEmpty(); - final GtasksInvoker service = new GtasksInvoker(context, gtasksTokenValidator, authToken); - synchronizeListHelper(gtasksList, service, null); + synchronizeListHelper(gtasksList, gtasksInvoker, null); } finally { callback.finished(); } @@ -212,20 +205,6 @@ public class GtasksSyncV2Provider { }); } - private String getValidatedAuthToken() { - String authToken = gtasksPreferenceService.getToken(); - try { - authToken = gtasksTokenValidator.validateAuthToken(context, authToken); - if (authToken != null) { - gtasksPreferenceService.setToken(authToken); - } - } catch (GoogleTasksException e) { - log.error(e.getMessage(), e); - authToken = null; - } - return authToken; - } - private synchronized void synchronizeListHelper(GtasksList list, GtasksInvoker invoker, SyncExceptionHandler errorHandler) { String listId = list.getRemoteId(); @@ -266,7 +245,7 @@ public class GtasksSyncV2Provider { } } catch (IOException e) { if (errorHandler != null) { - errorHandler.handleException("gtasks-sync-io", e); //$NON-NLS-1$ + errorHandler.handleException(e); } else { log.error(e.getMessage(), e); } diff --git a/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksTaskContainer.java b/src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksTaskContainer.java similarity index 100% rename from src/main/java/com/todoroo/astrid/gtasks/sync/GtasksTaskContainer.java rename to src/googleplay/java/com/todoroo/astrid/gtasks/sync/GtasksTaskContainer.java diff --git a/src/googleplay/java/org/tasks/AccountManager.java b/src/googleplay/java/org/tasks/AccountManager.java new file mode 100644 index 000000000..45c950a49 --- /dev/null +++ b/src/googleplay/java/org/tasks/AccountManager.java @@ -0,0 +1,115 @@ +package org.tasks; + +import android.accounts.Account; +import android.app.Activity; +import android.content.Context; + +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.client.googleapis.extensions.android.accounts.GoogleAccountManager; +import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential; +import com.google.api.services.tasks.TasksScopes; +import com.google.common.base.Function; +import com.google.common.base.Predicate; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.tasks.injection.ForApplication; + +import java.io.IOException; +import java.util.List; + +import javax.annotation.Nullable; +import javax.inject.Inject; + +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 void clearToken(GoogleAccountCredential credential) throws IOException { + try { + String token = credential.getToken(); + log.debug("Invalidating {}", token); + GoogleAuthUtil.clearToken(context, token); + GoogleAuthUtil.getTokenWithNotification(context, credential.getSelectedAccount(), "oauth2:" + TasksScopes.TASKS, null); + } catch (GoogleAuthException e) { + log.error(e.getMessage(), e); + throw new IOException(e); + } + } + + public interface AuthResultHandler { + void authenticationSuccessful(String accountName, String authToken); + void authenticationFailed(String message); + } + + private static final Logger log = LoggerFactory.getLogger(AccountManager.class); + + public static final int REQUEST_AUTHORIZATION = 10987; + + private final Context context; + private final GoogleAccountManager googleAccountManager; + + @Inject + public AccountManager(@ForApplication Context context) { + this.context = context; + + googleAccountManager = new GoogleAccountManager(context); + } + + public List getAccounts() { + return transform(getAccountList(), new Function() { + @Nullable + @Override + public String apply(Account account) { + return account.name; + } + }); + } + + public boolean hasAccount(final String name) { + return getAccount(name) != null; + } + + public boolean isEmpty() { + return getAccounts().isEmpty(); + } + + public void getAuthToken(final Activity activity, final String accountName, final AuthResultHandler handler) { + final Account account = getAccount(accountName); + if (account == null) { + handler.authenticationFailed(activity.getString(R.string.gtasks_error_accountNotFound, accountName)); + } else { + new Thread(new Runnable() { + @Override + public void run() { + try { + handler.authenticationSuccessful(accountName, GoogleAuthUtil.getToken(activity, account, "oauth2:" + TasksScopes.TASKS, null)); + } catch(UserRecoverableAuthException e) { + log.error(e.getMessage(), e); + activity.startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION); + } catch(GoogleAuthException | IOException e) { + log.error(e.getMessage(), e); + handler.authenticationFailed(context.getString(R.string.gtasks_GLA_errorIOAuth)); + } + } + }).start(); + } + } + + private List getAccountList() { + return asList(googleAccountManager.getAccounts()); + } + + public Account getAccount(final String name) { + return tryFind(getAccountList(), new Predicate() { + @Override + public boolean apply(Account account) { + return name.equalsIgnoreCase(account.name); + } + }).orNull(); + } +} diff --git a/src/main/java/org/tasks/activities/ClearGtaskDataActivity.java b/src/googleplay/java/org/tasks/activities/ClearGtaskDataActivity.java similarity index 100% rename from src/main/java/org/tasks/activities/ClearGtaskDataActivity.java rename to src/googleplay/java/org/tasks/activities/ClearGtaskDataActivity.java diff --git a/src/main/java/org/tasks/dialogs/AccountSelectionDialog.java b/src/googleplay/java/org/tasks/dialogs/AccountSelectionDialog.java similarity index 100% rename from src/main/java/org/tasks/dialogs/AccountSelectionDialog.java rename to src/googleplay/java/org/tasks/dialogs/AccountSelectionDialog.java diff --git a/src/main/java/org/tasks/scheduling/GtasksBackgroundService.java b/src/googleplay/java/org/tasks/scheduling/GtasksBackgroundService.java similarity index 100% rename from src/main/java/org/tasks/scheduling/GtasksBackgroundService.java rename to src/googleplay/java/org/tasks/scheduling/GtasksBackgroundService.java diff --git a/src/googleplay/res/values/bools.xml b/src/googleplay/res/values/bools.xml new file mode 100644 index 000000000..9f359460c --- /dev/null +++ b/src/googleplay/res/values/bools.xml @@ -0,0 +1,4 @@ + + + true + \ No newline at end of file diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 64a66546d..8ea74eba2 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -44,15 +44,6 @@ - - - - - - - - - @@ -367,20 +358,6 @@ android:name="com.todoroo.astrid.actfm.FilterSettingsActivity" android:windowSoftInputMode="stateHidden" /> - - - - - - - @@ -525,9 +502,6 @@ - diff --git a/src/main/java/com/todoroo/astrid/gtasks/GtasksPreferenceService.java b/src/main/java/com/todoroo/astrid/gtasks/GtasksPreferenceService.java index 606ef9a50..92f2a7244 100644 --- a/src/main/java/com/todoroo/astrid/gtasks/GtasksPreferenceService.java +++ b/src/main/java/com/todoroo/astrid/gtasks/GtasksPreferenceService.java @@ -5,8 +5,12 @@ */ package com.todoroo.astrid.gtasks; +import android.content.Context; + import com.todoroo.andlib.utility.DateUtilities; +import org.tasks.R; +import org.tasks.injection.ForApplication; import org.tasks.preferences.Preferences; import javax.inject.Inject; @@ -21,6 +25,7 @@ import javax.inject.Singleton; @Singleton public class GtasksPreferenceService { + private Context context; private final Preferences preferences; public static final String IDENTIFIER = "gtasks"; //$NON-NLS-1$ @@ -29,7 +34,8 @@ public class GtasksPreferenceService { private static final String PREF_USER_NAME = IDENTIFIER + "_user"; //$NON-NLS-1$ @Inject - public GtasksPreferenceService(Preferences preferences) { + public GtasksPreferenceService(@ForApplication Context context, Preferences preferences) { + this.context = context; this.preferences = preferences; } @@ -59,17 +65,8 @@ public class GtasksPreferenceService { * @return true if we have a token for this user, false otherwise */ public boolean isLoggedIn() { - return preferences.getStringValue(IDENTIFIER + PREF_TOKEN) != null; - } - - /** authentication token, or null if doesn't exist */ - public String getToken() { - return preferences.getStringValue(IDENTIFIER + PREF_TOKEN); - } - - /** Sets the authentication token. Set to null to clear. */ - public void setToken(String setting) { - preferences.setString(IDENTIFIER + PREF_TOKEN, setting); + return context.getResources().getBoolean(R.bool.sync_enabled) && + preferences.getStringValue(IDENTIFIER + PREF_TOKEN) != null; } /** @return Last Successful Sync Date, or 0 */ diff --git a/src/main/java/com/todoroo/astrid/gtasks/auth/GtasksTokenValidator.java b/src/main/java/com/todoroo/astrid/gtasks/auth/GtasksTokenValidator.java deleted file mode 100644 index e9de1bb7a..000000000 --- a/src/main/java/com/todoroo/astrid/gtasks/auth/GtasksTokenValidator.java +++ /dev/null @@ -1,119 +0,0 @@ -/** - * Copyright (c) 2012 Todoroo Inc - * - * See the file "LICENSE" for the full license governing this code. - */ -package com.todoroo.astrid.gtasks.auth; - -import android.accounts.Account; -import android.accounts.AccountManager; -import android.accounts.AccountManagerFuture; -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; - -import com.google.api.client.googleapis.extensions.android.accounts.GoogleAccountManager; -import com.todoroo.astrid.gtasks.GtasksPreferenceService; -import com.todoroo.astrid.gtasks.api.GoogleTasksException; -import com.todoroo.astrid.gtasks.api.GtasksInvoker; - -import org.tasks.R; -import org.tasks.injection.ForApplication; - -import java.io.IOException; - -import javax.inject.Inject; -import javax.inject.Singleton; - -@Singleton -public class GtasksTokenValidator { - - private static final String TOKEN_INTENT_RECEIVED = "intent!"; //$NON-NLS-1$ - private static final int REVALIDATION_TRIES = 4; - - private final Context context; - private final GtasksPreferenceService preferences; - - @Inject - public GtasksTokenValidator(@ForApplication Context context, GtasksPreferenceService preferences) { - this.context = context; - this.preferences = preferences; - } - - /** - * Invalidates and then revalidates the auth token for the currently logged in user - * Shouldn't be called from the main thread--will block on network calls - * @return valid token on success, null on failure - */ - public synchronized String validateAuthToken(Context c, String token) throws GoogleTasksException { - GoogleAccountManager accountManager = new GoogleAccountManager(context); - - if(testToken(token)) { - return token; - } - - // If fail, token may have expired -- get a new one and return that - String accountName = preferences.getUserName(); - Account a = accountManager.getAccountByName(accountName); - if (a == null) { - throw new GoogleTasksException(c.getString(R.string.gtasks_error_accountNotFound, accountName)); - } - - for (int i = 0; i < REVALIDATION_TRIES; i++) { - accountManager.invalidateAuthToken(token); - - // try with notify-auth-failure = false - AccountManagerFuture future = accountManager.getAccountManager().getAuthToken(a, GtasksInvoker.AUTH_TOKEN_TYPE, false, null, null); - token = getTokenFromFuture(c, future); - - if(TOKEN_INTENT_RECEIVED.equals(token)) { - return null; - } else if(token != null && testToken(token)) { - return token; - } - } - - throw new GoogleTasksException(c.getString(R.string.gtasks_error_authRefresh)); - } - - private boolean testToken(String token) { - GtasksInvoker testService = new GtasksInvoker(context, this, token); - try { - testService.ping(); - return true; - } catch (IOException i) { - return false; - } - } - - private String getTokenFromFuture(Context c, AccountManagerFuture future) - throws GoogleTasksException { - Bundle result; - try { - result = future.getResult(); - if(result == null) { - throw new NullPointerException("Future result was null."); //$NON-NLS-1$ - } - } catch (Exception e) { - throw new GoogleTasksException(e.getLocalizedMessage()); - } - - // check what kind of result was returned - String token; - if (result.containsKey(AccountManager.KEY_AUTHTOKEN)) { - token = result.getString(AccountManager.KEY_AUTHTOKEN); - } else if (result.containsKey(AccountManager.KEY_INTENT)) { - Intent intent = (Intent) result.get(AccountManager.KEY_INTENT); - if (c instanceof Activity) { - c.startActivity(intent); - } else { - throw new GoogleTasksException(c.getString(R.string.gtasks_error_background_sync_auth)); - } - return TOKEN_INTENT_RECEIVED; - } else { - throw new GoogleTasksException(c.getString(R.string.gtasks_error_accountManager)); - } - return token; - } -} diff --git a/src/main/java/org/tasks/AccountManager.java b/src/main/java/org/tasks/AccountManager.java deleted file mode 100644 index 6ab5b5023..000000000 --- a/src/main/java/org/tasks/AccountManager.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.tasks; - -import android.accounts.Account; -import android.accounts.AccountManagerCallback; -import android.accounts.AccountManagerFuture; -import android.app.Activity; -import android.os.Bundle; - -import com.google.api.client.googleapis.extensions.android.accounts.GoogleAccountManager; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.todoroo.astrid.gtasks.api.GtasksInvoker; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.util.List; -import java.util.concurrent.TimeUnit; - -import javax.annotation.Nullable; -import javax.inject.Inject; - -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 { - - private static final Logger log = LoggerFactory.getLogger(AccountManager.class); - - public interface AuthResultHandler { - void authenticationSuccessful(String accountName, String authToken); - - void authenticationFailed(String message); - } - - private GoogleAccountManager googleAccountManager; - private Activity activity; - - @Inject - public AccountManager(Activity activity) { - this.activity = activity; - - googleAccountManager = new GoogleAccountManager(activity); - } - - public List getAccounts() { - return transform(getAccountList(), new Function() { - @Nullable - @Override - public String apply(Account account) { - return account.name; - } - }); - } - - public boolean hasAccount(final String name) { - return getAccount(name) != null; - } - - public boolean isEmpty() { - return getAccounts().isEmpty(); - } - - public void getAuthToken(final String accountName, final AuthResultHandler handler) { - Account account = getAccount(accountName); - if (account == null) { - handler.authenticationFailed(activity.getString(R.string.gtasks_error_accountNotFound, accountName)); - } else { - googleAccountManager.getAccountManager().getAuthToken(account, GtasksInvoker.AUTH_TOKEN_TYPE, null, activity, new AccountManagerCallback() { - @Override - public void run(final AccountManagerFuture future) { - new Thread() { - @Override - public void run() { - try { - Bundle bundle = future.getResult(30, TimeUnit.SECONDS); - if (bundle.containsKey(android.accounts.AccountManager.KEY_AUTHTOKEN)) { - handler.authenticationSuccessful(accountName, bundle.getString(android.accounts.AccountManager.KEY_AUTHTOKEN)); - } else { - log.error("No auth token found in response bundle"); - handler.authenticationFailed(activity.getString(R.string.gtasks_error_accountNotFound, accountName)); - } - } catch (final Exception e) { - log.error(e.getMessage(), e); - handler.authenticationFailed(activity.getString(e instanceof IOException - ? R.string.gtasks_GLA_errorIOAuth - : R.string.gtasks_GLA_errorAuth)); - } - } - }.start(); - } - }, null); - } - } - - private List getAccountList() { - return asList(googleAccountManager.getAccounts()); - } - - private Account getAccount(final String name) { - return tryFind(getAccountList(), new Predicate() { - @Override - public boolean apply(Account account) { - return name.equalsIgnoreCase(account.name); - } - }).orNull(); - } -} diff --git a/src/main/java/org/tasks/activities/CalendarSelectionDialog.java b/src/main/java/org/tasks/activities/CalendarSelectionDialog.java index 6c99fc5bb..a45543592 100644 --- a/src/main/java/org/tasks/activities/CalendarSelectionDialog.java +++ b/src/main/java/org/tasks/activities/CalendarSelectionDialog.java @@ -17,7 +17,6 @@ import org.tasks.injection.InjectingDialogFragment; import java.util.List; -import javax.annotation.Nullable; import javax.inject.Inject; import static com.google.common.collect.Lists.transform; @@ -43,7 +42,6 @@ public class CalendarSelectionDialog extends InjectingDialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { final List calendars = gCalHelper.getCalendars(); List calendarNames = transform(calendars, new Function() { - @Nullable @Override public String apply(AndroidCalendar androidCalendar) { return androidCalendar.getName(); diff --git a/src/main/java/org/tasks/filters/FilterCriteriaProvider.java b/src/main/java/org/tasks/filters/FilterCriteriaProvider.java index f28d5b569..3870af445 100644 --- a/src/main/java/org/tasks/filters/FilterCriteriaProvider.java +++ b/src/main/java/org/tasks/filters/FilterCriteriaProvider.java @@ -31,7 +31,6 @@ import org.tasks.injection.ForApplication; import java.util.List; -import javax.annotation.Nullable; import javax.inject.Inject; import static com.google.common.collect.Iterables.transform; @@ -83,7 +82,6 @@ public class FilterCriteriaProvider { private CustomFilterCriterion getTagFilter() { // TODO: adding to hash set because duplicate tag name bug hasn't been fixed yet List tags = newArrayList(newLinkedHashSet(transform(tagService.getTagList(), new Function() { - @Nullable @Override public String apply(TagData tagData) { return tagData.getName(); diff --git a/src/main/java/org/tasks/preferences/DeviceInfo.java b/src/main/java/org/tasks/preferences/DeviceInfo.java index e703531ab..073bd886d 100644 --- a/src/main/java/org/tasks/preferences/DeviceInfo.java +++ b/src/main/java/org/tasks/preferences/DeviceInfo.java @@ -7,7 +7,7 @@ import android.content.pm.PackageManager; import android.os.Build; import android.provider.MediaStore; -import com.google.api.client.repackaged.com.google.common.base.Joiner; +import com.google.common.base.Joiner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/tasks/scheduling/BackgroundScheduler.java b/src/main/java/org/tasks/scheduling/BackgroundScheduler.java index 625d5e805..9828264b4 100644 --- a/src/main/java/org/tasks/scheduling/BackgroundScheduler.java +++ b/src/main/java/org/tasks/scheduling/BackgroundScheduler.java @@ -3,6 +3,7 @@ package org.tasks.scheduling; import android.content.Context; import android.content.Intent; +import org.tasks.R; import org.tasks.injection.ForApplication; import javax.inject.Inject; @@ -21,7 +22,10 @@ public class BackgroundScheduler { context.startService(new Intent(context, ReminderSchedulerIntentService.class)); scheduleBackupService(); scheduleMidnightRefresh(); - scheduleGtaskSync(); + + if (context.getResources().getBoolean(R.bool.sync_enabled)) { + scheduleGtaskSync(); + } } public void scheduleBackupService() { diff --git a/src/main/res/values-ar/strings.xml b/src/main/res/values-ar/strings.xml index 12155a20b..702a4f958 100644 --- a/src/main/res/values-ar/strings.xml +++ b/src/main/res/values-ar/strings.xml @@ -136,7 +136,6 @@ لا يوجد حساب قوقل للتزامن مع. عذرا، لم نتمكن من الاتصال مع خادم قوقل. أعد المحاولة مرة أخرى لاحقا. مهام قوقل - خطأ من اعدادات هاتفك. يرجى تسجيل الخروج ثم الدخول مره اخرى من اعدادات المهام لقوقل تسجيل ملاحظة هل أنت متأكد؟ لن تستطيع العودة تسجيل صوت diff --git a/src/main/res/values-bg-rBG/strings.xml b/src/main/res/values-bg-rBG/strings.xml index 7b7a535e9..1efa3e659 100644 --- a/src/main/res/values-bg-rBG/strings.xml +++ b/src/main/res/values-bg-rBG/strings.xml @@ -233,12 +233,8 @@ Изчисти Завършени Няма налични Google акаунти за синхронизация. Удостоверява се... - Грешка при удостоверяване! Моля, проверете потребителското си име и парола в акаунт мениджъра на телефона си Съжаляваме, ние имахме проблем с комуникацията със сървърите на Google. Моля, опитайте отново по-късно. Акаунт %s не е намерен-моля да излезнете и да влязнете отново от настройките на Google Tasks. - Не може да се удостовери с Google Tasks. Моля, проверете паролата на профила си или опитате отново по-късно. - Грешка в мениджъра на акаунти във вашия телефон. Моля за излезнете и да влезнете пак от настройките на Google Tasks. - Грешка при удостоверяване във фонов режим. Моля, опитайте се да започване синхронизация, докато Tasks се изпълнява. Вие имате $NUM съвпадения: $FILTER Запис на бележка Сигурни ли сте? Не може да бъде отменено diff --git a/src/main/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml index f6edc5317..1b37f204d 100644 --- a/src/main/res/values-cs/strings.xml +++ b/src/main/res/values-cs/strings.xml @@ -203,13 +203,9 @@ Smazat hotové Žádný dostupný účet Google pro synchronizaci Ověřuje se... - Chyba při autentifikaci! Zkontrolujte prosím uživatelské jméno/heslo ve správci hesel svého mobilu Nastali problémy při komunikaci se servery Google. Zkuste to prosím později. Google Úkoly (Beta!) Účet %s nebyl nalezen -- přes nastavení Google Tasks se odhlašte a znovu přihlaste. - Nelze se přihlásit ke Google Tasks. Zkontrolujte prosím heslo ke svému účtu, nebo se zkuste znovu přihlásit. - Chyba nastavení účtu ve Vašem telefonu. Prosím odhlašte se a znovu přihlašte v nastavení úkolů Google. - Chyba ověření pravosti na pozadí. Prosím, zkuste znovu spustit synchronizaci úkolů. Máš $NUM se značkou $FILTER Nahrát poznámku Skutečně? Nebude cesty zpět diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml index 0925cc70f..355ea83ba 100644 --- a/src/main/res/values-de/strings.xml +++ b/src/main/res/values-de/strings.xml @@ -214,12 +214,8 @@ Entferne erledigte Aufgaben Keine Google-Accounts zum synchronisieren verfügbar. Authentifizierung ... - Anmeldefehler! Bitte Benutzername und Passwort in den Kontoeinstellungen des Telefons prüfen Entschuldigung, während der Kommunikation mit den Google-Servern ist ein Problem aufgetreten. Bitte versuchen Sie es später noch einmal. Konto %s nicht gefunden. Bitte ausloggen und erneut einloggen über die Einstellungen von Google Tasks. - Anmeldung bei Google Tasks nicht möglich. Bitte Passwort prüfen oder später erneut versuchen. - Fehler in den - Fehler bei der Hintergrundauthentifizierung. Starte eine Synchronisation in der App. Du hast $NUM Übereinstimmungen mit: $FILTER Notiz aufzeichnen Sind Sie sicher? Das kann nicht rückgängig gemacht werden diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml index b283bf9d5..4b69831c2 100644 --- a/src/main/res/values-el/strings.xml +++ b/src/main/res/values-el/strings.xml @@ -205,13 +205,9 @@ Καθαρισμός ολοκληρωμένων Δεν υπάρχουν λογαριασμοί Google για συγχρονισμο. Αυθεντικοποίηση... - Σφάλμα αυθεντικοποίησης! Παρακαλώ ελέγξτε το όνομα και τον κωδικό χρήστη στην διαχείρηση λογαριασμών του κινητού Συγγνώμη, υπήρξε σφάλμα επικοινωνίας με τους διακομιστές της Google. Παρακαλουμε δοκιμάστε πάλι μετά Εργασίες Google Λογαριασμός %s δεν βρέθηκε - παρακαλώ αποσυνδεθείτε και συνδεθείτε πάλι απο τις ρυθμίσεις του Google Tasks. - Ανέφικτη η αυθεντικοποίηση με το Google Tasks. Παρακαλώ ελέγξτε τον κωδικό του λογαριασμού σας και δοκιμάστε πάλι. - Σφάλμα στον διαχειριστή επαφών της συσκευής σας. Παρακαλώ αποσυνδεθείτε και συνδεθείτε ξανά απο τις ρυθμίσεις του Google Tasks. - Σφάλμα αυθεντικοποίησης στο παρασκήνιο. Παρακαλώ δοκιμάστε να συγχρονίσετε όσο τρέχει η εφαρμογή. Έχεις $NUM να ταιριάζει: $FILTER Ηχογράφηση σημείωσης Είστε σίγουρος; Δεν μπορεί να ακυρωθεί diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index e2fc7b1d1..7d88058db 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -215,12 +215,8 @@ Quitar finalizadas No hay disponible una cuenta de Google con la cual sincronizarse. Autenticando... - ¡Error de autenticación! ¡Por favor revisa tu nombre de usuario y contraseña en el administrador de cuentas de tu teléfono! Perdón, hubo un problema al comunicarse con los servidores de Google. Por favor inténtalo mas tarde. No se ha encontrado la cuenta %s --por favor, cierra sesión y vuelve a iniciarla desde la configuración de Google Tasks - No se pudo autenticar con Google Tasks. Por favor revisa la contraseña de tu cuenta o intenta de nuevo mas tarde. - Error en el administrador de cuentas de tu teléfono. Por favor reinicia sesión desde la configuración de Google Tasks. - Error al autenticarse en un segundo plano. Por favor, intente iniciar la sincronización mientras Tasks está ejecutándose. Tiene $NUM que coincide con: $FILTER Grabar una nota Está seguro? No se puede deshacer diff --git a/src/main/res/values-fa/strings.xml b/src/main/res/values-fa/strings.xml index a9cfa5a97..bc4fb3a82 100644 --- a/src/main/res/values-fa/strings.xml +++ b/src/main/res/values-fa/strings.xml @@ -158,7 +158,6 @@ حذف انجام شد اکانت گوگلی برای همگام سازی موجود نیست اعتبارسنجی... - خطای اعتبارسنجی! لطفا نام کاربری و رمزعبور خود را در تنظیمات گوشی تان بررسی نمایید پوزش، ارتباط با سرورهای گوگل میسر نشد. لطفا دوباره تلاش نمایید. وظایف گوگل ذخیره یادداشت diff --git a/src/main/res/values-fi/strings.xml b/src/main/res/values-fi/strings.xml index bbd9ae9f1..a6df4c5f8 100644 --- a/src/main/res/values-fi/strings.xml +++ b/src/main/res/values-fi/strings.xml @@ -52,7 +52,6 @@ Poista valmiit Google tiliä ei ole saatavissa synkronointia varten. Todennetaan... - Todennus epäonnistui! Tarkista käyttjätunnus ja salasana puhelimesi tilinhallinata sovellukseta Valitettavasti meillä on yhteysongelmia Google palvelimiin. Ole hyvä ja yritä myöhemmin uudestaa. Google tehtävät Satunnainen muistutus diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index a8c0bb1bb..da0d996be 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -217,13 +217,9 @@ Effacer les tâches terminés Aucun compte Google trouvé pour la synchronisation. Authentification en cours... - Erreur d\'authentification! Veuillez vérifier votre nom d\'utilisateur et votre mot de passe dans le gestionnaire de compte de votre téléphone Erreur de communication avec les serveurs Google. Veuillez essayer plus tard. Google Tasks (Bêta !) Le compte %s est introuvable--veuillez vous déconnecter puis vous reconnecter depuis les préférences Google Tasks. - Impossible de s\'authentifier avec Google Tasks. Veuillez vérifier votre mot de passe ou essayez plus tard. - Une erreur est apparue dans le gestionnaire de comptes de votre téléphone. Veuillez vous deconnecter de votre compte Google Task puis vous reconnecter. - \"Erreur d\'authentification en arrière plan. Réessayez de vous synchroniser quand Tasks est lancé.\" Vous avez $NUM correspondant(s) : $FILTER Enregistrer un commentaire Êtes-vous certain(e)? Cette opération est irréversible diff --git a/src/main/res/values-hu/strings.xml b/src/main/res/values-hu/strings.xml index 4574fe52a..7c84422f6 100644 --- a/src/main/res/values-hu/strings.xml +++ b/src/main/res/values-hu/strings.xml @@ -88,11 +88,8 @@ Törlés befejezve Nincs elérhető Google fiók a szinkronizáláshoz. Azonosítás... - Nem sikerült az azonosítás! Kérlek, ellenőrizd a felhasználóneved és a jelszavad a készüléked fiókkezelőjében Sajnáljuk, de hiba történt a Google szervereival való kommunikálás során. Próbáld újra később. %s fiók nem található -- kérlek, jelentkezz ki, és vissza a Google Tasks beállításokban. - Nem sikerült a Google Tasks azonosítás. Kérlek, ellenőrizd a jelszavad vagy próbáld újra később. - Hiba a készüléked fiókkezelőjében. Kérlek, jelentkezz ki és vissza a Google Tasks beállításokban. Jegyzet rögzítése Hang rögzítése diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml index 5c2b23c55..bd3c87d7c 100644 --- a/src/main/res/values-it/strings.xml +++ b/src/main/res/values-it/strings.xml @@ -227,13 +227,9 @@ Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dat Elimina attività completate Non è disponibile nessun Google account con cui sincronizzarsi. Autenticazione... - Errore di autenticazione! Per favore controlla i tuoi username e password nell\'account manager del tuo telefono. Ci scusiamo per il disagio, abbiamo dei problemi a comunicare con i server di Google. Per favore riprovare più tardi. Attività Google Account %s non trovato--per favore fai logout e di nuovo login dalla configurazione di Google Tasks. - Impossibile autenticarsi con Google Tasks. Per favore verifica la tua password o ritenta più tardi. - Account non trovato--per favore fai logout e di nuovo login dalla configurazione di Google Tasks. - Errore di autenticazione in background. Per favore prova ad avviare una sincronizzazione durante l\'esecuzione di Tasks. Hai $NUM corrispondenti: $FILTER Registra una nota Se sicuro? Non può essere eseguito diff --git a/src/main/res/values-iw/strings.xml b/src/main/res/values-iw/strings.xml index 057256361..e7c423be0 100644 --- a/src/main/res/values-iw/strings.xml +++ b/src/main/res/values-iw/strings.xml @@ -206,13 +206,9 @@ הסירי משימות שבוצעו לא מצאתי חשבון גוגל לסנכרן איתו מאמתת... - האימות נכשל! אנא בדוק את שם המשתמש והסיסמא במנהל החשבונות של הטלפון שלך. מצטערת, נתקלתי בבעיה בהתקשרות לשרתי גוגל. אנא נסה שוב מאוחר יותר. ״משימות גוגל״ החשבון %s לא נמצא. אנא התנתק והתחבר שוב במסך הגדרות של ״משימות גוגל״. - איני מצליחה לאמת אותך מול ״משימות גוגל״. אנא בדוק את הסיסמא שהזנת, או נסה מאוחר יותר. - מנהל החשבונות של הטלפון שלך נתקל בשגיאה. אנא התנתק והתחבר מתוך הגדרות ״משימות גוגל״. - האימות המתבצע ברקע נכשל. אנא נסה להתחיל את הסינכרון בזמן שאסטריד פועלת. יש לך $NUM המתאימים: $FILTER הקלד הערה בטוח? לא ניתן לבטל את הפעולה diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml index e73c2d26c..0f39168d2 100644 --- a/src/main/res/values-ja/strings.xml +++ b/src/main/res/values-ja/strings.xml @@ -231,13 +231,9 @@ クリアが完了しました 同期するために有効な Google アカウントがありません. 認証中... - 認証エラー! 電話のアカウント管理でユーザー名とパスワードを確認してください すみません、Googleのサーバとの通信で問題が発生しました。しばらくしてから再度やり直してください。 Google Tasks (ベータ版!) アカウント %s が見つかりません--ログアウトして再度 Google Tasks 設定にログインしてください. - Google Tasks で認証できません. アカウントのパスワードを確認するか後で再度実行してください. - 電話のアカウント管理にエラーがあります. ログアウトして再度 Google Tasks 設定にログインしてください. - バックグラウンドでの認証中にエラー. タスクの実行中に同期を開始してください. $FILTER の検索結果: $NUM 件 注釈を記録 よろしいですか? 取り消しできません diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml index 0c683cada..89d20e769 100644 --- a/src/main/res/values-ko/strings.xml +++ b/src/main/res/values-ko/strings.xml @@ -234,13 +234,9 @@ Tasks의 백업에서 당신의 일정을 복구하시기 바랍니다. 삭제 완료 동기화 가능한 구글 계정이 없음 인증 중... - 인증 오류! 휴대폰 계정 관리자의 사용자명과 비밀번호를 확인해 주세요 죄송합니다, 구글 서버와 통신하는 데 문제가 있습니다. 잠시 후 다시 시도하세요. 구글 일정 %s 계정을 찾을 수 없습니다 - 로그아웃하고 구글 일정 설정에서 다시 로그인해 보세요. - 구글 일정으로 인증할 수 없습니다. 계정 비밀번호를 확인하거나 나중에 다시 시도해 보세요. - 휴대폰 계정 관리자에서 에러가 발생했습니다. 로그아웃 후 구글 일정 설정에서 다시 로그인 해 주세요. - 백그라운드에서 인증 에러가 발생했습니다. Tasks가 실행중일 때 동기화를 시작해 보세요. $NUM 개의 일정이 일치합니다: $FILTER 노트 기록 정말입니까? 되돌릴 수 없습니다 diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml index a00ebf9c3..68e6f46be 100644 --- a/src/main/res/values-nl/strings.xml +++ b/src/main/res/values-nl/strings.xml @@ -228,13 +228,9 @@ Verwijderen Voltooid Geen Google account beschikbaar voor synchronisatie Verifiëren... - Authenticatiefout! Controleer je gebruikersnaam en wachtwoord in de accountinstellingen van je telefoon. Sorry, we konden geen verbinding maken met de servers van Google. Probeer het later opnieuw. Google Taken (Beta!) Account %s niet gevonden--probeer opnieuw in te loggen vanuit de instellingen van Google Taken. - Authenticatieprobleem bij Google Taken. Controleer je wachtwoord of probeer het later opnieuw. - Error in uw telefoon account manager. Log uit en log opnieuw in vanuit de Google Task instellingen. - Error authenticatie op achtergrond bezig. Probeer alstublieft een synchronisatie te starten wanneer Tasks is gestart. Er zijn $NUM taken voor: $FILTER Een notitie opnemen Weet je het zeker? Dit kan niet ongedaan gemaakt worden diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml index 666ecae2c..3e8dae71d 100644 --- a/src/main/res/values-pl/strings.xml +++ b/src/main/res/values-pl/strings.xml @@ -209,13 +209,9 @@ i odzyskanie zadań z kopi zapasowej (Settings->Sync and backup->Backup-&g Wyczyść zakończone Brak dostępnych kont Google do synchronizacji. Uwierzytelnianie... - Błąd uwierzytelnienia! Proszę sprawdzić nazwę użytkownika i hasło w menadżerze kont swojego telefonu. Przepraszamy, mieliśmy problem z porozumieniem się z serwerami Google. Prosimy spróbować ponownie. Zadania Google Nie znaleziono konta %s --proszę wyloguj się i zaloguj ponownie w ustawieniach Google Zadań. - Uwierzytelnienie w Google Zadania nieudane. Proszę, sprawdź poprawność swego hasła lub spróbuj ponownie później. - Błąd w menadżerze kont Twojego telefonu. Proszę, wyloguj się i zaloguj ponownie w ustawieniach Google Zadań. - Błąd uwierzytelniania w tle. Spróbuj zainicjalizować synchronizację, gdy aplikacja Tasks będzie włączone. Masz $NUM pasujących: $FILTER Nagraj notatkę Jesteś pewny? Tych zmian nie można odwrócić diff --git a/src/main/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml index f0b9cff5e..8f0f621c4 100644 --- a/src/main/res/values-pt-rBR/strings.xml +++ b/src/main/res/values-pt-rBR/strings.xml @@ -205,13 +205,9 @@ Limpeza concluída Google não está disponível para sincronização com contas. Autenticando ... - Falha na autenticação! Verifique o usuário e senha no gerenciado de contas do dispositivo Desculpe-nos, tivemos problemas de comunicação com os servidores do Google. Tente mais tarde. Google Tarefas Conta %s não encontrada--Desconecte-se e conecte-se novamente pelo painel Google Tasks - Incapaz de autenticar no Google Tasks. Verifique seu usuário e senha ou tente novamente. - Erro no gerenciado de contas do dispositivo. Desconecte-se e conecte-se novamente pelo painel Google Tasks - Erro ao autenticar em plano de fundo. Por favor tente iniciar a sincronização enquanto o Tasks estiver rodando. Você tem $NUM resultados: $FILTER Gravar uma nota Você tem certeza? Não pode ser desfeito diff --git a/src/main/res/values-pt/strings.xml b/src/main/res/values-pt/strings.xml index c36fa4aaf..a3221f6e0 100644 --- a/src/main/res/values-pt/strings.xml +++ b/src/main/res/values-pt/strings.xml @@ -225,13 +225,9 @@ das tarefas através de um backup em Definições->Sincronização e backup-& Remoção terminada Não possui qualquer conta Google para sincronização. Autenticação... - Erro ao autenticar! Verifique o seu nome de utilizador e senha no gestor de contas do seu dispositivo. Ocorreu um erro ao comunicar com os servidores Google. Tente mais tarde. Tarefas Google Conta %s não encontrada. Termine a sessão e inicie-a novamente nas definições das tarefas Google. - Não foi possível a autenticação nas tarefas Google. Verifique a senha da sua conta e tente novamente. - Erro no gestor de contas do dispositivo. Termine a sessão e inicie-a novamente nas definições das tarefas Google. - Erro de autenticação em segundo plano. Tente efetuar a sincronização durante a execução do Tasks. Tem $NUM ocorrências para: $FILTER Gravar uma nota Tem a certeza? A ação não pode ser anulada! diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml index 43696f9f3..8c688815d 100644 --- a/src/main/res/values-ru/strings.xml +++ b/src/main/res/values-ru/strings.xml @@ -231,12 +231,8 @@ Очистить завершенные Нет доступных аккаунтов Google для синхронизации Авторизация... - Ошибка аутентификации! Пожалуйста, проверьте имя пользователя и пароль в меню управления учетных записей телефона При обращении к серверам Google возникли проблемы. Пожалуйста, попробуйте позже. Учетная запись %s не найдена--пожалуйста, выйдите и войдите снова через настройки Google Tasks. - Не удалось авторизоваться в Google Tasks. Пожалуйста, проверьте пароль к учетной записи или повторите вашу попытку позже. - Ошибка в менеджере учетных записей вашего телефона. Пожалуйста, выйдите и войдите снова в настройках Google Tasks. - Ошибка фоновой авторизации. Пожалуйста, попробуйте синхронизироваться вручную. Число соответствий для $FILTER: $NUM Записать заметку Вы уверены? Это действия нельзя отменить. diff --git a/src/main/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml index b2841bd38..e584733c8 100644 --- a/src/main/res/values-sk/strings.xml +++ b/src/main/res/values-sk/strings.xml @@ -217,13 +217,9 @@ Vymazať dokončené Nieje k dispozícii synchronizácia Google účtu. Overovanie... - Chyba pri overovaní! Prosím, skontroluj meno používateľa a heslo v tvojom mobilnom manažéri účtov. Prepáč, nastal problém v komunikácii s Google serverom. Prosím, skús to znovu neskôr. Úlohy Google Účet %s sa nenašiel--prosím, odhlás sa a znovu prihlás v nastaveniach Úlohy Google. - Nedajú sa overiť Úlohy Google. Prosím, skontroluj si heslo účtu, alebo to skús znovu neskôr. - Chyba v tvojom mobilnom správcovi účtov. Prosím odhlás sa a znovu prihlás späť z Google Tasks nastavení. - Chyba pri overení pravosti na pozadí. Prosím, skús spustiť synchronizáciu kým je zapnutý Tasks. Máš $NUM so značkou $FILTER Nahrať poznámku Naozaj? Nedá sa vrátiť diff --git a/src/main/res/values-sl-rSI/strings.xml b/src/main/res/values-sl-rSI/strings.xml index a6a519cd1..d9fb29e9b 100644 --- a/src/main/res/values-sl-rSI/strings.xml +++ b/src/main/res/values-sl-rSI/strings.xml @@ -209,13 +209,9 @@ Zbriši dokončano Ne morem se uskladiti z neobstoječimi Google računi. Avtentikacija v teku ... - Napaka pri avtentikaciji! Prosimo preverite svoje uporabniško ime in geslo Žal smo imeli težave pri povezovanju z Google strežniki. Prosimo, poskusite ponovno kasneje. Google Naloge Račun %s ni najden--prosimo odjavite se, nato pa ponovno prijavite skozi nastavitve Google Nalog. - Avtentikacija v Google Naloge ni uspela. Prosimo, preverite geslo svojega računa in poskusite ponovno kasneje. - Napaka pri upravitelju računov na vašem telefonu. Prosimo, odjavite se, nato pa ponovno prijavite skozi nastavitve Google Nalog. - Napaka pri overjanju v ozadju. Prosimo, poskusite začeti z usklajevanjem med delovanjem aplikacije Opravki. $NUM jih ustreza: $FILTER Posnemi opombo Ste prepričani? Tega ni mogoče razveljaviti diff --git a/src/main/res/values-sv/strings.xml b/src/main/res/values-sv/strings.xml index ef6805f3d..a40fbe0cb 100644 --- a/src/main/res/values-sv/strings.xml +++ b/src/main/res/values-sv/strings.xml @@ -203,13 +203,9 @@ och återställer dina aktuella uppgifter från en backup Rensa bort färdiga Inga tillgängliga Googlekonton att synkronisera med. Autentiserar... - Autentisering misslyckad! Kontrollera ditt användarnamn och lösenord i kontoinställningarna i din telefon Vi hade problem med förbindelsen till Googles servrar. Försök igen senare. Google Uppgifter Kontot %s kunde inte hittas. Logga ut och in på nytt i inställningarna för Google Uppgifter. - Kunde inte autentisera med Google Uppgifter. Kontrollera ditt lösenord och försök igen. - Fel i din telefons kontohantering. Logga ut och in på nytt i inställningarna för Google Uppgifter. - Autentisering i bakgrunden misslyckades. Vänligen försök starta en synkronisering medan Tasks körs. Du har $NUM som matchar: $FILTER Spela in en anteckning Är du säker? Detta kan inte ångras diff --git a/src/main/res/values-tr/strings.xml b/src/main/res/values-tr/strings.xml index d96443326..bed68f92a 100644 --- a/src/main/res/values-tr/strings.xml +++ b/src/main/res/values-tr/strings.xml @@ -184,13 +184,9 @@ Tamamlanları Temizle Eşleştirilecek Google hesabı mevcut değil. Kimlik doğrulanıyor... - Giriş başarısız! Lütfen kullanıcı ismi ve parolanızı telefondaki hesap yöneticisinden denetleyin Üzgünüm, Google sunucuları ile bağlanmakta sıkıntı yaşıyoruz. Lütfen daha sonra yeniden deneyin. Google Görevleri (Beta!) %s hesabı bulunamadı--lütfen çıkış yapıp Google Görev ayarlarından tekrar giriş yapın. - Google Görevlere giriş başarısız. Lütfen hesap parolanızı kontrol edip tekrar deneyin. - Telefon hesap yöneticisinde hata oluştu. Lütfen çıkış yapıp Google Görevler Ayarlarından tekrar giriş yapın. - Artalanda kimlik doğrulama hatası. Lütfen Tasks çalışırken bir eşlemeyi sıfırlamayı deneyin. $FILTER konumunda $NUM var Bir not kaydet Emin misiniz? Geri döndürülemez diff --git a/src/main/res/values-uk/strings.xml b/src/main/res/values-uk/strings.xml index ec6cd4cf6..9d4800893 100644 --- a/src/main/res/values-uk/strings.xml +++ b/src/main/res/values-uk/strings.xml @@ -214,12 +214,8 @@ Очистити завершені Немає облікового запису Google для синхронізації. Автентифікація... - Помилка аутентифікації! Будь ласка, перевірте ім\'я користувача і пароль в меню управління акаунтами телефону Вибачте, проблеми при зверненні до серверів Google. Будь ласка, спробуйте пізніше. Аккаунт %s не знайдено - будь ласка, вийдіть і увійдіть знову через налаштування Google Tasks. - Не вдалося пройти аутентифікацію в Google Tasks. Будь ласка, перевірте пароль до облікового запису або спробуйте ще раз пізніше. - Помилка в менеджері акаунтів вашого телефону, ласка вийдіть і увійдіть знову в налаштуваннях Google Tasks - Не вдалося пройти аутентифікацію у фоні. Будь ласка, попробуйте при запущеному Tasks. Число відповідностей $FILTER: $NUM Записати замітку Ви впевнені? Це не може бути скасовано. diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml index 2ce3949c5..8f76c667b 100644 --- a/src/main/res/values-zh-rCN/strings.xml +++ b/src/main/res/values-zh-rCN/strings.xml @@ -164,12 +164,8 @@ 清除已完成项 没有可用的Google帐户同步。 正在认证... - 验证出错!请在您手机的帐户管理器中检查您的用户名和密码 对不起,我们在与 Google 服务器通讯时遇到了问题。请稍后再尝试。 找不到帐户 %s——请退出,然后从 Google Tasks设置中重新登录。 - 无法用 Google Tasks验证。请检查您的帐户密码或者稍后再尝试。 - 您手机的帐户管理器出错了。请退出,然后从 Google Tasks设置中重新登录。 - 后台验证出错了。请在清单小助理运行时尝试启动同步。 您有 $NUM 符合: $FILTER 录制一条便笺 您确定吗?无法恢复的喔 diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml index ff62ffcbe..906019828 100644 --- a/src/main/res/values-zh-rTW/strings.xml +++ b/src/main/res/values-zh-rTW/strings.xml @@ -194,13 +194,9 @@ 清除已完成項 沒有可用的Google帳戶同步。 正在認證... - 驗證出錯!請在您手機的帳戶管理器中檢查您的用戶名和密碼 對不起,我們在與Google 服務器通訊時遇到了問題。請稍後再嘗試。 Google Tasks (測試中!) 找不到帳戶%s——請退出,然後從Google 工作表設置中重新登錄。 - 無法用Google 工作表驗證。請檢查您的帳戶密碼或者稍後再嘗試。 - 您手機的帳戶管理器出錯了。請退出,然後從Google 工作表設置中重新登陸。 - 後台驗證出錯了。請在Tasks 運行時嘗試啟動同步。 您有 $NUM 符合: $FILTER 錄製一條便箋 您確定嗎?無法恢復的喔 diff --git a/src/main/res/values/bools.xml b/src/main/res/values/bools.xml index 5e2235556..b963eda96 100644 --- a/src/main/res/values/bools.xml +++ b/src/main/res/values/bools.xml @@ -4,7 +4,7 @@ true false false - true + false false false \ No newline at end of file diff --git a/src/main/res/values/strings-gtasks.xml b/src/main/res/values/strings-gtasks.xml index b7e1c9025..88f9ef770 100644 --- a/src/main/res/values/strings-gtasks.xml +++ b/src/main/res/values/strings-gtasks.xml @@ -34,10 +34,7 @@ - - Error authenticating! Please check your username and password in your phone\'s account manager - - + Sorry, we had trouble communicating with Google servers. Please try again later. @@ -50,13 +47,4 @@ Account %s not found--please log out and log back in from the Google Tasks settings. - - Unable to authenticate with Google Tasks. Please check your account password or try again later. - - - Error in your phone\'s account manager. Please log out and log back in from the Google Tasks settings. - - - Error authenticating in background. Please try initiating a sync while Tasks is running. -