Rename fetch to fetchBlocking, add suspend fetch

pull/1043/head
Alex Baker 6 years ago
parent 2ec60748d3
commit de3e23d9d7

@ -141,7 +141,7 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
adapter.moved(1, 1, 1) adapter.moved(1, 1, 1)
assertEquals(tasks[0].id, taskDao.fetch(tasks[1].id)!!.parent) assertEquals(tasks[0].id, taskDao.fetchBlocking(tasks[1].id)!!.parent)
} }
@Test @Test
@ -165,7 +165,7 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
adapter.moved(1, 1, 0) adapter.moved(1, 1, 0)
assertTrue(caldavDao.getTask(tasks[1].id)!!.remoteParent.isNullOrBlank()) assertTrue(caldavDao.getTask(tasks[1].id)!!.remoteParent.isNullOrBlank())
assertEquals(0, taskDao.fetch(tasks[1].id)!!.parent) assertEquals(0, taskDao.fetchBlocking(tasks[1].id)!!.parent)
} }
@Test @Test
@ -176,7 +176,7 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
adapter.moved(2, 2, 1) adapter.moved(2, 2, 1)
assertEquals(tasks[0].id, taskDao.fetch(tasks[2].id)!!.parent) assertEquals(tasks[0].id, taskDao.fetchBlocking(tasks[2].id)!!.parent)
} }
@Test @Test
@ -188,7 +188,7 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
adapter.moved(3, 3, 1) adapter.moved(3, 3, 1)
assertEquals(tasks[0].id, taskDao.fetch(tasks[3].id)!!.parent) assertEquals(tasks[0].id, taskDao.fetchBlocking(tasks[3].id)!!.parent)
} }
private fun addTask(vararg properties: PropertyValue<in TaskContainer?, *>) { private fun addTask(vararg properties: PropertyValue<in TaskContainer?, *>) {

@ -39,7 +39,7 @@ class TaskDaoTests : InjectingTestCase() {
assertEquals(1, taskDao.getAll().size) assertEquals(1, taskDao.getAll().size)
val happyId = task.id val happyId = task.id
assertNotSame(Task.NO_ID, happyId) assertNotSame(Task.NO_ID, happyId)
task = taskDao.fetch(happyId)!! task = taskDao.fetchBlocking(happyId)!!
assertEquals("happy", task.title) assertEquals("happy", task.title)
// create task "sad" // create task "sad"
@ -56,9 +56,9 @@ class TaskDaoTests : InjectingTestCase() {
assertEquals(2, taskDao.getAll().size) assertEquals(2, taskDao.getAll().size)
// check state // check state
task = taskDao.fetch(happyId)!! task = taskDao.fetchBlocking(happyId)!!
assertEquals("happy", task.title) assertEquals("happy", task.title)
task = taskDao.fetch(sadId)!! task = taskDao.fetchBlocking(sadId)!!
assertEquals("melancholy", task.title) assertEquals("melancholy", task.title)
} }
@ -135,7 +135,7 @@ class TaskDaoTests : InjectingTestCase() {
@Test @Test
fun testInvalidIndex() { fun testInvalidIndex() {
assertEquals(0, taskDao.getAll().size) assertEquals(0, taskDao.getAll().size)
assertNull(taskDao.fetch(1)) assertNull(taskDao.fetchBlocking(1))
taskDeleter.delete(listOf(1L)) taskDeleter.delete(listOf(1L))
// make sure db still works // make sure db still works

@ -30,7 +30,7 @@ class TaskTest : InjectingTestCase() {
fun testReadTaskFromDb() { fun testReadTaskFromDb() {
val task = Task() val task = Task()
taskDao.createNew(task) taskDao.createNew(task)
val fromDb = taskDao.fetch(task.id) val fromDb = taskDao.fetchBlocking(task.id)
assertEquals(task, fromDb) assertEquals(task, fromDb)
} }
} }

@ -122,7 +122,7 @@ class TaskMoverTest : InjectingTestCase() {
assertEquals(3, deleted.size.toLong()) assertEquals(3, deleted.size.toLong())
val task = caldavDao.getTask(3) val task = caldavDao.getTask(3)
assertEquals("2", task!!.calendar) assertEquals("2", task!!.calendar)
assertEquals(2, taskDao.fetch(3)!!.parent) assertEquals(2, taskDao.fetchBlocking(3)!!.parent)
} }
@Test @Test
@ -133,7 +133,7 @@ class TaskMoverTest : InjectingTestCase() {
moveToCaldavList("1", 1) moveToCaldavList("1", 1)
val task = caldavDao.getTask(2) val task = caldavDao.getTask(2)
assertEquals("1", task!!.calendar) assertEquals("1", task!!.calendar)
assertEquals(1, taskDao.fetch(2)!!.parent) assertEquals(1, taskDao.fetchBlocking(2)!!.parent)
} }
@Test @Test
@ -143,7 +143,7 @@ class TaskMoverTest : InjectingTestCase() {
createSubtask(3, 2) createSubtask(3, 2)
moveToGoogleTasks("1", 1) moveToGoogleTasks("1", 1)
assertEquals(1, googleTaskDao.getByTaskId(3)!!.parent) assertEquals(1, googleTaskDao.getByTaskId(3)!!.parent)
assertEquals(0, taskDao.fetch(3)!!.parent) assertEquals(0, taskDao.fetchBlocking(3)!!.parent)
} }
@Test @Test
@ -151,7 +151,7 @@ class TaskMoverTest : InjectingTestCase() {
createTasks(1) createTasks(1)
createSubtask(2, 1) createSubtask(2, 1)
moveToGoogleTasks("1", 2) moveToGoogleTasks("1", 2)
assertEquals(0, taskDao.fetch(2)!!.parent) assertEquals(0, taskDao.fetchBlocking(2)!!.parent)
} }
@Test @Test
@ -159,7 +159,7 @@ class TaskMoverTest : InjectingTestCase() {
createTasks(1) createTasks(1)
createSubtask(2, 1) createSubtask(2, 1)
moveToCaldavList("1", 2) moveToCaldavList("1", 2)
assertEquals(0, taskDao.fetch(2)!!.parent) assertEquals(0, taskDao.fetchBlocking(2)!!.parent)
} }
@Test @Test
@ -210,7 +210,7 @@ class TaskMoverTest : InjectingTestCase() {
with(REMOTE_PARENT, "a")))) with(REMOTE_PARENT, "a"))))
moveToCaldavList("2", 2) moveToCaldavList("2", 2)
assertEquals("2", caldavDao.getTask(2)!!.calendar) assertEquals("2", caldavDao.getTask(2)!!.calendar)
assertEquals(0, taskDao.fetch(2)!!.parent) assertEquals(0, taskDao.fetchBlocking(2)!!.parent)
} }
@Test @Test
@ -236,7 +236,7 @@ class TaskMoverTest : InjectingTestCase() {
createSubtask(3, 2) createSubtask(3, 2)
moveToCaldavList("1", 1) moveToCaldavList("1", 1)
assertEquals("1", caldavDao.getTask(3)!!.calendar) assertEquals("1", caldavDao.getTask(3)!!.calendar)
assertEquals(2, taskDao.fetch(3)!!.parent) assertEquals(2, taskDao.fetchBlocking(3)!!.parent)
} }
@Test @Test

@ -112,7 +112,7 @@ class CaldavDaoShiftTests : InjectingTestCase() {
fun ignoreDeletedTasksWhenShiftingDown() { fun ignoreDeletedTasksWhenShiftingDown() {
val created = DateTime(2020, 5, 17, 9, 53, 17) val created = DateTime(2020, 5, 17, 9, 53, 17)
addTask(with(CREATED, created)) addTask(with(CREATED, created))
taskDao.update(taskDao.fetch(tasks[0].id).apply { this?.deletionDate = now() }!!) taskDao.update(taskDao.fetchBlocking(tasks[0].id).apply { this?.deletionDate = now() }!!)
caldavDao.shiftDown("calendar", 0, created.toAppleEpoch()) caldavDao.shiftDown("calendar", 0, created.toAppleEpoch())
@ -129,8 +129,8 @@ class CaldavDaoShiftTests : InjectingTestCase() {
caldavDao.shiftDown("calendar", 0, created.toAppleEpoch()) caldavDao.shiftDown("calendar", 0, created.toAppleEpoch())
} }
assertEquals(created.plusMinutes(1).millis, taskDao.fetch(tasks[0].id)!!.modificationDate) assertEquals(created.plusMinutes(1).millis, taskDao.fetchBlocking(tasks[0].id)!!.modificationDate)
assertEquals(created.plusMinutes(1).millis, taskDao.fetch(tasks[1].id)!!.modificationDate) assertEquals(created.plusMinutes(1).millis, taskDao.fetchBlocking(tasks[1].id)!!.modificationDate)
} }
private fun checkOrder(dateTime: DateTime?, task: TaskContainer) { private fun checkOrder(dateTime: DateTime?, task: TaskContainer) {

@ -40,7 +40,7 @@ class DeletionDaoTests : InjectingTestCase() {
var task = newTask(with(CREATION_TIME, DateTime().minusMinutes(1))) var task = newTask(with(CREATION_TIME, DateTime().minusMinutes(1)))
taskDao.createNew(task) taskDao.createNew(task)
deletionDao.markDeleted(listOf(task.id)) deletionDao.markDeleted(listOf(task.id))
task = taskDao.fetch(task.id)!! task = taskDao.fetchBlocking(task.id)!!
assertTrue(task.modificationDate > task.creationDate) assertTrue(task.modificationDate > task.creationDate)
assertTrue(task.modificationDate < DateTimeUtils.currentTimeMillis()) assertTrue(task.modificationDate < DateTimeUtils.currentTimeMillis())
} }
@ -50,7 +50,7 @@ class DeletionDaoTests : InjectingTestCase() {
var task = newTask(with(CREATION_TIME, DateTime().minusMinutes(1))) var task = newTask(with(CREATION_TIME, DateTime().minusMinutes(1)))
taskDao.createNew(task) taskDao.createNew(task)
deletionDao.markDeleted(listOf(task.id)) deletionDao.markDeleted(listOf(task.id))
task = taskDao.fetch(task.id)!! task = taskDao.fetchBlocking(task.id)!!
assertTrue(task.deletionDate > task.creationDate) assertTrue(task.deletionDate > task.creationDate)
assertTrue(task.deletionDate < DateTimeUtils.currentTimeMillis()) assertTrue(task.deletionDate < DateTimeUtils.currentTimeMillis())
} }
@ -64,7 +64,7 @@ class DeletionDaoTests : InjectingTestCase() {
deletionDao.purgeDeleted() deletionDao.purgeDeleted()
assertNull(taskDao.fetch(task.id)) assertNull(taskDao.fetchBlocking(task.id))
} }
@Test @Test
@ -76,7 +76,7 @@ class DeletionDaoTests : InjectingTestCase() {
deletionDao.purgeDeleted() deletionDao.purgeDeleted()
assertNotNull(taskDao.fetch(task.id)) assertNotNull(taskDao.fetchBlocking(task.id))
} }
@Test @Test
@ -88,6 +88,6 @@ class DeletionDaoTests : InjectingTestCase() {
deletionDao.purgeDeleted() deletionDao.purgeDeleted()
assertNotNull(taskDao.fetch(task.id)) assertNotNull(taskDao.fetchBlocking(task.id))
} }
} }

@ -317,7 +317,7 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
openTask(task) openTask(task)
} else { } else {
disposables!!.add( disposables!!.add(
Single.fromCallable { taskDao.fetch(task.id) } Single.fromCallable { taskDao.fetchBlocking(task.id) }
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe { t: Task? -> this.openTask(t) }) .subscribe { t: Task? -> this.openTask(t) })

@ -33,7 +33,7 @@ public class TaskEditActivity extends InjectingAppCompatActivity {
finish(); finish();
} else { } else {
disposables.add( disposables.add(
Single.fromCallable(() -> taskDao.fetch(taskId)) Single.fromCallable(() -> taskDao.fetchBlocking(taskId))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe( .subscribe(

@ -46,8 +46,12 @@ abstract class TaskDao(private val database: Database) {
@Query("SELECT * FROM tasks WHERE completed = 0 AND deleted = 0 AND (hideUntil > :now OR dueDate > :now)") @Query("SELECT * FROM tasks WHERE completed = 0 AND deleted = 0 AND (hideUntil > :now OR dueDate > :now)")
abstract fun needsRefresh(now: Long): List<Task> abstract fun needsRefresh(now: Long): List<Task>
fun fetchBlocking(id: Long) = runBlocking {
fetch(id)
}
@Query("SELECT * FROM tasks WHERE _id = :id LIMIT 1") @Query("SELECT * FROM tasks WHERE _id = :id LIMIT 1")
abstract fun fetch(id: Long): Task? abstract suspend fun fetch(id: Long): Task?
fun fetch(ids: List<Long>): List<Task> = ids.chunkedMap(this::fetchInternal) fun fetch(ids: List<Long>): List<Task> = ids.chunkedMap(this::fetchInternal)
@ -226,7 +230,7 @@ SELECT EXISTS(SELECT 1 FROM tasks WHERE parent > 0 AND deleted = 0) AS hasSubtas
* success. * success.
*/ */
@JvmOverloads @JvmOverloads
fun save(task: Task, original: Task? = fetch(task.id)) { fun save(task: Task, original: Task? = fetchBlocking(task.id)) {
if (!task.insignificantChange(original)) { if (!task.insignificantChange(original)) {
task.modificationDate = DateUtilities.now() task.modificationDate = DateUtilities.now()
} }

@ -57,7 +57,7 @@ public class GCalHelper {
if (!isNullOrEmpty(task.getCalendarURI())) { if (!isNullOrEmpty(task.getCalendarURI())) {
uri = task.getCalendarURI(); uri = task.getCalendarURI();
} else { } else {
task = taskDao.fetch(task.getId()); task = taskDao.fetchBlocking(task.getId());
if (task == null) { if (task == null) {
return null; return null;
} }

@ -12,7 +12,7 @@ class TaskCompleter @Inject internal constructor(
private val googleTaskDao: GoogleTaskDao) { private val googleTaskDao: GoogleTaskDao) {
fun setComplete(taskId: Long) = fun setComplete(taskId: Long) =
taskDao.fetch(taskId)?.let { setComplete(it, true) } taskDao.fetchBlocking(taskId)?.let { setComplete(it, true) }
?: Timber.e("Could not find task $taskId") ?: Timber.e("Could not find task $taskId")
fun setComplete(item: Task, completed: Boolean) { fun setComplete(item: Task, completed: Boolean) {

@ -74,7 +74,7 @@ class Notifier @Inject constructor(
var ringFiveTimes = false var ringFiveTimes = false
var ringNonstop = false var ringNonstop = false
for (entry in entries.takeLast(NotificationManager.MAX_NOTIFICATIONS)) { for (entry in entries.takeLast(NotificationManager.MAX_NOTIFICATIONS)) {
val task = taskDao.fetch(entry.taskId) ?: continue val task = taskDao.fetchBlocking(entry.taskId) ?: continue
if (entry.type != ReminderService.TYPE_RANDOM) { if (entry.type != ReminderService.TYPE_RANDOM) {
ringFiveTimes = ringFiveTimes or task.isNotifyModeFive ringFiveTimes = ringFiveTimes or task.isNotifyModeFive
ringNonstop = ringNonstop or task.isNotifyModeNonstop ringNonstop = ringNonstop or task.isNotifyModeNonstop

@ -27,7 +27,7 @@ class UriHandler : AppCompatActivity() {
URI_OPEN_TASK -> { URI_OPEN_TASK -> {
val id = intent.data?.lastPathSegment?.toLongOrNull() ?: 0 val id = intent.data?.lastPathSegment?.toLongOrNull() ?: 0
if (id > 0) { if (id > 0) {
Single.fromCallable { Optional.ofNullable(taskDao.fetch(id))} Single.fromCallable { Optional.ofNullable(taskDao.fetchBlocking(id))}
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(this::finish) .doAfterTerminate(this::finish)

@ -174,7 +174,7 @@ class iCalendar @Inject constructor(
taskDao.createNew(task) taskDao.createNew(task)
caldavTask = CaldavTask(task.id, calendar.uuid, remote.uid, obj) caldavTask = CaldavTask(task.id, calendar.uuid, remote.uid, obj)
} else { } else {
task = taskDao.fetch(existing.task)!! task = taskDao.fetchBlocking(existing.task)!!
caldavTask = existing caldavTask = existing
} }
CaldavConverter.apply(task, remote) CaldavConverter.apply(task, remote)

@ -239,7 +239,7 @@ class DateTimePicker : BottomSheetDialogFragment() {
val dueDate = selected?.millis ?: 0 val dueDate = selected?.millis ?: 0
if (dueDate != arguments?.getLong(EXTRA_TIMESTAMP)) { if (dueDate != arguments?.getLong(EXTRA_TIMESTAMP)) {
if (taskId > 0) { if (taskId > 0) {
val task: Task = taskDao.fetch(taskId)!! val task: Task = taskDao.fetchBlocking(taskId)!!
if (newDateTime(dueDate).isAfterNow) { if (newDateTime(dueDate).isAfterNow) {
notificationManager.cancel(task.id) notificationManager.cancel(task.id)
} }

@ -414,7 +414,7 @@ public class GoogleTaskSynchronizer {
if (googleTask == null) { if (googleTask == null) {
googleTask = new GoogleTask(0, ""); googleTask = new GoogleTask(0, "");
} else if (googleTask.getTask() > 0) { } else if (googleTask.getTask() > 0) {
task = taskDao.fetch(googleTask.getTask()); task = taskDao.fetchBlocking(googleTask.getTask());
} }
com.google.api.client.util.DateTime updated = gtask.getUpdated(); com.google.api.client.util.DateTime updated = gtask.getUpdated();
if (updated != null) { if (updated != null) {

@ -45,7 +45,7 @@ class AfterSaveWork @WorkerInject constructor(
override fun run(): Result { override fun run(): Result {
val data = inputData val data = inputData
val taskId = data.getLong(EXTRA_ID, -1) val taskId = data.getLong(EXTRA_ID, -1)
val task = taskDao.fetch(taskId) val task = taskDao.fetchBlocking(taskId)
if (task == null) { if (task == null) {
Timber.e("Missing saved task") Timber.e("Missing saved task")
return Result.failure() return Result.failure()

@ -319,7 +319,7 @@ public class NotificationManager {
long id = notification.getTaskId(); long id = notification.getTaskId();
int type = notification.getType(); int type = notification.getType();
long when = notification.getTimestamp(); long when = notification.getTimestamp();
Task task = taskDao.fetch(id); Task task = taskDao.fetchBlocking(id);
if (task == null) { if (task == null) {
Timber.e("Could not find %s", id); Timber.e("Could not find %s", id);
return null; return null;

@ -50,7 +50,7 @@ public class RepeatConfirmationReceiver extends BroadcastReceiver {
if (taskId > 0) { if (taskId > 0) {
long oldDueDate = intent.getLongExtra(AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0); long oldDueDate = intent.getLongExtra(AstridApiConstants.EXTRAS_OLD_DUE_DATE, 0);
long newDueDate = intent.getLongExtra(AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0); long newDueDate = intent.getLongExtra(AstridApiConstants.EXTRAS_NEW_DUE_DATE, 0);
Task task = taskDao.fetch(taskId); Task task = taskDao.fetchBlocking(taskId);
try { try {
showSnackbar(taskListFragment, task, oldDueDate, newDueDate); showSnackbar(taskListFragment, task, oldDueDate, newDueDate);

@ -86,7 +86,7 @@ public class NotificationActivity extends InjectingAppCompatActivity
public void edit() { public void edit() {
notificationManager.cancel(taskId); notificationManager.cancel(taskId);
disposables.add( disposables.add(
Single.fromCallable(() -> taskDao.fetch(taskId)) Single.fromCallable(() -> taskDao.fetchBlocking(taskId))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe( .subscribe(

Loading…
Cancel
Save