diff --git a/app/src/androidTest/java/com/todoroo/astrid/alarms/AlarmJobServiceTest.kt b/app/src/androidTest/java/com/todoroo/astrid/alarms/AlarmJobServiceTest.kt index 7bd2dbfb5..d428b8405 100644 --- a/app/src/androidTest/java/com/todoroo/astrid/alarms/AlarmJobServiceTest.kt +++ b/app/src/androidTest/java/com/todoroo/astrid/alarms/AlarmJobServiceTest.kt @@ -40,7 +40,7 @@ class AlarmJobServiceTest : InjectingTestCase() { ) ) ) - alarmService.synchronizeAlarms(1, mutableSetOf(Alarm(0, 0, Alarm.TYPE_REL_END))) + alarmService.synchronizeAlarms(1, mutableSetOf(Alarm(type = Alarm.TYPE_REL_END))) testResults(emptyList(), DateTime(2024, 5, 18, 18, 0).millis) } @@ -57,7 +57,7 @@ class AlarmJobServiceTest : InjectingTestCase() { ) ) ) - alarmService.synchronizeAlarms(1, mutableSetOf(Alarm(0, 0, Alarm.TYPE_REL_END))) + alarmService.synchronizeAlarms(1, mutableSetOf(Alarm(type = Alarm.TYPE_REL_END))) testResults( listOf( @@ -87,9 +87,7 @@ class AlarmJobServiceTest : InjectingTestCase() { 1, mutableSetOf( Alarm( - 0, - 0, - Alarm.TYPE_REL_END, + type = Alarm.TYPE_REL_END, repeat = 1, interval = TimeUnit.HOURS.toMillis(6) ) @@ -123,8 +121,8 @@ class AlarmJobServiceTest : InjectingTestCase() { alarmService.synchronizeAlarms( 1, mutableSetOf( - Alarm(0, 0, Alarm.TYPE_REL_END), - Alarm(0, DateTimeUtils2.currentTimeMillis(), Alarm.TYPE_SNOOZE) + Alarm(type = Alarm.TYPE_REL_END), + Alarm(time = DateTimeUtils2.currentTimeMillis(), type = Alarm.TYPE_SNOOZE) ) ) @@ -160,11 +158,10 @@ class AlarmJobServiceTest : InjectingTestCase() { alarmService.synchronizeAlarms( 1, mutableSetOf( - Alarm(0, 0, Alarm.TYPE_REL_END), + Alarm(type = Alarm.TYPE_REL_END), Alarm( - 0, - DateTimeUtils2.currentTimeMillis() + TimeUnit.MINUTES.toMillis(5), - Alarm.TYPE_SNOOZE + time = DateTimeUtils2.currentTimeMillis() + TimeUnit.MINUTES.toMillis(5), + type = Alarm.TYPE_SNOOZE ) ) ) @@ -190,7 +187,7 @@ class AlarmJobServiceTest : InjectingTestCase() { ) alarmService.synchronizeAlarms( 1, - mutableSetOf(Alarm(0, 0, Alarm.TYPE_REL_END)) + mutableSetOf(Alarm(type = Alarm.TYPE_REL_END)) ) testResults( @@ -214,7 +211,7 @@ class AlarmJobServiceTest : InjectingTestCase() { ) alarmService.synchronizeAlarms( 1, - mutableSetOf(Alarm(0, 0, Alarm.TYPE_REL_END)) + mutableSetOf(Alarm(type = Alarm.TYPE_REL_END)) ) testResults( @@ -238,7 +235,7 @@ class AlarmJobServiceTest : InjectingTestCase() { ) alarmService.synchronizeAlarms( 1, - mutableSetOf(Alarm(0, 0, Alarm.TYPE_REL_END)) + mutableSetOf(Alarm(type = Alarm.TYPE_REL_END)) ) testResults( diff --git a/app/src/androidTest/java/org/tasks/data/LocationDaoTest.kt b/app/src/androidTest/java/org/tasks/data/LocationDaoTest.kt index 3d9d4f40e..dee948753 100644 --- a/app/src/androidTest/java/org/tasks/data/LocationDaoTest.kt +++ b/app/src/androidTest/java/org/tasks/data/LocationDaoTest.kt @@ -2,20 +2,23 @@ package org.tasks.data import com.natpryce.makeiteasy.MakeItEasy.with import com.todoroo.astrid.dao.TaskDao -import org.tasks.data.entity.Task import dagger.hilt.android.testing.HiltAndroidTest import dagger.hilt.android.testing.UninstallModules import kotlinx.coroutines.runBlocking -import org.junit.Assert.* +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNull +import org.junit.Assert.assertTrue import org.junit.Test import org.tasks.SuspendFreeze.Companion.freezeAt import org.tasks.caldav.GeoUtils.toLikeString -import org.tasks.data.entity.Alarm.Companion.TYPE_SNOOZE import org.tasks.data.dao.AlarmDao import org.tasks.data.dao.LocationDao import org.tasks.data.entity.Alarm +import org.tasks.data.entity.Alarm.Companion.TYPE_SNOOZE import org.tasks.data.entity.Geofence import org.tasks.data.entity.Place +import org.tasks.data.entity.Task import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.injection.InjectingTestCase import org.tasks.injection.ProductionModule @@ -122,7 +125,13 @@ class LocationDaoTest : InjectingTestCase() { val place = Place() locationDao.insert(place) val task = taskDao.createNew(newTask()) - alarmDao.insert(Alarm(task, newDateTime().plusMinutes(15).millis, TYPE_SNOOZE)) + alarmDao.insert( + Alarm( + task = task, + time = newDateTime().plusMinutes(15).millis, + type = TYPE_SNOOZE + ) + ) locationDao.insert(Geofence(task = task, place = place.uid, isArrival = true)) assertTrue(locationDao.getArrivalGeofences(place.uid!!, currentTimeMillis()).isEmpty()) @@ -135,7 +144,13 @@ class LocationDaoTest : InjectingTestCase() { val place = Place() locationDao.insert(place) val task = taskDao.createNew(newTask()) - alarmDao.insert(Alarm(task, newDateTime().plusMinutes(15).millis, TYPE_SNOOZE)) + alarmDao.insert( + Alarm( + task = task, + time = newDateTime().plusMinutes(15).millis, + type = TYPE_SNOOZE + ) + ) locationDao.insert(Geofence(task = task, place = place.uid, isDeparture = true)) assertTrue(locationDao.getDepartureGeofences(place.uid!!, currentTimeMillis()).isEmpty()) @@ -148,7 +163,13 @@ class LocationDaoTest : InjectingTestCase() { val place = Place() locationDao.insert(place) val task = taskDao.createNew(newTask()) - alarmDao.insert(Alarm(task, newDateTime().minusMinutes(15).millis, TYPE_SNOOZE)) + alarmDao.insert( + Alarm( + task = task, + time = newDateTime().minusMinutes(15).millis, + type = TYPE_SNOOZE + ) + ) val geofence = Geofence(task = task, place = place.uid, isArrival = true) .let { it.copy(id = locationDao.insert(it)) } @@ -164,7 +185,13 @@ class LocationDaoTest : InjectingTestCase() { val place = Place() locationDao.insert(place) val task = taskDao.createNew(newTask()) - alarmDao.insert(Alarm(task, newDateTime().minusMinutes(15).millis, TYPE_SNOOZE)) + alarmDao.insert( + Alarm( + task = task, + time = newDateTime().minusMinutes(15).millis, + type = TYPE_SNOOZE + ) + ) val geofence = Geofence(task = task, place = place.uid, isDeparture = true) .let { it.copy(id = locationDao.insert(it)) } diff --git a/app/src/androidTest/java/org/tasks/opentasks/OpenTasksPropertiesTests.kt b/app/src/androidTest/java/org/tasks/opentasks/OpenTasksPropertiesTests.kt index 7b9b61945..ce243b82b 100644 --- a/app/src/androidTest/java/org/tasks/opentasks/OpenTasksPropertiesTests.kt +++ b/app/src/androidTest/java/org/tasks/opentasks/OpenTasksPropertiesTests.kt @@ -1,11 +1,13 @@ package org.tasks.opentasks import com.natpryce.makeiteasy.MakeItEasy.with -import org.tasks.data.entity.Task import dagger.hilt.android.testing.HiltAndroidTest import dagger.hilt.android.testing.UninstallModules import kotlinx.coroutines.runBlocking -import org.junit.Assert.* +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNull +import org.junit.Assert.assertTrue import org.junit.Test import org.tasks.SuspendFreeze.Companion.freezeAt import org.tasks.TestUtilities.withTZ @@ -13,11 +15,12 @@ import org.tasks.caldav.iCalendar.Companion.collapsed import org.tasks.caldav.iCalendar.Companion.order import org.tasks.caldav.iCalendar.Companion.parent import org.tasks.caldav.iCalendar.Companion.snooze -import org.tasks.data.entity.Alarm -import org.tasks.data.entity.Alarm.Companion.TYPE_SNOOZE import org.tasks.data.dao.AlarmDao import org.tasks.data.dao.TagDao import org.tasks.data.dao.TagDataDao +import org.tasks.data.entity.Alarm +import org.tasks.data.entity.Alarm.Companion.TYPE_SNOOZE +import org.tasks.data.entity.Task import org.tasks.injection.ProductionModule import org.tasks.makers.CaldavTaskMaker import org.tasks.makers.CaldavTaskMaker.CALENDAR @@ -33,7 +36,7 @@ import org.tasks.makers.TaskMaker.COLLAPSED import org.tasks.makers.TaskMaker.ORDER import org.tasks.makers.TaskMaker.newTask import org.tasks.time.DateTime -import java.util.* +import java.util.TimeZone import javax.inject.Inject @UninstallModules(ProductionModule::class) @@ -213,7 +216,14 @@ class OpenTasksPropertiesTests : OpenTasksTest() { ?.let { taskDao.fetch(it.task) } assertEquals( - listOf(Alarm(task!!.id, 1612972355000, TYPE_SNOOZE).apply { id = 1 }), + listOf( + Alarm( + id = 1, + task = task!!.id, + time = 1612972355000, + type = TYPE_SNOOZE + ) + ), alarmDao.getAlarms(task.id) ) } @@ -222,7 +232,13 @@ class OpenTasksPropertiesTests : OpenTasksTest() { fun pushSnoozeTime() = withTZ(CHICAGO) { val (listId, list) = openTaskDao.insertList() val taskId = taskDao.createNew(newTask()) - alarmDao.insert(Alarm(taskId, DateTime(2021, 2, 4, 13, 30).millis, TYPE_SNOOZE)) + alarmDao.insert( + Alarm( + task = taskId, + time = DateTime(2021, 2, 4, 13, 30).millis, + type = TYPE_SNOOZE + ) + ) caldavDao.insert(newCaldavTask( with(CALENDAR, list.uuid), @@ -241,7 +257,13 @@ class OpenTasksPropertiesTests : OpenTasksTest() { fun dontPushLapsedSnoozeTime() = withTZ(CHICAGO) { val (listId, list) = openTaskDao.insertList() val taskId = taskDao.createNew(newTask()) - alarmDao.insert(Alarm(taskId, DateTime(2021, 2, 4, 13, 30).millis, TYPE_SNOOZE)) + alarmDao.insert( + Alarm( + task = taskId, + time = DateTime(2021, 2, 4, 13, 30).millis, + type = TYPE_SNOOZE + ) + ) caldavDao.insert(newCaldavTask( with(CALENDAR, list.uuid), @@ -264,10 +286,11 @@ class OpenTasksPropertiesTests : OpenTasksTest() { val task = caldavDao.getTaskByRemoteId(list.uuid!!, "4CBBC669-70E3-474D-A0A3-0FC42A14A5A5") ?: throw IllegalStateException("Missing task") - val snooze = alarmDao.getSnoozed(listOf(task.task)) - assertEquals(1, snooze.size) - alarmDao.delete(snooze.first()) - assertTrue(alarmDao.getSnoozed(listOf(task.task)).isEmpty()) + assertEquals( + listOf(Alarm(1, task.id, DateTime(2021, 2, 10, 9, 52, 35).millis, TYPE_SNOOZE)), + alarmDao.getAlarms(1) + ) + alarmDao.deleteSnoozed(listOf(1)) taskDao.touch(task.task) synchronizer.sync() diff --git a/app/src/androidTest/java/org/tasks/ui/editviewmodel/ReminderTests.kt b/app/src/androidTest/java/org/tasks/ui/editviewmodel/ReminderTests.kt index be70ab0a3..0320427df 100644 --- a/app/src/androidTest/java/org/tasks/ui/editviewmodel/ReminderTests.kt +++ b/app/src/androidTest/java/org/tasks/ui/editviewmodel/ReminderTests.kt @@ -1,6 +1,5 @@ package org.tasks.ui.editviewmodel -import org.tasks.data.entity.Task import dagger.hilt.android.testing.HiltAndroidTest import dagger.hilt.android.testing.UninstallModules import kotlinx.coroutines.runBlocking @@ -8,9 +7,10 @@ import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertTrue import org.junit.Test +import org.tasks.data.createDueDate import org.tasks.data.entity.Alarm import org.tasks.data.entity.Alarm.Companion.whenOverdue -import org.tasks.data.createDueDate +import org.tasks.data.entity.Task import org.tasks.injection.ProductionModule import org.tasks.makers.TaskMaker.newTask import org.tasks.time.DateTimeUtils2.currentTimeMillis @@ -34,7 +34,14 @@ class ReminderTests : BaseTaskEditViewModelTest() { save() assertEquals( - listOf(Alarm(1, 0, Alarm.TYPE_REL_START).apply { id = 1 }), + listOf( + Alarm( + id = 1, + task = 1, + time = 0, + type = Alarm.TYPE_REL_START + ) + ), alarmDao.getAlarms(task.id) ) } @@ -55,7 +62,14 @@ class ReminderTests : BaseTaskEditViewModelTest() { save() assertEquals( - listOf(Alarm(1, 0, Alarm.TYPE_REL_END).apply { id = 1 }), + listOf( + Alarm( + id = 1, + task = 1, + time = 0, + type = Alarm.TYPE_REL_END + ) + ), alarmDao.getAlarms(task.id) ) } diff --git a/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt b/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt index 9fb77bb01..f3434630b 100644 --- a/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt +++ b/app/src/main/java/com/todoroo/astrid/alarms/AlarmService.kt @@ -68,8 +68,8 @@ class AlarmService @Inject constructor( suspend fun snooze(time: Long, taskIds: List) { notificationManager.cancel(taskIds) - alarmDao.getSnoozed(taskIds).let { alarmDao.delete(it) } - taskIds.map { Alarm(it, time, TYPE_SNOOZE) }.let { alarmDao.insert(it) } + alarmDao.deleteSnoozed(taskIds) + alarmDao.insert(taskIds.map { Alarm(task = it, time = time, type = TYPE_SNOOZE) }) taskDao.touch(taskIds) workManager.triggerNotifications() } diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt index cb0fb0b31..4ae24518b 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt @@ -7,35 +7,35 @@ import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.PermaSql import com.todoroo.astrid.dao.TaskDao -import org.tasks.data.entity.Task -import org.tasks.data.entity.Task.Companion.DUE_DATE -import org.tasks.data.entity.Task.Companion.HIDE_UNTIL -import org.tasks.data.entity.Task.Companion.HIDE_UNTIL_NONE -import org.tasks.data.entity.Task.Companion.IMPORTANCE import com.todoroo.astrid.gcal.GCalHelper -import org.tasks.data.UUIDHelper import com.todoroo.astrid.utility.TitleParser.parse import org.tasks.R import org.tasks.Strings.isNullOrEmpty +import org.tasks.data.GoogleTask +import org.tasks.data.UUIDHelper +import org.tasks.data.createDueDate +import org.tasks.data.createGeofence +import org.tasks.data.createHideUntil +import org.tasks.data.dao.AlarmDao +import org.tasks.data.dao.CaldavDao +import org.tasks.data.dao.GoogleTaskDao +import org.tasks.data.dao.LocationDao +import org.tasks.data.dao.TagDao +import org.tasks.data.dao.TagDataDao import org.tasks.data.entity.Alarm import org.tasks.data.entity.Alarm.Companion.TYPE_RANDOM import org.tasks.data.entity.Alarm.Companion.whenDue import org.tasks.data.entity.Alarm.Companion.whenOverdue import org.tasks.data.entity.Alarm.Companion.whenStarted -import org.tasks.data.dao.AlarmDao -import org.tasks.data.dao.CaldavDao import org.tasks.data.entity.CaldavTask -import org.tasks.data.GoogleTask -import org.tasks.data.dao.GoogleTaskDao -import org.tasks.data.dao.LocationDao import org.tasks.data.entity.Place import org.tasks.data.entity.Tag -import org.tasks.data.dao.TagDao import org.tasks.data.entity.TagData -import org.tasks.data.dao.TagDataDao -import org.tasks.data.createDueDate -import org.tasks.data.createGeofence -import org.tasks.data.createHideUntil +import org.tasks.data.entity.Task +import org.tasks.data.entity.Task.Companion.DUE_DATE +import org.tasks.data.entity.Task.Companion.HIDE_UNTIL +import org.tasks.data.entity.Task.Companion.HIDE_UNTIL_NONE +import org.tasks.data.entity.Task.Companion.IMPORTANCE import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.Preferences import org.tasks.time.DateTimeUtils.startOfDay @@ -235,7 +235,7 @@ class TaskCreator @Inject constructor( } } if (randomReminder > 0) { - add(Alarm(id, randomReminder, TYPE_RANDOM)) + add(Alarm(task = id, time = randomReminder, type = TYPE_RANDOM)) } } } diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt b/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt index 40f5db41a..dce511131 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskDuplicator.kt @@ -1,23 +1,23 @@ package com.todoroo.astrid.service import com.todoroo.astrid.dao.TaskDao -import org.tasks.data.entity.Task -import org.tasks.data.entity.Task.Companion.NO_ID import com.todoroo.astrid.gcal.GCalHelper import org.tasks.LocalBroadcastManager -import org.tasks.data.entity.Alarm import org.tasks.data.dao.AlarmDao -import org.tasks.data.entity.Attachment import org.tasks.data.dao.CaldavDao -import org.tasks.data.entity.CaldavTask -import org.tasks.data.entity.Geofence import org.tasks.data.dao.GoogleTaskDao import org.tasks.data.dao.LocationDao -import org.tasks.data.entity.Tag import org.tasks.data.dao.TagDao import org.tasks.data.dao.TagDataDao import org.tasks.data.dao.TaskAttachmentDao import org.tasks.data.db.DbUtils.dbchunk +import org.tasks.data.entity.Alarm +import org.tasks.data.entity.Attachment +import org.tasks.data.entity.CaldavTask +import org.tasks.data.entity.Geofence +import org.tasks.data.entity.Tag +import org.tasks.data.entity.Task +import org.tasks.data.entity.Task.Companion.NO_ID import org.tasks.preferences.Preferences import org.tasks.time.DateTimeUtils2.currentTimeMillis import javax.inject.Inject @@ -96,7 +96,7 @@ class TaskDuplicator @Inject constructor( } val alarms = alarmDao.getAlarms(task.id) if (alarms.isNotEmpty()) { - alarmDao.insert(alarms.map { Alarm(clone.id, it.time, it.type) }) + alarmDao.insert(alarms.map { Alarm(task = clone.id, time = it.time, type = it.type) }) } gcalHelper.createTaskEventIfEnabled(clone) taskDao.save(clone, null) // TODO: delete me diff --git a/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.kt b/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.kt index 605d1f482..903760ab3 100644 --- a/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.kt +++ b/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.kt @@ -31,7 +31,7 @@ import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.MyTimePickerDialog import org.tasks.scheduling.NotificationSchedulerIntentService import org.tasks.ui.TaskEditControlFragment -import java.util.* +import java.util.Locale import javax.inject.Inject @AndroidEntryPoint @@ -98,7 +98,7 @@ class ReminderControlSet : TaskEditControlFragment() { data.getLongExtra(MyTimePickerDialog.EXTRA_TIMESTAMP, 0L) val replace: Alarm? = data.getParcelableExtra(EXTRA_REPLACE) replace?.let { viewModel.removeAlarm(it) } - viewModel.addAlarm(Alarm(0, timestamp, TYPE_DATE_TIME)) + viewModel.addAlarm(Alarm(time = timestamp, type = TYPE_DATE_TIME)) } AlarmRow( locale = locale, diff --git a/app/src/main/java/org/tasks/caldav/extensions/VAlarm.kt b/app/src/main/java/org/tasks/caldav/extensions/VAlarm.kt index eed9949ca..5392605ad 100644 --- a/app/src/main/java/org/tasks/caldav/extensions/VAlarm.kt +++ b/app/src/main/java/org/tasks/caldav/extensions/VAlarm.kt @@ -67,7 +67,12 @@ internal fun VAlarm.toAlarm(): Alarm? { else -> return null } - return Alarm(0L, time, type, repeat?.count ?: 0, duration?.toMillis() ?: 0) + return Alarm( + time = time, + type = type, + repeat = repeat?.count ?: 0, + interval = duration?.toMillis() ?: 0 + ) } private fun net.fortuna.ical4j.model.property.Duration.toMillis() = duration.toMillis() diff --git a/app/src/main/java/org/tasks/caldav/iCalendar.kt b/app/src/main/java/org/tasks/caldav/iCalendar.kt index 22b955b5d..b68080a9b 100644 --- a/app/src/main/java/org/tasks/caldav/iCalendar.kt +++ b/app/src/main/java/org/tasks/caldav/iCalendar.kt @@ -28,27 +28,27 @@ import org.tasks.caldav.GeoUtils.toGeo import org.tasks.caldav.GeoUtils.toLikeString import org.tasks.caldav.extensions.toAlarms import org.tasks.caldav.extensions.toVAlarms +import org.tasks.data.createDueDate +import org.tasks.data.createGeofence +import org.tasks.data.createHideUntil +import org.tasks.data.dao.AlarmDao +import org.tasks.data.dao.CaldavDao +import org.tasks.data.dao.LocationDao +import org.tasks.data.dao.TagDao +import org.tasks.data.dao.TagDataDao import org.tasks.data.entity.Alarm import org.tasks.data.entity.Alarm.Companion.TYPE_RANDOM import org.tasks.data.entity.Alarm.Companion.TYPE_SNOOZE -import org.tasks.data.dao.AlarmDao import org.tasks.data.entity.CaldavAccount import org.tasks.data.entity.CaldavCalendar import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_READ_ONLY -import org.tasks.data.dao.CaldavDao import org.tasks.data.entity.CaldavTask -import org.tasks.data.dao.LocationDao import org.tasks.data.entity.Place -import org.tasks.data.dao.TagDao import org.tasks.data.entity.TagData -import org.tasks.data.dao.TagDataDao import org.tasks.data.entity.Task.Companion.HIDE_UNTIL_SPECIFIC_DAY import org.tasks.data.entity.Task.Companion.HIDE_UNTIL_SPECIFIC_DAY_TIME import org.tasks.data.entity.Task.Companion.URGENCY_SPECIFIC_DAY import org.tasks.data.entity.Task.Companion.URGENCY_SPECIFIC_DAY_TIME -import org.tasks.data.createDueDate -import org.tasks.data.createGeofence -import org.tasks.data.createHideUntil import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.date.DateTimeUtils.toDateTime import org.tasks.date.DateTimeUtils.toLocal @@ -504,7 +504,7 @@ class iCalendar @Inject constructor( val Task.reminders: List get() = alarms.filtered.toAlarms().let { alarms -> - snooze?.let { time -> alarms.plus(Alarm(0, time, TYPE_SNOOZE))} ?: alarms + snooze?.let { time -> alarms.plus(Alarm(time = time, type = TYPE_SNOOZE))} ?: alarms } internal fun getDateTime(timestamp: Long): DateTime { diff --git a/app/src/main/java/org/tasks/compose/AddReminderDialog.kt b/app/src/main/java/org/tasks/compose/AddReminderDialog.kt index bc0fcd0aa..ed576d478 100644 --- a/app/src/main/java/org/tasks/compose/AddReminderDialog.kt +++ b/app/src/main/java/org/tasks/compose/AddReminderDialog.kt @@ -3,14 +3,31 @@ package org.tasks.compose import android.content.res.Configuration import androidx.annotation.StringRes import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.* +import androidx.compose.material.AlertDialog +import androidx.compose.material.Divider +import androidx.compose.material.Icon +import androidx.compose.material.IconButton +import androidx.compose.material.MaterialTheme +import androidx.compose.material.OutlinedTextField +import androidx.compose.material.RadioButton +import androidx.compose.material.Text +import androidx.compose.material.TextFieldDefaults import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Autorenew -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment.Companion.CenterVertically import androidx.compose.ui.ExperimentalComposeUiApi @@ -58,7 +75,7 @@ object AddReminderDialog { confirmButton = { Constants.TextButton(text = R.string.ok, onClick = { time.value.takeIf { it > 0 }?.let { i -> - addAlarm(Alarm(0, i * units.millis, TYPE_RANDOM)) + addAlarm(Alarm(time = i * units.millis, type = TYPE_RANDOM)) closeDialog() } }) @@ -110,7 +127,6 @@ object AddReminderDialog { time.value.takeIf { it >= 0 }?.let { i -> addAlarm( Alarm( - task = 0, time = -1 * i * units.millis, type = TYPE_REL_END, repeat = repeat.value, diff --git a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt index a7fca155d..1df430e9c 100644 --- a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt +++ b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt @@ -168,7 +168,7 @@ class TaskEditViewModel @Inject constructor( add(Alarm.whenOverdue(0)) } if (task.randomReminder > 0) { - add(Alarm(0, task.randomReminder, Alarm.TYPE_RANDOM)) + add(Alarm(time = task.randomReminder, type = Alarm.TYPE_RANDOM)) } } } else { diff --git a/app/src/test/java/com/todoroo/astrid/alarms/AlarmCalculatorTest.kt b/app/src/test/java/com/todoroo/astrid/alarms/AlarmCalculatorTest.kt index 100418aea..d54af96b5 100644 --- a/app/src/test/java/com/todoroo/astrid/alarms/AlarmCalculatorTest.kt +++ b/app/src/test/java/com/todoroo/astrid/alarms/AlarmCalculatorTest.kt @@ -2,15 +2,13 @@ package com.todoroo.astrid.alarms import com.natpryce.makeiteasy.MakeItEasy.with import com.todoroo.andlib.utility.DateUtilities.ONE_WEEK -import org.tasks.data.entity.Task.Companion.HIDE_UNTIL_DUE -import org.tasks.data.entity.Task.Companion.HIDE_UNTIL_DUE_TIME -import org.tasks.data.entity.Task.Companion.URGENCY_SPECIFIC_DAY_TIME import kotlinx.coroutines.runBlocking import org.junit.Assert.assertEquals import org.junit.Assert.assertNull import org.junit.Before import org.junit.Test import org.tasks.Freeze.Companion.freezeAt +import org.tasks.data.createDueDate import org.tasks.data.entity.Alarm import org.tasks.data.entity.Alarm.Companion.TYPE_DATE_TIME import org.tasks.data.entity.Alarm.Companion.TYPE_RANDOM @@ -20,7 +18,9 @@ import org.tasks.data.entity.Alarm.Companion.TYPE_SNOOZE import org.tasks.data.entity.Alarm.Companion.whenDue import org.tasks.data.entity.Alarm.Companion.whenOverdue import org.tasks.data.entity.Alarm.Companion.whenStarted -import org.tasks.data.createDueDate +import org.tasks.data.entity.Task.Companion.HIDE_UNTIL_DUE +import org.tasks.data.entity.Task.Companion.HIDE_UNTIL_DUE_TIME +import org.tasks.data.entity.Task.Companion.URGENCY_SPECIFIC_DAY_TIME import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.date.DateTimeUtils.toDateTime import org.tasks.makers.AlarmEntryMaker.TIME @@ -58,7 +58,7 @@ class AlarmCalculatorTest { assertNull( alarmCalculator.toAlarmEntry( newTask(with(REMINDER_LAST, now)), - Alarm(0L, now.millis, TYPE_DATE_TIME) + Alarm(time = now.millis, type = TYPE_DATE_TIME) ) ) } @@ -67,7 +67,7 @@ class AlarmCalculatorTest { fun dateTimeReminder() { val alarm = alarmCalculator.toAlarmEntry( newTask(with(REMINDER_LAST, now)), - Alarm(0L, now.millis + 1, TYPE_DATE_TIME) + Alarm(time = now.millis + 1, type = TYPE_DATE_TIME) ) assertEquals(newAlarmEntry(with(TIME, now.plusMillis(1)), with(TYPE, TYPE_DATE_TIME)), alarm) @@ -77,7 +77,7 @@ class AlarmCalculatorTest { fun dontIgnoreOldSnooze() { val alarm = alarmCalculator.toAlarmEntry( newTask(with(REMINDER_LAST, now)), - Alarm(0L, now.millis, TYPE_SNOOZE) + Alarm(time = now.millis, type = TYPE_SNOOZE) ) assertEquals( @@ -148,7 +148,7 @@ class AlarmCalculatorTest { freezeAt(DateTime(2023, 11, 3, 17, 13)) { val alarm = alarmCalculator.toAlarmEntry( newTask(with(DUE_DATE, newDateTime())), - Alarm(0L, DAYS.toMillis(1), TYPE_REL_END) + Alarm(time = DAYS.toMillis(1), type = TYPE_REL_END) ) assertEquals( @@ -165,7 +165,7 @@ class AlarmCalculatorTest { fun scheduleRelativeAfterDueTime() = runBlocking { val alarm = alarmCalculator.toAlarmEntry( newTask(with(DUE_TIME, now)), - Alarm(0, DAYS.toMillis(1), TYPE_REL_END) + Alarm(time = DAYS.toMillis(1), type = TYPE_REL_END) ) assertEquals( @@ -182,7 +182,7 @@ class AlarmCalculatorTest { freezeAt(DateTime(2023, 11, 3, 17, 13)) { val alarm = alarmCalculator.toAlarmEntry( newTask(with(DUE_DATE, newDateTime()), with(HIDE_TYPE, HIDE_UNTIL_DUE)), - Alarm(0, DAYS.toMillis(1), TYPE_REL_START) + Alarm(time = DAYS.toMillis(1), type = TYPE_REL_START) ) assertEquals( @@ -199,7 +199,7 @@ class AlarmCalculatorTest { fun scheduleRelativeAfterStartTime() = runBlocking { val alarm = alarmCalculator.toAlarmEntry( newTask(with(DUE_TIME, now), with(HIDE_TYPE, HIDE_UNTIL_DUE_TIME)), - Alarm(0, DAYS.toMillis(1), TYPE_REL_START) + Alarm(time = DAYS.toMillis(1), type = TYPE_REL_START) ) assertEquals( @@ -215,7 +215,7 @@ class AlarmCalculatorTest { fun scheduleFirstRepeatReminder() = runBlocking { val alarm = alarmCalculator.toAlarmEntry( newTask(with(DUE_TIME, now), with(REMINDER_LAST, now.plusMinutes(4))), - Alarm(0, 0, TYPE_REL_END, 1, MINUTES.toMillis(5)) + Alarm(type = TYPE_REL_END, repeat = 1, interval = MINUTES.toMillis(5)) ) assertEquals( @@ -231,7 +231,7 @@ class AlarmCalculatorTest { fun scheduleSecondRepeatReminder() = runBlocking { val alarm = alarmCalculator.toAlarmEntry( newTask(with(DUE_TIME, now), with(REMINDER_LAST, now.plusMinutes(6))), - Alarm(0, 0, TYPE_REL_END, 2, MINUTES.toMillis(5)) + Alarm(type = TYPE_REL_END, repeat = 2, interval = MINUTES.toMillis(5)) ) assertEquals( @@ -247,7 +247,7 @@ class AlarmCalculatorTest { fun terminateRepeatReminder() = runBlocking { val alarm = alarmCalculator.toAlarmEntry( newTask(with(DUE_TIME, now), with(REMINDER_LAST, now.plusMinutes(10))), - Alarm(0L, 0, TYPE_REL_END, 2, MINUTES.toMillis(5)) + Alarm(type = TYPE_REL_END, repeat = 2, interval = MINUTES.toMillis(5)) ) assertNull(alarm) @@ -306,7 +306,7 @@ class AlarmCalculatorTest { with(REMINDER_LAST, now.minusDays(14)), with(CREATION_TIME, now.minusDays(30)), ), - Alarm(0L, ONE_WEEK, TYPE_RANDOM) + Alarm(time = ONE_WEEK, type = TYPE_RANDOM) ) assertEquals( @@ -328,7 +328,7 @@ class AlarmCalculatorTest { ) val alarm = alarmCalculator.toAlarmEntry( task, - Alarm(0L, ONE_WEEK, TYPE_RANDOM) + Alarm(time = ONE_WEEK, type = TYPE_RANDOM) ) assertEquals( @@ -348,7 +348,7 @@ class AlarmCalculatorTest { with(REMINDER_LAST, null as DateTime?), with(CREATION_TIME, now.minusDays(1)), ), - Alarm(0L, ONE_WEEK, TYPE_RANDOM) + Alarm(time = ONE_WEEK, type = TYPE_RANDOM) ) assertEquals( @@ -371,7 +371,7 @@ class AlarmCalculatorTest { with(REMINDER_LAST, now.minusDays(1)), with(CREATION_TIME, now.minusDays(30)), ), - Alarm(0L, ONE_WEEK, TYPE_RANDOM) + Alarm(time = ONE_WEEK, type = TYPE_RANDOM) ) assertEquals( diff --git a/app/src/test/java/org/tasks/caldav/AppleRemindersTests.kt b/app/src/test/java/org/tasks/caldav/AppleRemindersTests.kt index 391f5d10b..e7848d7f8 100644 --- a/app/src/test/java/org/tasks/caldav/AppleRemindersTests.kt +++ b/app/src/test/java/org/tasks/caldav/AppleRemindersTests.kt @@ -1,6 +1,5 @@ package org.tasks.caldav -import org.tasks.data.entity.Task import org.junit.After import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue @@ -10,8 +9,9 @@ import org.tasks.TestUtilities.alarms import org.tasks.TestUtilities.vtodo import org.tasks.data.entity.Alarm import org.tasks.data.entity.Alarm.Companion.TYPE_DATE_TIME +import org.tasks.data.entity.Task import org.tasks.time.DateTime -import java.util.* +import java.util.TimeZone class AppleRemindersTests { private val defaultTimeZone = TimeZone.getDefault() @@ -85,7 +85,7 @@ class AppleRemindersTests { @Test fun dateTimeReminder() { assertEquals( - listOf(Alarm(0, 1642568400000, TYPE_DATE_TIME)), + listOf(Alarm(time = 1642568400000, type = TYPE_DATE_TIME)), "apple/date_time_reminder.txt".alarms ) } diff --git a/app/src/test/java/org/tasks/caldav/ThunderbirdTests.kt b/app/src/test/java/org/tasks/caldav/ThunderbirdTests.kt index cc387fa48..4a24566ff 100644 --- a/app/src/test/java/org/tasks/caldav/ThunderbirdTests.kt +++ b/app/src/test/java/org/tasks/caldav/ThunderbirdTests.kt @@ -1,6 +1,5 @@ package org.tasks.caldav -import org.tasks.data.entity.Task import org.junit.After import org.junit.Assert.assertEquals import org.junit.Before @@ -14,8 +13,9 @@ import org.tasks.data.entity.Alarm import org.tasks.data.entity.Alarm.Companion.TYPE_DATE_TIME import org.tasks.data.entity.Alarm.Companion.TYPE_REL_END import org.tasks.data.entity.Alarm.Companion.TYPE_REL_START +import org.tasks.data.entity.Task import org.tasks.time.DateTime -import java.util.* +import java.util.TimeZone import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit.MINUTES @@ -113,7 +113,7 @@ class ThunderbirdTests { @Test fun dateTimeReminder() { assertEquals( - listOf(Alarm(task = 0, time = 1642791600000, type = TYPE_DATE_TIME)), + listOf(Alarm(time = 1642791600000, type = TYPE_DATE_TIME)), "thunderbird/date_time_reminder.txt".alarms ) } @@ -121,7 +121,7 @@ class ThunderbirdTests { @Test fun reminderBeforeStart() { assertEquals( - listOf(Alarm(task = 0, time = -TimeUnit.HOURS.toMillis(1), type = TYPE_REL_START)), + listOf(Alarm(time = -TimeUnit.HOURS.toMillis(1), type = TYPE_REL_START)), "thunderbird/reminder_before_start.txt".alarms ) } @@ -129,7 +129,7 @@ class ThunderbirdTests { @Test fun reminderAfterStart() { assertEquals( - listOf(Alarm(task = 0, time = MINUTES.toMillis(15), type = TYPE_REL_START)), + listOf(Alarm(time = MINUTES.toMillis(15), type = TYPE_REL_START)), "thunderbird/reminder_after_start.txt".alarms ) } @@ -137,7 +137,7 @@ class ThunderbirdTests { @Test fun reminderBeforeEnd() { assertEquals( - listOf(Alarm(task = 0, time = -MINUTES.toMillis(15), type = TYPE_REL_END)), + listOf(Alarm(time = -MINUTES.toMillis(15), type = TYPE_REL_END)), "thunderbird/reminder_before_end.txt".alarms ) } @@ -145,7 +145,7 @@ class ThunderbirdTests { @Test fun reminderAfterEnd() { assertEquals( - listOf(Alarm(task = 0, time = MINUTES.toMillis(15), type = TYPE_REL_END)), + listOf(Alarm(time = MINUTES.toMillis(15), type = TYPE_REL_END)), "thunderbird/reminder_after_end.txt".alarms ) } @@ -153,7 +153,7 @@ class ThunderbirdTests { @Test fun reminderAtStart() { assertEquals( - listOf(Alarm(task = 0, time = 0, type = TYPE_REL_START)), + listOf(Alarm(type = TYPE_REL_START)), "thunderbird/reminder_at_start.txt".alarms ) } @@ -161,7 +161,7 @@ class ThunderbirdTests { @Test fun reminder50Days() { assertEquals( - listOf(Alarm(task = 0, time = -TimeUnit.DAYS.toMillis(50), type = TYPE_REL_START)), + listOf(Alarm(time = -TimeUnit.DAYS.toMillis(50), type = TYPE_REL_START)), "thunderbird/reminder_50_days.txt".alarms ) } diff --git a/app/src/test/java/org/tasks/caldav/extensions/VAlarmTests.kt b/app/src/test/java/org/tasks/caldav/extensions/VAlarmTests.kt index 4d39e03ac..097db47d7 100644 --- a/app/src/test/java/org/tasks/caldav/extensions/VAlarmTests.kt +++ b/app/src/test/java/org/tasks/caldav/extensions/VAlarmTests.kt @@ -17,11 +17,8 @@ class VAlarmTests { assertEquals( "BEGIN:VALARM\r\nTRIGGER;VALUE=DATE-TIME:20220121T190000Z\r\nACTION:DISPLAY\r\nDESCRIPTION:Default Tasks.org description\r\nEND:VALARM\r\n", Alarm( - 0, - DateTime(2022, 1, 21, 19, 0, 0, 0, UTC).millis, - TYPE_DATE_TIME, - 0, - 0 + time = DateTime(2022, 1, 21, 19, 0, 0, 0, UTC).millis, + type = TYPE_DATE_TIME, ).toVAlarm().toString() ) } @@ -29,11 +26,8 @@ class VAlarmTests { @Test fun dateTimeFromAlarm() { val alarm = Alarm( - 0, - DateTime(2022, 1, 21, 19, 0, 0, 0, UTC).millis, - TYPE_DATE_TIME, - 0, - 0 + time = DateTime(2022, 1, 21, 19, 0, 0, 0, UTC).millis, + type = TYPE_DATE_TIME, ) assertEquals(alarm, alarm.toVAlarm()?.toAlarm()) } @@ -42,13 +36,13 @@ class VAlarmTests { fun beforeStartToVAlarm() { assertEquals( "BEGIN:VALARM\r\nTRIGGER;RELATED=START:-PT1H15M\r\nACTION:DISPLAY\r\nDESCRIPTION:Default Tasks.org description\r\nEND:VALARM\r\n", - Alarm(0, -MINUTES.toMillis(75), TYPE_REL_START, 0, 0).toVAlarm().toString() + Alarm(time = -MINUTES.toMillis(75), type = TYPE_REL_START).toVAlarm().toString() ) } @Test fun beforeStartFromAlarm() { - val alarm = Alarm(0, -MINUTES.toMillis(75), TYPE_REL_START, 0, 0) + val alarm = Alarm(time = -MINUTES.toMillis(75), type = TYPE_REL_START) assertEquals(alarm, alarm.toVAlarm()?.toAlarm()) } @@ -56,13 +50,13 @@ class VAlarmTests { fun afterStartToVAlarm() { assertEquals( "BEGIN:VALARM\r\nTRIGGER;RELATED=START:PT1H15M\r\nACTION:DISPLAY\r\nDESCRIPTION:Default Tasks.org description\r\nEND:VALARM\r\n", - Alarm(0, MINUTES.toMillis(75), TYPE_REL_START, 0, 0).toVAlarm().toString() + Alarm(time = MINUTES.toMillis(75), type = TYPE_REL_START).toVAlarm().toString() ) } @Test fun afterStartFromAlarm() { - val alarm = Alarm(0, MINUTES.toMillis(75), TYPE_REL_START, 0, 0) + val alarm = Alarm(time = MINUTES.toMillis(75), type = TYPE_REL_START) assertEquals(alarm, alarm.toVAlarm()?.toAlarm()) } @@ -70,13 +64,13 @@ class VAlarmTests { fun beforeEndToVAlarm() { assertEquals( "BEGIN:VALARM\r\nTRIGGER;RELATED=END:-PT1H15M\r\nACTION:DISPLAY\r\nDESCRIPTION:Default Tasks.org description\r\nEND:VALARM\r\n", - Alarm(0, -MINUTES.toMillis(75), TYPE_REL_END, 0, 0).toVAlarm().toString() + Alarm(time = -MINUTES.toMillis(75), type = TYPE_REL_END).toVAlarm().toString() ) } @Test fun beforeEndFromAlarm() { - val alarm = Alarm(0, -MINUTES.toMillis(75), TYPE_REL_END, 0, 0) + val alarm = Alarm(time = -MINUTES.toMillis(75), type = TYPE_REL_END) assertEquals(alarm, alarm.toVAlarm()?.toAlarm()) } @@ -84,13 +78,13 @@ class VAlarmTests { fun afterEndToVAlarm() { assertEquals( "BEGIN:VALARM\r\nTRIGGER;RELATED=END:PT1H15M\r\nACTION:DISPLAY\r\nDESCRIPTION:Default Tasks.org description\r\nEND:VALARM\r\n", - Alarm(0, MINUTES.toMillis(75), TYPE_REL_END, 0, 0).toVAlarm().toString() + Alarm(time = MINUTES.toMillis(75), type = TYPE_REL_END).toVAlarm().toString() ) } @Test fun afterEndFromAlarm() { - val alarm = Alarm(0, MINUTES.toMillis(75), TYPE_REL_END, 0, 0) + val alarm = Alarm(time = MINUTES.toMillis(75), type = TYPE_REL_END) assertEquals(alarm, alarm.toVAlarm()?.toAlarm()) } @@ -98,13 +92,23 @@ class VAlarmTests { fun repeatingAlarm() { assertEquals( "BEGIN:VALARM\r\nTRIGGER;RELATED=START:P1DT8H\r\nACTION:DISPLAY\r\nDESCRIPTION:Default Tasks.org description\r\nREPEAT:15\r\nDURATION:PT15M\r\nEND:VALARM\r\n", - Alarm(0, HOURS.toMillis(32), TYPE_REL_START, 15, MINUTES.toMillis(15)).toVAlarm().toString() + Alarm( + time = HOURS.toMillis(32), + type = TYPE_REL_START, + repeat = 15, + interval = MINUTES.toMillis(15) + ).toVAlarm().toString() ) } @Test fun repeatingFromAlarm() { - val alarm = Alarm(0, HOURS.toMillis(32), TYPE_REL_START, 15, MINUTES.toMillis(15)) + val alarm = Alarm( + time = HOURS.toMillis(32), + type = TYPE_REL_START, + repeat = 15, + interval = MINUTES.toMillis(15) + ) assertEquals(alarm, alarm.toVAlarm()?.toAlarm()) } } \ No newline at end of file diff --git a/data/src/main/kotlin/org/tasks/data/dao/AlarmDao.kt b/data/src/main/kotlin/org/tasks/data/dao/AlarmDao.kt index b6df1966b..80e733fe8 100644 --- a/data/src/main/kotlin/org/tasks/data/dao/AlarmDao.kt +++ b/data/src/main/kotlin/org/tasks/data/dao/AlarmDao.kt @@ -29,13 +29,10 @@ WHERE tasks._id = :taskId """) suspend fun getActiveAlarms(taskId: Long): List - @Query("SELECT * FROM alarms WHERE type = $TYPE_SNOOZE AND task IN (:taskIds)") - suspend fun getSnoozed(taskIds: List): List - @Query("SELECT * FROM alarms WHERE task = :taskId") suspend fun getAlarms(taskId: Long): List - @Query("DELETE FROM alarms WHERE type = $TYPE_SNOOZE AND task IN(:taskIds)") + @Query("DELETE FROM alarms WHERE type = $TYPE_SNOOZE AND task IN (:taskIds)") suspend fun deleteSnoozed(taskIds: List) @Delete diff --git a/data/src/main/kotlin/org/tasks/data/entity/Alarm.kt b/data/src/main/kotlin/org/tasks/data/entity/Alarm.kt index ea23980d9..d04499c0f 100644 --- a/data/src/main/kotlin/org/tasks/data/entity/Alarm.kt +++ b/data/src/main/kotlin/org/tasks/data/entity/Alarm.kt @@ -4,7 +4,6 @@ import android.os.Parcelable import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.ForeignKey -import androidx.room.Ignore import androidx.room.PrimaryKey import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable @@ -43,17 +42,6 @@ data class Alarm( @ColumnInfo(name = "interval", defaultValue = "0") var interval: Long = 0, ) : Parcelable { - @Ignore - constructor(task: Long, time: Long, type: Int, repeat: Int = 0, interval: Long = 0): this( - id = 0, - task = task, - time = time, - type = type, - repeat = repeat, - interval = interval - ) - - fun same(other: Alarm) = type == other.type && time == other.time && @@ -80,11 +68,17 @@ data class Alarm( const val TYPE_GEO_ENTER = 5 const val TYPE_GEO_EXIT = 6 - fun whenStarted(task: Long) = Alarm(task, 0, TYPE_REL_START) + fun whenStarted(task: Long) = Alarm(task = task, type = TYPE_REL_START) - fun whenDue(task: Long) = Alarm(task, 0, TYPE_REL_END) + fun whenDue(task: Long) = Alarm(task = task, type = TYPE_REL_END) fun whenOverdue(task: Long) = - Alarm(task, TimeUnit.DAYS.toMillis(1), TYPE_REL_END, 6, TimeUnit.DAYS.toMillis(1)) + Alarm( + task = task, + time = TimeUnit.DAYS.toMillis(1), + type = TYPE_REL_END, + repeat = 6, + interval = TimeUnit.DAYS.toMillis(1) + ) } } \ No newline at end of file