diff --git a/CHANGELOG.md b/CHANGELOG.md index c21a464a4..62e34a132 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ Change Log --- +### 8.6.1 (2020-03-19) + +* Fix crash on startup + ### 8.6 (2020-03-17) * Expand and collapse navigation drawer groups diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 61481b4b8..30b4f2c75 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -35,8 +35,8 @@ android { defaultConfig { testApplicationId = "org.tasks.test" applicationId = "org.tasks" - versionCode = 706 - versionName = "8.6" + versionCode = 707 + versionName = "8.6.1" targetSdkVersion(Versions.targetSdk) minSdkVersion(Versions.minSdk) multiDexEnabled = true diff --git a/app/src/androidTest/java/org/tasks/data/CaldavDaoTests.java b/app/src/androidTest/java/org/tasks/data/CaldavDaoTests.java index 7a2c1aeac..88a0782b5 100644 --- a/app/src/androidTest/java/org/tasks/data/CaldavDaoTests.java +++ b/app/src/androidTest/java/org/tasks/data/CaldavDaoTests.java @@ -1,6 +1,7 @@ package org.tasks.data; import static com.natpryce.makeiteasy.MakeItEasy.with; +import static com.todoroo.andlib.utility.DateUtilities.now; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -14,6 +15,7 @@ import static org.tasks.makers.TaskMaker.newTask; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.helper.UUIDHelper; import javax.inject.Inject; import org.junit.Test; import org.junit.runner.RunWith; @@ -63,6 +65,15 @@ public class CaldavDaoTests extends InjectingTestCase { assertTrue(caldavDao.getTasksWithTags().isEmpty()); } + @Test + public void noResultsForEmptyAccounts() { + CaldavAccount caldavAccount = new CaldavAccount(); + caldavAccount.setUuid(UUIDHelper.newUUID()); + caldavDao.insert(caldavAccount); + + assertTrue(caldavDao.getCaldavFilters(caldavAccount.getUuid(), now()).isEmpty()); + } + @Override protected void inject(TestComponent component) { component.inject(this); diff --git a/app/src/androidTest/java/org/tasks/data/GoogleTaskListDaoTest.kt b/app/src/androidTest/java/org/tasks/data/GoogleTaskListDaoTest.kt new file mode 100644 index 000000000..9da581752 --- /dev/null +++ b/app/src/androidTest/java/org/tasks/data/GoogleTaskListDaoTest.kt @@ -0,0 +1,27 @@ +package org.tasks.data + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.todoroo.andlib.utility.DateUtilities.now +import org.junit.Assert.assertTrue +import org.junit.Test +import org.junit.runner.RunWith +import org.tasks.injection.InjectingTestCase +import org.tasks.injection.TestComponent +import javax.inject.Inject + +@RunWith(AndroidJUnit4::class) +class GoogleTaskListDaoTest : InjectingTestCase() { + + @Inject lateinit var googleTaskListDao: GoogleTaskListDao + + @Test + fun noResultsForEmptyAccount() { + val account = GoogleTaskAccount() + account.account = "user@gmail.com" + googleTaskListDao.insert(account) + + assertTrue(googleTaskListDao.getGoogleTaskFilters(account.account, now()).isEmpty()) + } + + override fun inject(component: TestComponent) = component.inject(this) +} \ No newline at end of file diff --git a/app/src/androidTest/java/org/tasks/injection/TestComponent.java b/app/src/androidTest/java/org/tasks/injection/TestComponent.java index 72469a11f..fee717941 100644 --- a/app/src/androidTest/java/org/tasks/injection/TestComponent.java +++ b/app/src/androidTest/java/org/tasks/injection/TestComponent.java @@ -17,6 +17,7 @@ import dagger.Component; import org.tasks.data.CaldavDaoTests; import org.tasks.data.DeletionDaoTests; import org.tasks.data.GoogleTaskDaoTests; +import org.tasks.data.GoogleTaskListDaoTest; import org.tasks.data.LocationDaoTest; import org.tasks.data.TagDataDaoTest; import org.tasks.jobs.BackupServiceTests; @@ -62,4 +63,6 @@ public interface TestComponent extends ApplicationComponent { void inject(TaskMoverTest taskMoverTest); void inject(LocationDaoTest locationDaoTest); + + void inject(GoogleTaskListDaoTest googleTaskListDaoTest); } diff --git a/app/src/main/java/org/tasks/data/CaldavDao.java b/app/src/main/java/org/tasks/data/CaldavDao.java index 5ca88b674..db4d47f65 100644 --- a/app/src/main/java/org/tasks/data/CaldavDao.java +++ b/app/src/main/java/org/tasks/data/CaldavDao.java @@ -147,14 +147,12 @@ public abstract class CaldavDao { @Query( "SELECT caldav_lists.*, COUNT(tasks._id) AS count" - + " FROM caldav_accounts" - + " LEFT JOIN caldav_lists ON caldav_lists.cdl_account = caldav_accounts.cda_uuid" + + " FROM caldav_lists" + " LEFT JOIN caldav_tasks ON caldav_tasks.cd_calendar = caldav_lists.cdl_uuid" + " LEFT JOIN tasks ON caldav_tasks.cd_task = tasks._id AND tasks.deleted = 0 AND tasks.completed = 0 AND tasks.hideUntil < :now AND cd_deleted = 0" - + " WHERE caldav_accounts.cda_id = :accountId" - + " GROUP BY caldav_lists.cdl_uuid" - + " ORDER BY caldav_accounts.cda_name COLLATE NOCASE") - public abstract List getCaldavFilters(long accountId, long now); + + " WHERE caldav_lists.cdl_account = :uuid" + + " GROUP BY caldav_lists.cdl_uuid") + public abstract List getCaldavFilters(String uuid, long now); @Query( "SELECT tasks._id FROM tasks " diff --git a/app/src/main/java/org/tasks/data/GoogleTaskListDao.java b/app/src/main/java/org/tasks/data/GoogleTaskListDao.java index c13987a82..bdce2d16e 100644 --- a/app/src/main/java/org/tasks/data/GoogleTaskListDao.java +++ b/app/src/main/java/org/tasks/data/GoogleTaskListDao.java @@ -64,12 +64,10 @@ public abstract class GoogleTaskListDao { @Query( "SELECT google_task_lists.*, COUNT(tasks._id) AS count" - + " FROM google_task_accounts " - + " LEFT JOIN google_task_lists ON google_task_lists.gtl_account = google_task_accounts.gta_account" + + " FROM google_task_lists " + " LEFT JOIN google_tasks ON google_tasks.gt_list_id = google_task_lists.gtl_remote_id" + " LEFT JOIN tasks ON google_tasks.gt_task = tasks._id AND tasks.deleted = 0 AND tasks.completed = 0 AND tasks.hideUntil < :now AND gt_deleted = 0" - + " WHERE google_task_accounts.gta_id = :accountId" - + " GROUP BY google_task_lists.gtl_remote_id" - + " ORDER BY google_task_lists.gtl_account COLLATE NOCASE") - public abstract List getGoogleTaskFilters(long accountId, long now); + + " WHERE google_task_lists.gtl_account = :account" + + " GROUP BY google_task_lists.gtl_remote_id") + public abstract List getGoogleTaskFilters(String account, long now); } diff --git a/app/src/main/java/org/tasks/filters/FilterProvider.java b/app/src/main/java/org/tasks/filters/FilterProvider.java index 5ee448101..6b984ccdf 100644 --- a/app/src/main/java/org/tasks/filters/FilterProvider.java +++ b/app/src/main/java/org/tasks/filters/FilterProvider.java @@ -254,7 +254,7 @@ public class FilterProvider { ? Collections.emptyList() : newArrayList( transform( - googleTaskListDao.getGoogleTaskFilters(account.getId(), now()), + googleTaskListDao.getGoogleTaskFilters(account.getAccount(), now()), GoogleTaskFilters::toGtasksFilter))); } for (Map.Entry> entry : filters.entrySet()) { @@ -273,7 +273,7 @@ public class FilterProvider { ? Collections.emptyList() : newArrayList( transform( - caldavDao.getCaldavFilters(account.getId(), now()), + caldavDao.getCaldavFilters(account.getUuid(), now()), CaldavFilters::toCaldavFilter))); } for (Map.Entry> entry : filters.entrySet()) { diff --git a/fastlane/metadata/android/en-US/changelogs/707.txt b/fastlane/metadata/android/en-US/changelogs/707.txt new file mode 100644 index 000000000..ef1e96039 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/707.txt @@ -0,0 +1,4 @@ +* Expand and collapse navigation drawer groups +* Update translations + +Full release notes: https://tasks.org/changelog