Replace now with currentTimeMillis

pull/2884/head
Alex Baker 2 years ago
parent 6e14d07d0c
commit c3fc9a57cc

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.dao package com.todoroo.astrid.dao
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import com.todoroo.astrid.service.TaskDeleter import com.todoroo.astrid.service.TaskDeleter
import dagger.hilt.android.testing.HiltAndroidTest import dagger.hilt.android.testing.HiltAndroidTest
@ -15,6 +14,7 @@ import org.junit.Assert.*
import org.junit.Test import org.junit.Test
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.ProductionModule import org.tasks.injection.ProductionModule
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
@UninstallModules(ProductionModule::class) @UninstallModules(ProductionModule::class)
@ -75,23 +75,23 @@ class TaskDaoTests : InjectingTestCase() {
// create hidden task // create hidden task
task = Task() task = Task()
task.title = "hidden" task.title = "hidden"
task.hideUntil = DateUtilities.now() + 10000 task.hideUntil = currentTimeMillis() + 10000
taskDao.createNew(task) taskDao.createNew(task)
// create task with deadlines // create task with deadlines
task = Task() task = Task()
task.title = "deadlineInFuture" task.title = "deadlineInFuture"
task.dueDate = DateUtilities.now() + 10000 task.dueDate = currentTimeMillis() + 10000
taskDao.createNew(task) taskDao.createNew(task)
task = Task() task = Task()
task.title = "deadlineInPast" task.title = "deadlineInPast"
task.dueDate = DateUtilities.now() - 10000 task.dueDate = currentTimeMillis() - 10000
taskDao.createNew(task) taskDao.createNew(task)
// create completed task // create completed task
task = Task() task = Task()
task.title = "completed" task.title = "completed"
task.completionDate = DateUtilities.now() - 10000 task.completionDate = currentTimeMillis() - 10000
taskDao.createNew(task) taskDao.createNew(task)
// check is active // check is active

@ -1,6 +1,5 @@
package com.todoroo.astrid.repeats package com.todoroo.astrid.repeats
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import com.todoroo.astrid.service.TaskCompleter import com.todoroo.astrid.service.TaskCompleter
import dagger.hilt.android.testing.HiltAndroidTest import dagger.hilt.android.testing.HiltAndroidTest
@ -12,6 +11,7 @@ import org.junit.Test
import org.tasks.data.TaskDao import org.tasks.data.TaskDao
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.ProductionModule import org.tasks.injection.ProductionModule
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
@UninstallModules(ProductionModule::class) @UninstallModules(ProductionModule::class)
@ -35,7 +35,7 @@ class RepeatWithSubtasksTests : InjectingTestCase() {
val child = taskDao.createNew( val child = taskDao.createNew(
Task( Task(
parent = parent, parent = parent,
completionDate = now(), completionDate = currentTimeMillis(),
) )
) )
@ -56,7 +56,7 @@ class RepeatWithSubtasksTests : InjectingTestCase() {
val child = taskDao.createNew( val child = taskDao.createNew(
Task( Task(
parent = parent, parent = parent,
completionDate = now(), completionDate = currentTimeMillis(),
) )
) )

@ -2,7 +2,6 @@ package org.tasks.data
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.natpryce.makeiteasy.PropertyValue import com.natpryce.makeiteasy.PropertyValue
import com.todoroo.andlib.utility.DateUtilities.now
import dagger.hilt.android.testing.HiltAndroidTest import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules import dagger.hilt.android.testing.UninstallModules
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
@ -15,6 +14,7 @@ import org.tasks.injection.ProductionModule
import org.tasks.makers.TaskContainerMaker import org.tasks.makers.TaskContainerMaker
import org.tasks.makers.TaskContainerMaker.CREATED import org.tasks.makers.TaskContainerMaker.CREATED
import org.tasks.time.DateTime import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
@UninstallModules(ProductionModule::class) @UninstallModules(ProductionModule::class)
@ -101,7 +101,9 @@ class CaldavDaoShiftTests : InjectingTestCase() {
fun ignoreMovedTasksWhenShiftingDown() = runBlocking { fun ignoreMovedTasksWhenShiftingDown() = runBlocking {
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))
caldavDao.update(caldavDao.getTask(tasks[0].id).apply { this?.deleted = now() }!!) caldavDao.update(caldavDao.getTask(tasks[0].id).apply { this?.deleted =
currentTimeMillis()
}!!)
caldavDao.shiftDown("calendar", 0, created.toAppleEpoch()) caldavDao.shiftDown("calendar", 0, created.toAppleEpoch())
@ -112,7 +114,7 @@ class CaldavDaoShiftTests : InjectingTestCase() {
fun ignoreDeletedTasksWhenShiftingDown() = runBlocking { fun ignoreDeletedTasksWhenShiftingDown() = runBlocking {
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.fetch(tasks[0].id).apply { this?.deletionDate = currentTimeMillis() }!!)
caldavDao.shiftDown("calendar", 0, created.toAppleEpoch()) caldavDao.shiftDown("calendar", 0, created.toAppleEpoch())

@ -1,7 +1,6 @@
package org.tasks.data package org.tasks.data
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import dagger.hilt.android.testing.HiltAndroidTest import dagger.hilt.android.testing.HiltAndroidTest
@ -21,6 +20,7 @@ import org.tasks.makers.TaskMaker.DUE_TIME
import org.tasks.makers.TaskMaker.HIDE_TYPE import org.tasks.makers.TaskMaker.HIDE_TYPE
import org.tasks.makers.TaskMaker.ID import org.tasks.makers.TaskMaker.ID
import org.tasks.makers.TaskMaker.newTask import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
@UninstallModules(ProductionModule::class) @UninstallModules(ProductionModule::class)
@ -113,33 +113,33 @@ class LocationDaoTest : InjectingTestCase() {
@Test @Test
fun ignoreArrivalForSnoozedTask() = runBlocking { fun ignoreArrivalForSnoozedTask() = runBlocking {
freezeAt(now()).thawAfter { freezeAt(currentTimeMillis()).thawAfter {
val place = Place() val place = Place()
locationDao.insert(place) locationDao.insert(place)
val task = taskDao.createNew(newTask()) val task = taskDao.createNew(newTask())
alarmDao.insert(Alarm(task, newDateTime().plusMinutes(15).millis, TYPE_SNOOZE)) alarmDao.insert(Alarm(task, newDateTime().plusMinutes(15).millis, TYPE_SNOOZE))
locationDao.insert(Geofence(task = task, place = place.uid, isArrival = true)) locationDao.insert(Geofence(task = task, place = place.uid, isArrival = true))
assertTrue(locationDao.getArrivalGeofences(place.uid!!, now()).isEmpty()) assertTrue(locationDao.getArrivalGeofences(place.uid!!, currentTimeMillis()).isEmpty())
} }
} }
@Test @Test
fun ignoreDepartureForSnoozedTask() = runBlocking { fun ignoreDepartureForSnoozedTask() = runBlocking {
freezeAt(now()).thawAfter { freezeAt(currentTimeMillis()).thawAfter {
val place = Place() val place = Place()
locationDao.insert(place) locationDao.insert(place)
val task = taskDao.createNew(newTask()) val task = taskDao.createNew(newTask())
alarmDao.insert(Alarm(task, newDateTime().plusMinutes(15).millis, TYPE_SNOOZE)) alarmDao.insert(Alarm(task, newDateTime().plusMinutes(15).millis, TYPE_SNOOZE))
locationDao.insert(Geofence(task = task, place = place.uid, isDeparture = true)) locationDao.insert(Geofence(task = task, place = place.uid, isDeparture = true))
assertTrue(locationDao.getDepartureGeofences(place.uid!!, now()).isEmpty()) assertTrue(locationDao.getDepartureGeofences(place.uid!!, currentTimeMillis()).isEmpty())
} }
} }
@Test @Test
fun getArrivalWithElapsedSnooze() = runBlocking { fun getArrivalWithElapsedSnooze() = runBlocking {
freezeAt(now()).thawAfter { freezeAt(currentTimeMillis()).thawAfter {
val place = Place() val place = Place()
locationDao.insert(place) locationDao.insert(place)
val task = taskDao.createNew(newTask()) val task = taskDao.createNew(newTask())
@ -147,13 +147,15 @@ class LocationDaoTest : InjectingTestCase() {
val geofence = Geofence(task = task, place = place.uid, isArrival = true) val geofence = Geofence(task = task, place = place.uid, isArrival = true)
.let { it.copy(id = locationDao.insert(it)) } .let { it.copy(id = locationDao.insert(it)) }
assertEquals(listOf(geofence), locationDao.getArrivalGeofences(place.uid!!, now())) assertEquals(listOf(geofence), locationDao.getArrivalGeofences(place.uid!!,
currentTimeMillis()
))
} }
} }
@Test @Test
fun getDepartureWithElapsedSnooze() = runBlocking { fun getDepartureWithElapsedSnooze() = runBlocking {
freezeAt(now()).thawAfter { freezeAt(currentTimeMillis()).thawAfter {
val place = Place() val place = Place()
locationDao.insert(place) locationDao.insert(place)
val task = taskDao.createNew(newTask()) val task = taskDao.createNew(newTask())
@ -161,13 +163,15 @@ class LocationDaoTest : InjectingTestCase() {
val geofence = Geofence(task = task, place = place.uid, isDeparture = true) val geofence = Geofence(task = task, place = place.uid, isDeparture = true)
.let { it.copy(id = locationDao.insert(it)) } .let { it.copy(id = locationDao.insert(it)) }
assertEquals(listOf(geofence), locationDao.getDepartureGeofences(place.uid!!, now())) assertEquals(listOf(geofence), locationDao.getDepartureGeofences(place.uid!!,
currentTimeMillis()
))
} }
} }
@Test @Test
fun ignoreArrivalForHiddenTask() = runBlocking { fun ignoreArrivalForHiddenTask() = runBlocking {
freezeAt(now()).thawAfter { freezeAt(currentTimeMillis()).thawAfter {
val place = Place() val place = Place()
locationDao.insert(place) locationDao.insert(place)
taskDao.createNew(newTask( taskDao.createNew(newTask(
@ -176,13 +180,13 @@ class LocationDaoTest : InjectingTestCase() {
with(HIDE_TYPE, Task.HIDE_UNTIL_DUE_TIME))) with(HIDE_TYPE, Task.HIDE_UNTIL_DUE_TIME)))
locationDao.insert(Geofence(task = 1, place = place.uid, isArrival = true)) locationDao.insert(Geofence(task = 1, place = place.uid, isArrival = true))
assertTrue(locationDao.getArrivalGeofences(place.uid!!, now()).isEmpty()) assertTrue(locationDao.getArrivalGeofences(place.uid!!, currentTimeMillis()).isEmpty())
} }
} }
@Test @Test
fun ignoreDepartureForHiddenTask() = runBlocking { fun ignoreDepartureForHiddenTask() = runBlocking {
freezeAt(now()).thawAfter { freezeAt(currentTimeMillis()).thawAfter {
val place = Place() val place = Place()
locationDao.insert(place) locationDao.insert(place)
taskDao.createNew(newTask( taskDao.createNew(newTask(
@ -191,13 +195,13 @@ class LocationDaoTest : InjectingTestCase() {
with(HIDE_TYPE, Task.HIDE_UNTIL_DUE_TIME))) with(HIDE_TYPE, Task.HIDE_UNTIL_DUE_TIME)))
locationDao.insert(Geofence(task = 1, place = place.uid, isDeparture = true)) locationDao.insert(Geofence(task = 1, place = place.uid, isDeparture = true))
assertTrue(locationDao.getDepartureGeofences(place.uid!!, now()).isEmpty()) assertTrue(locationDao.getDepartureGeofences(place.uid!!, currentTimeMillis()).isEmpty())
} }
} }
@Test @Test
fun getArrivalWithElapsedHideUntil() = runBlocking { fun getArrivalWithElapsedHideUntil() = runBlocking {
freezeAt(now()).thawAfter { freezeAt(currentTimeMillis()).thawAfter {
val place = Place() val place = Place()
locationDao.insert(place) locationDao.insert(place)
taskDao.createNew(newTask( taskDao.createNew(newTask(
@ -209,13 +213,15 @@ class LocationDaoTest : InjectingTestCase() {
it.copy(id = locationDao.insert(it)) it.copy(id = locationDao.insert(it))
} }
assertEquals(listOf(geofence), locationDao.getArrivalGeofences(place.uid!!, now())) assertEquals(listOf(geofence), locationDao.getArrivalGeofences(place.uid!!,
currentTimeMillis()
))
} }
} }
@Test @Test
fun getDepartureWithElapsedHideUntil() = runBlocking { fun getDepartureWithElapsedHideUntil() = runBlocking {
freezeAt(now()).thawAfter { freezeAt(currentTimeMillis()).thawAfter {
val place = Place() val place = Place()
locationDao.insert(place) locationDao.insert(place)
taskDao.createNew(newTask( taskDao.createNew(newTask(
@ -225,7 +231,9 @@ class LocationDaoTest : InjectingTestCase() {
val geofence = Geofence(task = 1, place = place.uid, isDeparture = true) val geofence = Geofence(task = 1, place = place.uid, isDeparture = true)
.let { it.copy(id = locationDao.insert(it)) } .let { it.copy(id = locationDao.insert(it)) }
assertEquals(listOf(geofence), locationDao.getDepartureGeofences(place.uid!!, now())) assertEquals(listOf(geofence), locationDao.getDepartureGeofences(place.uid!!,
currentTimeMillis()
))
} }
} }
} }

@ -6,7 +6,6 @@
package org.tasks.data package org.tasks.data
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import com.todoroo.astrid.service.TaskDeleter import com.todoroo.astrid.service.TaskDeleter
import dagger.hilt.android.testing.HiltAndroidTest import dagger.hilt.android.testing.HiltAndroidTest
@ -19,6 +18,7 @@ import org.tasks.injection.InjectingTestCase
import org.tasks.injection.ProductionModule import org.tasks.injection.ProductionModule
import org.tasks.makers.TaskMaker.PARENT import org.tasks.makers.TaskMaker.PARENT
import org.tasks.makers.TaskMaker.newTask import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
@UninstallModules(ProductionModule::class) @UninstallModules(ProductionModule::class)
@ -44,23 +44,23 @@ class TaskDaoTests : InjectingTestCase() {
// create hidden task // create hidden task
task = Task() task = Task()
task.title = "hidden" task.title = "hidden"
task.hideUntil = DateUtilities.now() + 10000 task.hideUntil = currentTimeMillis() + 10000
taskDao.createNew(task) taskDao.createNew(task)
// create task with deadlines // create task with deadlines
task = Task() task = Task()
task.title = "deadlineInFuture" task.title = "deadlineInFuture"
task.dueDate = DateUtilities.now() + 10000 task.dueDate = currentTimeMillis() + 10000
taskDao.createNew(task) taskDao.createNew(task)
task = Task() task = Task()
task.title = "deadlineInPast" task.title = "deadlineInPast"
task.dueDate = DateUtilities.now() - 10000 task.dueDate = currentTimeMillis() - 10000
taskDao.createNew(task) taskDao.createNew(task)
// create completed task // create completed task
task = Task() task = Task()
task.title = "completed" task.title = "completed"
task.completionDate = DateUtilities.now() - 10000 task.completionDate = currentTimeMillis() - 10000
taskDao.createNew(task) taskDao.createNew(task)
// check is active // check is active

@ -1,6 +1,5 @@
package org.tasks.ui.editviewmodel package org.tasks.ui.editviewmodel
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.core.BuiltInFilterExposer import com.todoroo.astrid.core.BuiltInFilterExposer
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import com.todoroo.astrid.service.TaskDeleter import com.todoroo.astrid.service.TaskDeleter
@ -19,6 +18,7 @@ import org.tasks.data.TaskDao
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.ProductionModule import org.tasks.injection.ProductionModule
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import org.tasks.ui.TaskListViewModel import org.tasks.ui.TaskListViewModel
import javax.inject.Inject import javax.inject.Inject
@ -53,7 +53,7 @@ class TaskListViewModelTest : InjectingTestCase() {
@Test @Test
fun clearCompletedTask() = runBlocking { fun clearCompletedTask() = runBlocking {
val task = taskDao.createNew( val task = taskDao.createNew(
Task(completionDate = now()) Task(completionDate = currentTimeMillis())
) )
clearCompleted() clearCompleted()
@ -71,7 +71,7 @@ class TaskListViewModelTest : InjectingTestCase() {
val child = taskDao.createNew( val child = taskDao.createNew(
Task( Task(
parent = parent, parent = parent,
completionDate = now(), completionDate = currentTimeMillis(),
) )
) )
@ -91,7 +91,7 @@ class TaskListViewModelTest : InjectingTestCase() {
val child = taskDao.createNew( val child = taskDao.createNew(
Task( Task(
parent = parent, parent = parent,
completionDate = now(), completionDate = currentTimeMillis(),
) )
) )
@ -109,7 +109,7 @@ class TaskListViewModelTest : InjectingTestCase() {
val child = taskDao.createNew( val child = taskDao.createNew(
Task( Task(
parent = parent, parent = parent,
completionDate = now(), completionDate = currentTimeMillis(),
) )
) )
@ -123,7 +123,7 @@ class TaskListViewModelTest : InjectingTestCase() {
val grandparent = taskDao.createNew( val grandparent = taskDao.createNew(
Task( Task(
recurrence = "RRULE:FREQ=DAILY;INTERVAL=1", recurrence = "RRULE:FREQ=DAILY;INTERVAL=1",
completionDate = now(), completionDate = currentTimeMillis(),
) )
) )
val parent = taskDao.createNew( val parent = taskDao.createNew(
@ -132,7 +132,7 @@ class TaskListViewModelTest : InjectingTestCase() {
val child = taskDao.createNew( val child = taskDao.createNew(
Task( Task(
parent = parent, parent = parent,
completionDate = now(), completionDate = currentTimeMillis(),
) )
) )
@ -148,7 +148,7 @@ class TaskListViewModelTest : InjectingTestCase() {
val child = taskDao.createNew( val child = taskDao.createNew(
Task( Task(
parent = parent, parent = parent,
completionDate = now(), completionDate = currentTimeMillis(),
) )
) )

@ -5,8 +5,8 @@ import com.facebook.flipper.plugins.network.NetworkReporter
import com.facebook.flipper.plugins.network.NetworkReporter.ResponseInfo import com.facebook.flipper.plugins.network.NetworkReporter.ResponseInfo
import com.google.api.client.http.* import com.google.api.client.http.*
import com.google.api.client.json.GenericJson import com.google.api.client.json.GenericJson
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.helper.UUIDHelper import com.todoroo.astrid.helper.UUIDHelper
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import java.io.IOException import java.io.IOException
@ -18,12 +18,12 @@ internal class FlipperHttpInterceptor<T>(private val plugin: NetworkFlipperPlugi
private set private set
override fun intercept(request: HttpRequest) { override fun intercept(request: HttpRequest) {
plugin.reportRequest(toRequestInfo(request, DateUtilities.now())) plugin.reportRequest(toRequestInfo(request, currentTimeMillis()))
} }
@Throws(IOException::class) @Throws(IOException::class)
override fun interceptResponse(response: HttpResponse) { override fun interceptResponse(response: HttpResponse) {
plugin.reportResponse(toResponseInfo(response, DateUtilities.now())) plugin.reportResponse(toResponseInfo(response, currentTimeMillis()))
} }
@Throws(IOException::class) @Throws(IOException::class)

@ -5,7 +5,6 @@ import androidx.annotation.StringRes
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.preference.Preference import androidx.preference.Preference
import at.bitfire.cert4android.CustomCertManager.Companion.resetCertificates import at.bitfire.cert4android.CustomCertManager.Companion.resetCertificates
import com.todoroo.andlib.utility.DateUtilities.now
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.tasks.R import org.tasks.R
@ -14,6 +13,7 @@ import org.tasks.billing.Inventory
import org.tasks.extensions.Context.toast import org.tasks.extensions.Context.toast
import org.tasks.injection.InjectingPreferenceFragment import org.tasks.injection.InjectingPreferenceFragment
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import javax.inject.Inject import javax.inject.Inject
import kotlin.math.min import kotlin.math.min
@ -62,7 +62,7 @@ class Debug : InjectingPreferenceFragment() {
findPreference(R.string.debug_clear_hints).setOnPreferenceClickListener { findPreference(R.string.debug_clear_hints).setOnPreferenceClickListener {
preferences.installDate = preferences.installDate =
min(preferences.installDate, now() - TimeUnit.DAYS.toMillis(14)) min(preferences.installDate, currentTimeMillis() - TimeUnit.DAYS.toMillis(14))
preferences.lastSubscribeRequest = 0L preferences.lastSubscribeRequest = 0L
preferences.lastReviewRequest = 0L preferences.lastReviewRequest = 0L
preferences.shownBeastModeHint = false preferences.shownBeastModeHint = false

@ -7,11 +7,11 @@ import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.crashlytics.FirebaseCrashlytics import com.google.firebase.crashlytics.FirebaseCrashlytics
import com.google.firebase.remoteconfig.FirebaseRemoteConfig import com.google.firebase.remoteconfig.FirebaseRemoteConfig
import com.google.firebase.remoteconfig.ktx.remoteConfigSettings import com.google.firebase.remoteconfig.ktx.remoteConfigSettings
import com.todoroo.andlib.utility.DateUtilities.now
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import org.tasks.R import org.tasks.R
import org.tasks.jobs.WorkManager import org.tasks.jobs.WorkManager
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import javax.inject.Inject import javax.inject.Inject
@ -64,14 +64,14 @@ class Firebase @Inject constructor(
} }
private val installCooldown: Boolean private val installCooldown: Boolean
get() = preferences.installDate + days("install_cooldown", 14L) > now() get() = preferences.installDate + days("install_cooldown", 14L) > currentTimeMillis()
val reviewCooldown: Boolean val reviewCooldown: Boolean
get() = installCooldown || preferences.lastReviewRequest + days("review_cooldown", 30L) > now() get() = installCooldown || preferences.lastReviewRequest + days("review_cooldown", 30L) > currentTimeMillis()
val subscribeCooldown: Boolean val subscribeCooldown: Boolean
get() = installCooldown get() = installCooldown
|| preferences.lastSubscribeRequest + days("subscribe_cooldown", 30L) > now() || preferences.lastSubscribeRequest + days("subscribe_cooldown", 30L) > currentTimeMillis()
val moreOptionsBadge: Boolean val moreOptionsBadge: Boolean
get() = remoteConfig?.getBoolean("more_options_badge") ?: false get() = remoteConfig?.getBoolean("more_options_badge") ?: false

@ -5,11 +5,11 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import com.google.android.gms.location.Geofence import com.google.android.gms.location.Geofence
import com.google.android.gms.location.GeofencingEvent import com.google.android.gms.location.GeofencingEvent
import com.todoroo.andlib.utility.DateUtilities
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import org.tasks.Notifier import org.tasks.Notifier
import org.tasks.data.LocationDao import org.tasks.data.LocationDao
import org.tasks.injection.InjectingJobIntentService import org.tasks.injection.InjectingJobIntentService
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@ -45,9 +45,9 @@ class GoogleGeofenceTransitionIntentService : InjectingJobIntentService() {
return return
} }
val geofences = if (arrival) { val geofences = if (arrival) {
locationDao.getArrivalGeofences(place.uid!!, DateUtilities.now()) locationDao.getArrivalGeofences(place.uid!!, currentTimeMillis())
} else { } else {
locationDao.getDepartureGeofences(place.uid!!, DateUtilities.now()) locationDao.getDepartureGeofences(place.uid!!, currentTimeMillis())
} }
notifier.triggerNotifications(place.id, geofences, arrival) notifier.triggerNotifications(place.id, geofences, arrival)
} catch (e: Exception) { } catch (e: Exception) {

@ -8,12 +8,12 @@ import com.google.android.gms.common.GoogleApiAvailability.getInstance
import com.google.android.play.core.ktx.launchReview import com.google.android.play.core.ktx.launchReview
import com.google.android.play.core.ktx.requestReview import com.google.android.play.core.ktx.requestReview
import com.google.android.play.core.review.ReviewManagerFactory import com.google.android.play.core.review.ReviewManagerFactory
import com.todoroo.andlib.utility.DateUtilities.now
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.tasks.R import org.tasks.R
import org.tasks.analytics.Firebase import org.tasks.analytics.Firebase
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
class PlayServices @Inject constructor( class PlayServices @Inject constructor(
@ -33,7 +33,7 @@ class PlayServices @Inject constructor(
val request = requestReview() val request = requestReview()
launchReview(activity, request) launchReview(activity, request)
} }
preferences.lastReviewRequest = now() preferences.lastReviewRequest = currentTimeMillis()
firebase.logEvent(R.string.event_request_review) firebase.logEvent(R.string.event_request_review)
} catch (e: Exception) { } catch (e: Exception) {
firebase.reportException(e) firebase.reportException(e)

@ -7,7 +7,6 @@
package com.todoroo.andlib.utility; package com.todoroo.andlib.utility;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.time.DateTimeUtils2.currentTimeMillis;
import android.content.Context; import android.content.Context;
import android.text.format.DateFormat; import android.text.format.DateFormat;
@ -38,11 +37,6 @@ public class DateUtilities {
static Boolean is24HourOverride = null; static Boolean is24HourOverride = null;
/** Returns unixtime for current time */
public static long now() {
return currentTimeMillis();
}
/* ====================================================================== /* ======================================================================
* =========================================================== formatters * =========================================================== formatters
* ====================================================================== */ * ====================================================================== */

@ -125,6 +125,7 @@ import org.tasks.tasklist.TaskViewHolder
import org.tasks.tasklist.ViewHolderFactory import org.tasks.tasklist.ViewHolderFactory
import org.tasks.themes.ColorProvider import org.tasks.themes.ColorProvider
import org.tasks.themes.ThemeColor import org.tasks.themes.ThemeColor
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import org.tasks.ui.TaskEditEvent import org.tasks.ui.TaskEditEvent
import org.tasks.ui.TaskEditEventBus import org.tasks.ui.TaskEditEventBus
import org.tasks.ui.TaskListEvent import org.tasks.ui.TaskListEvent
@ -351,7 +352,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
if (Tasks.IS_GOOGLE_PLAY) { if (Tasks.IS_GOOGLE_PLAY) {
context.startActivity(Intent(context, PurchaseActivity::class.java)) context.startActivity(Intent(context, PurchaseActivity::class.java))
} else { } else {
preferences.lastSubscribeRequest = DateUtilities.now() preferences.lastSubscribeRequest = currentTimeMillis()
context.openUri(R.string.url_donate) context.openUri(R.string.url_donate)
} }
}, },

@ -1,6 +1,5 @@
package com.todoroo.astrid.adapter package com.todoroo.astrid.adapter
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.api.AstridOrderingFilter import com.todoroo.astrid.api.AstridOrderingFilter
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
@ -12,6 +11,7 @@ import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTaskDao import org.tasks.data.GoogleTaskDao
import org.tasks.data.TaskContainer import org.tasks.data.TaskContainer
import org.tasks.data.TaskListMetadata import org.tasks.data.TaskListMetadata
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import java.util.Collections import java.util.Collections
import kotlin.math.abs import kotlin.math.abs
@ -67,7 +67,7 @@ class AstridTaskAdapter internal constructor(
override suspend fun onTaskDeleted(task: Task) = updater.onDeleteTask(list, filter, task.uuid) override suspend fun onTaskDeleted(task: Task) = updater.onDeleteTask(list, filter, task.uuid)
override suspend fun onCompletedTask(uuid: String, newState: Boolean) { override suspend fun onCompletedTask(uuid: String, newState: Boolean) {
val completionDate = if (newState) DateUtilities.now() else 0 val completionDate = if (newState) currentTimeMillis() else 0
if (!newState) { if (!newState) {
val chained = chainedCompletions[uuid] val chained = chainedCompletions[uuid]
if (chained != null) { if (chained != null) {

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.alarms package com.todoroo.astrid.alarms
import com.todoroo.andlib.utility.DateUtilities
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.data.Alarm import org.tasks.data.Alarm
import org.tasks.data.Alarm.Companion.TYPE_SNOOZE import org.tasks.data.Alarm.Companion.TYPE_SNOOZE
@ -14,6 +13,7 @@ import org.tasks.data.TaskDao
import org.tasks.jobs.AlarmEntry import org.tasks.jobs.AlarmEntry
import org.tasks.jobs.WorkManager import org.tasks.jobs.WorkManager
import org.tasks.notifications.NotificationManager import org.tasks.notifications.NotificationManager
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@ -71,7 +71,7 @@ class AlarmService @Inject constructor(
} }
suspend fun getAlarms(): Pair<List<AlarmEntry>, List<AlarmEntry>> { suspend fun getAlarms(): Pair<List<AlarmEntry>, List<AlarmEntry>> {
val start = DateUtilities.now() val start = currentTimeMillis()
val overdue = ArrayList<AlarmEntry>() val overdue = ArrayList<AlarmEntry>()
val future = ArrayList<AlarmEntry>() val future = ArrayList<AlarmEntry>()
alarmDao.getActiveAlarms() alarmDao.getActiveAlarms()
@ -81,7 +81,7 @@ class AlarmService @Inject constructor(
val alarmEntries = alarms.mapNotNull { val alarmEntries = alarms.mapNotNull {
alarmCalculator.toAlarmEntry(task, it) alarmCalculator.toAlarmEntry(task, it)
} }
val (now, later) = alarmEntries.partition { it.time <= DateUtilities.now() } val (now, later) = alarmEntries.partition { it.time <= currentTimeMillis() }
later later
.find { it.type == TYPE_SNOOZE } .find { it.type == TYPE_SNOOZE }
?.let { future.add(it) } ?.let { future.add(it) }
@ -90,7 +90,7 @@ class AlarmService @Inject constructor(
later.minByOrNull { it.time }?.let { future.add(it) } later.minByOrNull { it.time }?.let { future.add(it) }
} }
} }
Timber.d("took ${DateUtilities.now() - start}ms overdue=${overdue.size} future=${future.size}") Timber.d("took ${currentTimeMillis() - start}ms overdue=${overdue.size} future=${future.size}")
return overdue to future return overdue to future
} }

@ -7,6 +7,7 @@
package com.todoroo.astrid.api; package com.todoroo.astrid.api;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.time.DateTimeUtils2.currentTimeMillis;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import org.tasks.time.DateTime; import org.tasks.time.DateTime;
@ -51,7 +52,7 @@ public final class PermaSql {
/** Replace placeholder strings with actual */ /** Replace placeholder strings with actual */
public static String replacePlaceholdersForQuery(String value) { public static String replacePlaceholdersForQuery(String value) {
if (value.contains(VALUE_NOW)) { if (value.contains(VALUE_NOW)) {
value = value.replace(VALUE_NOW, Long.toString(DateUtilities.now())); value = value.replace(VALUE_NOW, Long.toString(currentTimeMillis()));
} }
if (value.contains(VALUE_EOD) if (value.contains(VALUE_EOD)
|| value.contains(VALUE_EOD_DAY_AFTER) || value.contains(VALUE_EOD_DAY_AFTER)
@ -74,7 +75,7 @@ public final class PermaSql {
public static String replacePlaceholdersForNewTask(String value) { public static String replacePlaceholdersForNewTask(String value) {
if (value.contains(VALUE_NOW)) { if (value.contains(VALUE_NOW)) {
value = value.replace(VALUE_NOW, Long.toString(DateUtilities.now())); value = value.replace(VALUE_NOW, Long.toString(currentTimeMillis()));
} }
if (value.contains(VALUE_EOD) if (value.contains(VALUE_EOD)
|| value.contains(VALUE_EOD_DAY_AFTER) || value.contains(VALUE_EOD_DAY_AFTER)

@ -20,6 +20,7 @@ import org.tasks.calendars.CalendarEventProvider
import org.tasks.data.TaskDao import org.tasks.data.TaskDao
import org.tasks.preferences.PermissionChecker import org.tasks.preferences.PermissionChecker
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import java.util.TimeZone import java.util.TimeZone
import javax.inject.Inject import javax.inject.Inject
@ -134,7 +135,9 @@ class GCalHelper @Inject constructor(
private fun createStartAndEndDate(task: Task, values: ContentValues) { private fun createStartAndEndDate(task: Task, values: ContentValues) {
val dueDate = task.dueDate val dueDate = task.dueDate
val tzCorrectedDueDate = dueDate + TimeZone.getDefault().getOffset(dueDate) val tzCorrectedDueDate = dueDate + TimeZone.getDefault().getOffset(dueDate)
val tzCorrectedDueDateNow = DateUtilities.now() + TimeZone.getDefault().getOffset(DateUtilities.now()) val tzCorrectedDueDateNow = currentTimeMillis() + TimeZone.getDefault().getOffset(
currentTimeMillis()
)
// FIXME: doesn't respect timezones, see story 17443653 // FIXME: doesn't respect timezones, see story 17443653
if (task.hasDueDate()) { if (task.hasDueDate()) {
if (task.hasDueTime()) { if (task.hasDueTime()) {

@ -7,7 +7,6 @@ import android.media.AudioAttributes
import android.media.AudioAttributes.USAGE_NOTIFICATION_EVENT import android.media.AudioAttributes.USAGE_NOTIFICATION_EVENT
import android.media.RingtoneManager import android.media.RingtoneManager
import androidx.room.withTransaction import androidx.room.withTransaction
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.dao.Database import com.todoroo.astrid.dao.Database
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
@ -39,7 +38,7 @@ class TaskCompleter @Inject internal constructor(
?: Timber.e("Could not find task $taskId") ?: Timber.e("Could not find task $taskId")
suspend fun setComplete(item: Task, completed: Boolean, includeChildren: Boolean = true) { suspend fun setComplete(item: Task, completed: Boolean, includeChildren: Boolean = true) {
val completionDate = if (completed) DateUtilities.now() else 0L val completionDate = if (completed) currentTimeMillis() else 0L
ArrayList<Task?>() ArrayList<Task?>()
.apply { .apply {
if (includeChildren) { if (includeChildren) {

@ -39,6 +39,7 @@ import org.tasks.data.createHideUntil
import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils.startOfDay import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@ -138,8 +139,8 @@ class TaskCreator @Inject constructor(
internal suspend fun create(values: Map<String, Any>?, title: String?): Task { internal suspend fun create(values: Map<String, Any>?, title: String?): Task {
val task = Task( val task = Task(
title = title?.trim { it <= ' ' }, title = title?.trim { it <= ' ' },
creationDate = DateUtilities.now(), creationDate = currentTimeMillis(),
modificationDate = DateUtilities.now(), modificationDate = currentTimeMillis(),
remoteId = UUIDHelper.newUUID(), remoteId = UUIDHelper.newUUID(),
priority = preferences.defaultPriority, priority = preferences.defaultPriority,
) )

@ -1,6 +1,5 @@
package com.todoroo.astrid.service package com.todoroo.astrid.service
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import com.todoroo.astrid.data.Task.Companion.NO_ID import com.todoroo.astrid.data.Task.Companion.NO_ID
@ -20,6 +19,7 @@ import org.tasks.data.TagDataDao
import org.tasks.data.TaskAttachmentDao import org.tasks.data.TaskAttachmentDao
import org.tasks.db.DbUtils.dbchunk import org.tasks.db.DbUtils.dbchunk
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
class TaskDuplicator @Inject constructor( class TaskDuplicator @Inject constructor(
@ -51,8 +51,8 @@ class TaskDuplicator @Inject constructor(
private suspend fun clone(task: Task, parentId: Long): Task { private suspend fun clone(task: Task, parentId: Long): Task {
val clone = task.copy( val clone = task.copy(
id = NO_ID, id = NO_ID,
creationDate = DateUtilities.now(), creationDate = currentTimeMillis(),
modificationDate = DateUtilities.now(), modificationDate = currentTimeMillis(),
reminderLast = 0, reminderLast = 0,
completionDate = 0L, completionDate = 0L,
calendarURI = "", calendarURI = "",

@ -1,7 +1,6 @@
package com.todoroo.astrid.service package com.todoroo.astrid.service
import android.content.Context import android.content.Context
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.api.CaldavFilter import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.GtasksFilter
@ -20,6 +19,7 @@ import org.tasks.data.getLocalList
import org.tasks.db.DbUtils.dbchunk import org.tasks.db.DbUtils.dbchunk
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.sync.SyncAdapters import org.tasks.sync.SyncAdapters
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
class TaskMover @Inject constructor( class TaskMover @Inject constructor(
@ -102,7 +102,7 @@ class TaskMover @Inject constructor(
} }
val id = task.id val id = task.id
val children = taskDao.getChildren(id) val children = taskDao.getChildren(id)
caldavDao.markDeleted(children + id, DateUtilities.now()) caldavDao.markDeleted(children + id, currentTimeMillis())
when(selected) { when(selected) {
is GtasksFilter -> { is GtasksFilter -> {
val listId = selected.remoteId val listId = selected.remoteId
@ -158,7 +158,7 @@ class TaskMover @Inject constructor(
children = caldavDao.getTasks(childIds) children = caldavDao.getTasks(childIds)
toDelete.addAll(childIds) toDelete.addAll(childIds)
} }
caldavDao.markDeleted(toDelete, DateUtilities.now()) caldavDao.markDeleted(toDelete, currentTimeMillis())
when (selected) { when (selected) {
is CaldavFilter -> { is CaldavFilter -> {
val from = caldavDao.getCalendar(caldavTask.calendar!!) val from = caldavDao.getCalendar(caldavTask.calendar!!)

@ -6,7 +6,6 @@ import androidx.annotation.ColorRes
import com.google.common.collect.ImmutableListMultimap import com.google.common.collect.ImmutableListMultimap
import com.google.common.collect.ListMultimap import com.google.common.collect.ListMultimap
import com.google.common.collect.Multimaps import com.google.common.collect.Multimaps
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.GtasksFilter
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import dagger.Lazy import dagger.Lazy
@ -36,6 +35,7 @@ import org.tasks.data.UpgraderDao
import org.tasks.data.UserActivityDao import org.tasks.data.UserActivityDao
import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import org.tasks.widget.AppWidgetManager import org.tasks.widget.AppWidgetManager
import org.tasks.widget.WidgetPreferences import org.tasks.widget.WidgetPreferences
import java.io.File import java.io.File
@ -123,7 +123,7 @@ class Upgrader @Inject constructor(
private fun setInstallDetails(version: Int) { private fun setInstallDetails(version: Int) {
preferences.installVersion = version preferences.installVersion = version
preferences.installDate = now() preferences.installDate = currentTimeMillis()
} }
private fun run(from: Int, version: Int, runnable: suspend () -> Unit) { private fun run(from: Int, version: Int, runnable: suspend () -> Unit) {

@ -5,10 +5,10 @@
*/ */
package com.todoroo.astrid.timers package com.todoroo.astrid.timers
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import org.tasks.data.TaskDao import org.tasks.data.TaskDao
import org.tasks.notifications.NotificationManager import org.tasks.notifications.NotificationManager
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
class TimerPlugin @Inject constructor( class TimerPlugin @Inject constructor(
@ -31,11 +31,11 @@ class TimerPlugin @Inject constructor(
private suspend fun updateTimer(task: Task, start: Boolean) { private suspend fun updateTimer(task: Task, start: Boolean) {
if (start) { if (start) {
if (task.timerStart == 0L) { if (task.timerStart == 0L) {
task.timerStart = DateUtilities.now() task.timerStart = currentTimeMillis()
} }
} else { } else {
if (task.timerStart > 0) { if (task.timerStart > 0) {
val newElapsed = ((DateUtilities.now() - task.timerStart) / 1000L).toInt() val newElapsed = ((currentTimeMillis() - task.timerStart) / 1000L).toInt()
task.timerStart = 0L task.timerStart = 0L
task.elapsedSeconds += newElapsed task.elapsedSeconds += newElapsed
} }

@ -12,7 +12,6 @@ import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ProcessLifecycleOwner import androidx.lifecycle.ProcessLifecycleOwner
import androidx.lifecycle.coroutineScope import androidx.lifecycle.coroutineScope
import androidx.work.Configuration import androidx.work.Configuration
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.service.Upgrader import com.todoroo.astrid.service.Upgrader
import dagger.Lazy import dagger.Lazy
import dagger.hilt.android.HiltAndroidApp import dagger.hilt.android.HiltAndroidApp
@ -31,6 +30,7 @@ import org.tasks.preferences.Preferences
import org.tasks.receivers.RefreshReceiver import org.tasks.receivers.RefreshReceiver
import org.tasks.scheduling.NotificationSchedulerIntentService import org.tasks.scheduling.NotificationSchedulerIntentService
import org.tasks.themes.ThemeBase import org.tasks.themes.ThemeBase
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import org.tasks.widget.AppWidgetManager import org.tasks.widget.AppWidgetManager
import timber.log.Timber import timber.log.Timber
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@ -62,7 +62,7 @@ class Tasks : Application(), Configuration.Provider {
ProcessLifecycleOwner.get().lifecycle.addObserver( ProcessLifecycleOwner.get().lifecycle.addObserver(
object : DefaultLifecycleObserver { object : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) { override fun onResume(owner: LifecycleOwner) {
if (now() - preferences.lastSync > TimeUnit.MINUTES.toMillis(5)) { if (currentTimeMillis() - preferences.lastSync > TimeUnit.MINUTES.toMillis(5)) {
owner.lifecycle.coroutineScope.launch { owner.lifecycle.coroutineScope.launch {
workManager.get().sync(true) workManager.get().sync(true)
} }

@ -3,7 +3,6 @@ package org.tasks.caldav
import at.bitfire.ical4android.Task import at.bitfire.ical4android.Task
import at.bitfire.ical4android.Task.Companion.tasksFromReader import at.bitfire.ical4android.Task.Companion.tasksFromReader
import at.bitfire.ical4android.util.DateUtils.ical4jTimeZone import at.bitfire.ical4android.util.DateUtils.ical4jTimeZone
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.alarms.AlarmService import com.todoroo.astrid.alarms.AlarmService
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.service.TaskCreator import com.todoroo.astrid.service.TaskCreator
@ -61,6 +60,7 @@ import org.tasks.repeats.RecurrenceUtils.newRRule
import org.tasks.time.DateTimeUtils.startOfDay import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.time.DateTimeUtils.startOfMinute import org.tasks.time.DateTimeUtils.startOfMinute
import org.tasks.time.DateTimeUtils.toDate import org.tasks.time.DateTimeUtils.toDate
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import java.io.StringReader import java.io.StringReader
@ -261,7 +261,7 @@ class iCalendar @Inject constructor(
val changed = val changed =
alarmService.synchronizeAlarms(caldavTask.task, remoteReminders.toMutableSet()) alarmService.synchronizeAlarms(caldavTask.task, remoteReminders.toMutableSet())
if (changed) { if (changed) {
task.modificationDate = DateUtilities.now() task.modificationDate = currentTimeMillis()
} }
} }
} }

@ -1,7 +1,6 @@
package org.tasks.caldav package org.tasks.caldav
import at.bitfire.ical4android.Task import at.bitfire.ical4android.Task
import com.todoroo.andlib.utility.DateUtilities
import net.fortuna.ical4j.model.property.Status import net.fortuna.ical4j.model.property.Status
import org.tasks.caldav.iCalendar.Companion.collapsed import org.tasks.caldav.iCalendar.Companion.collapsed
import org.tasks.caldav.iCalendar.Companion.getLocal import org.tasks.caldav.iCalendar.Companion.getLocal
@ -17,6 +16,7 @@ import org.tasks.data.setRecurrence
import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.time.DateTime.UTC import org.tasks.time.DateTime.UTC
import org.tasks.time.DateTimeUtils.startOfSecond import org.tasks.time.DateTimeUtils.startOfSecond
import org.tasks.time.DateTimeUtils2.currentTimeMillis
fun com.todoroo.astrid.data.Task.applyRemote( fun com.todoroo.astrid.data.Task.applyRemote(
remote: Task, remote: Task,
@ -50,7 +50,7 @@ private fun com.todoroo.astrid.data.Task.applyCompletedAt(remote: Task, local: T
completionDate = getLocal(completedAt) completionDate = getLocal(completedAt)
} else if (remote.status === Status.VTODO_COMPLETED) { } else if (remote.status === Status.VTODO_COMPLETED) {
if (!isCompleted) { if (!isCompleted) {
completionDate = DateUtilities.now() completionDate = currentTimeMillis()
} }
} else { } else {
completionDate = 0L completionDate = 0L

@ -14,18 +14,18 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.ui.StartDateControlSet.Companion.getRelativeDateString import com.todoroo.astrid.ui.StartDateControlSet.Companion.getRelativeDateString
import org.tasks.R import org.tasks.R
import org.tasks.compose.TaskEditRow import org.tasks.compose.TaskEditRow
import org.tasks.dialogs.StartDatePicker import org.tasks.dialogs.StartDatePicker
import org.tasks.time.DateTimeUtils2.currentTimeMillis
@Composable @Composable
fun StartDateRow( fun StartDateRow(
startDate: Long, startDate: Long,
selectedDay: Long, selectedDay: Long,
selectedTime: Int, selectedTime: Int,
currentTime: Long = DateUtilities.now(), currentTime: Long = currentTimeMillis(),
hasDueDate: Boolean, hasDueDate: Boolean,
printDate: () -> String, printDate: () -> String,
onClick: () -> Unit, onClick: () -> Unit,

@ -6,10 +6,11 @@ import net.fortuna.ical4j.model.Recur
import org.tasks.date.DateTimeUtils import org.tasks.date.DateTimeUtils
import org.tasks.date.DateTimeUtils.toDateTime import org.tasks.date.DateTimeUtils.toDateTime
import org.tasks.time.DateTimeUtils.startOfDay import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.time.DateTimeUtils2.currentTimeMillis
/** Checks whether task is hidden. Requires HIDDEN_UNTIL */ /** Checks whether task is hidden. Requires HIDDEN_UNTIL */
val Task.isHidden val Task.isHidden
get() = hideUntil > DateUtilities.now() get() = hideUntil > currentTimeMillis()
/** /**
* Create hide until for this task. * Create hide until for this task.
@ -43,7 +44,7 @@ val Task.isOverdue: Boolean
if (isCompleted || !hasDueDate()) { if (isCompleted || !hasDueDate()) {
return false return false
} }
val compareTo = if (hasDueTime()) DateUtilities.now() else DateTimeUtils.newDateTime().startOfDay().millis val compareTo = if (hasDueTime()) currentTimeMillis() else DateTimeUtils.newDateTime().startOfDay().millis
return dueDate < compareTo return dueDate < compareTo
} }
@ -65,11 +66,11 @@ fun Task.hasNotes(): Boolean {
fun createDueDate(setting: Int, customDate: Long): Long { fun createDueDate(setting: Int, customDate: Long): Long {
val date: Long = when (setting) { val date: Long = when (setting) {
Task.URGENCY_NONE -> 0 Task.URGENCY_NONE -> 0
Task.URGENCY_TODAY -> DateUtilities.now() Task.URGENCY_TODAY -> currentTimeMillis()
Task.URGENCY_TOMORROW -> DateUtilities.now() + DateUtilities.ONE_DAY Task.URGENCY_TOMORROW -> currentTimeMillis() + DateUtilities.ONE_DAY
Task.URGENCY_DAY_AFTER -> DateUtilities.now() + 2 * DateUtilities.ONE_DAY Task.URGENCY_DAY_AFTER -> currentTimeMillis() + 2 * DateUtilities.ONE_DAY
Task.URGENCY_NEXT_WEEK -> DateUtilities.now() + DateUtilities.ONE_WEEK Task.URGENCY_NEXT_WEEK -> currentTimeMillis() + DateUtilities.ONE_WEEK
Task.URGENCY_IN_TWO_WEEKS -> DateUtilities.now() + 2 * DateUtilities.ONE_WEEK Task.URGENCY_IN_TWO_WEEKS -> currentTimeMillis() + 2 * DateUtilities.ONE_WEEK
Task.URGENCY_SPECIFIC_DAY, Task.URGENCY_SPECIFIC_DAY_TIME -> customDate Task.URGENCY_SPECIFIC_DAY, Task.URGENCY_SPECIFIC_DAY_TIME -> customDate
else -> throw IllegalArgumentException("Unknown setting $setting") else -> throw IllegalArgumentException("Unknown setting $setting")
} }

@ -8,7 +8,6 @@ import androidx.fragment.app.DialogFragment
import com.google.android.material.datepicker.MaterialDatePicker import com.google.android.material.datepicker.MaterialDatePicker
import com.google.android.material.datepicker.MaterialDatePicker.INPUT_MODE_CALENDAR import com.google.android.material.datepicker.MaterialDatePicker.INPUT_MODE_CALENDAR
import com.google.android.material.datepicker.MaterialDatePicker.INPUT_MODE_TEXT import com.google.android.material.datepicker.MaterialDatePicker.INPUT_MODE_TEXT
import com.todoroo.andlib.utility.DateUtilities
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
@ -45,7 +44,7 @@ class MyDatePickerDialog : DialogFragment() {
} }
private val initial: Long private val initial: Long
get() = arguments?.getLong(MyTimePickerDialog.EXTRA_TIMESTAMP) ?: DateUtilities.now().startOfDay() get() = arguments?.getLong(MyTimePickerDialog.EXTRA_TIMESTAMP) ?: currentTimeMillis().startOfDay()
private fun selected(year: Int, month: Int, day: Int) { private fun selected(year: Int, month: Int, day: Int) {
targetFragment?.onActivityResult( targetFragment?.onActivityResult(

@ -13,13 +13,13 @@ import com.google.android.material.timepicker.MaterialTimePicker.INPUT_MODE_CLOC
import com.google.android.material.timepicker.MaterialTimePicker.INPUT_MODE_KEYBOARD import com.google.android.material.timepicker.MaterialTimePicker.INPUT_MODE_KEYBOARD
import com.google.android.material.timepicker.TimeFormat.CLOCK_12H import com.google.android.material.timepicker.TimeFormat.CLOCK_12H
import com.google.android.material.timepicker.TimeFormat.CLOCK_24H import com.google.android.material.timepicker.TimeFormat.CLOCK_24H
import com.todoroo.andlib.utility.DateUtilities.now
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.date.DateTimeUtils.toDateTime import org.tasks.date.DateTimeUtils.toDateTime
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTime import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils.startOfDay import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
@ -47,7 +47,7 @@ class MyTimePickerDialog : DialogFragment() {
} }
private val initial: Long private val initial: Long
get() = arguments?.getLong(EXTRA_TIMESTAMP) ?: now().startOfDay() get() = arguments?.getLong(EXTRA_TIMESTAMP) ?: currentTimeMillis().startOfDay()
private fun selected(hour: Int, minute: Int) { private fun selected(hour: Int, minute: Int) {
targetFragment?.onActivityResult( targetFragment?.onActivityResult(

@ -3,7 +3,6 @@ package org.tasks.googleapis
import com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest import com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest
import com.google.api.client.http.HttpResponseException import com.google.api.client.http.HttpResponseException
import com.google.api.client.json.GenericJson import com.google.api.client.json.GenericJson
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.gtasks.api.HttpCredentialsAdapter import com.todoroo.astrid.gtasks.api.HttpCredentialsAdapter
import com.todoroo.astrid.gtasks.api.HttpNotFoundException import com.todoroo.astrid.gtasks.api.HttpNotFoundException
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@ -11,6 +10,7 @@ import kotlinx.coroutines.withContext
import org.tasks.BuildConfig import org.tasks.BuildConfig
import org.tasks.DebugNetworkInterceptor import org.tasks.DebugNetworkInterceptor
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import java.io.IOException import java.io.IOException
@ -29,9 +29,11 @@ abstract class BaseInvoker(
Timber.d("%s request: %s", caller, request) Timber.d("%s request: %s", caller, request)
val response: T? = try { val response: T? = try {
if (preferences.isFlipperEnabled) { if (preferences.isFlipperEnabled) {
val start = DateUtilities.now() val start = currentTimeMillis()
val httpResponse = request.executeUnparsed() val httpResponse = request.executeUnparsed()
interceptor.report(httpResponse, request.responseClass, start, DateUtilities.now()) interceptor.report(httpResponse, request.responseClass, start,
currentTimeMillis()
)
} else { } else {
request.execute() request.execute()
} }

@ -5,7 +5,6 @@ import android.content.Context
import androidx.documentfile.provider.DocumentFile import androidx.documentfile.provider.DocumentFile
import androidx.hilt.work.HiltWorker import androidx.hilt.work.HiltWorker
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import com.todoroo.andlib.utility.DateUtilities
import dagger.assisted.Assisted import dagger.assisted.Assisted
import dagger.assisted.AssistedInject import dagger.assisted.AssistedInject
import org.tasks.R import org.tasks.R
@ -14,6 +13,7 @@ import org.tasks.backup.BackupConstants
import org.tasks.backup.BackupConstants.BACKUP_CLEANUP_MATCHER import org.tasks.backup.BackupConstants.BACKUP_CLEANUP_MATCHER
import org.tasks.backup.TasksJsonExporter import org.tasks.backup.TasksJsonExporter
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import java.io.File import java.io.File
import java.io.FileFilter import java.io.FileFilter
@ -28,7 +28,7 @@ class BackupWork @AssistedInject constructor(
private val workManager: WorkManager) : RepeatingWorker(context, workerParams, firebase) { private val workManager: WorkManager) : RepeatingWorker(context, workerParams, firebase) {
override suspend fun run(): Result { override suspend fun run(): Result {
preferences.setLong(R.string.p_last_backup, DateUtilities.now()) preferences.setLong(R.string.p_last_backup, currentTimeMillis())
startBackup(context) startBackup(context)
return Result.success() return Result.success()
} }

@ -5,7 +5,6 @@ import androidx.core.app.NotificationCompat
import androidx.hilt.work.HiltWorker import androidx.hilt.work.HiltWorker
import androidx.work.ForegroundInfo import androidx.work.ForegroundInfo
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.alarms.AlarmService import com.todoroo.astrid.alarms.AlarmService
import dagger.assisted.Assisted import dagger.assisted.Assisted
import dagger.assisted.AssistedInject import dagger.assisted.AssistedInject
@ -18,6 +17,7 @@ import org.tasks.data.AlarmDao
import org.tasks.date.DateTimeUtils.toDateTime import org.tasks.date.DateTimeUtils.toDateTime
import org.tasks.notifications.NotificationManager import org.tasks.notifications.NotificationManager
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
@HiltWorker @HiltWorker
@ -35,7 +35,7 @@ class NotificationWork @AssistedInject constructor(
override suspend fun run(): Result { override suspend fun run(): Result {
if (preferences.isCurrentlyQuietHours) { if (preferences.isCurrentlyQuietHours) {
nextAlarm = preferences.adjustForQuietHours(now()) nextAlarm = preferences.adjustForQuietHours(currentTimeMillis())
return Result.success() return Result.success()
} }
val (overdue, _) = alarmService.getAlarms() val (overdue, _) = alarmService.getAlarms()

@ -1,11 +1,11 @@
package org.tasks.jobs package org.tasks.jobs
import android.net.Uri import android.net.Uri
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import org.tasks.BuildConfig import org.tasks.BuildConfig
import org.tasks.data.CaldavAccount import org.tasks.data.CaldavAccount
import org.tasks.data.Place import org.tasks.data.Place
import org.tasks.time.DateTimeUtils2.currentTimeMillis
interface WorkManager { interface WorkManager {
@ -21,7 +21,7 @@ interface WorkManager {
fun updateBackgroundSync() fun updateBackgroundSync()
suspend fun scheduleRefresh(timestamp: Long = now() + 5_000) suspend fun scheduleRefresh(timestamp: Long = currentTimeMillis() + 5_000)
fun triggerNotifications(expedited: Boolean = false) fun triggerNotifications(expedited: Boolean = false)

@ -21,7 +21,6 @@ import androidx.work.Worker
import androidx.work.workDataOf import androidx.work.workDataOf
import com.todoroo.andlib.utility.AndroidUtilities import com.todoroo.andlib.utility.AndroidUtilities
import com.todoroo.andlib.utility.AndroidUtilities.atLeastS import com.todoroo.andlib.utility.AndroidUtilities.atLeastS
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@ -148,13 +147,13 @@ class WorkManagerImpl(
enqueueUnique( enqueueUnique(
TAG_NOTIFICATIONS, TAG_NOTIFICATIONS,
NotificationWork::class.java, NotificationWork::class.java,
time = if (expedited) 0 else now() + 5_000, time = if (expedited) 0 else currentTimeMillis() + 5_000,
expedited = expedited, expedited = expedited,
) )
} }
override fun scheduleNotification(scheduledTime: Long) { override fun scheduleNotification(scheduledTime: Long) {
val time = max(now(), scheduledTime) val time = max(currentTimeMillis(), scheduledTime)
if (time < currentTimeMillis()) { if (time < currentTimeMillis()) {
val intent = notificationIntent val intent = notificationIntent
@ -221,7 +220,7 @@ class WorkManagerImpl(
time: Long = 0, time: Long = 0,
expedited: Boolean = false, expedited: Boolean = false,
) { ) {
val delay = time - now() val delay = time - currentTimeMillis()
val builder = OneTimeWorkRequest.Builder(c) val builder = OneTimeWorkRequest.Builder(c)
if (delay > 0) { if (delay > 0) {
builder.setInitialDelay(delay, TimeUnit.MILLISECONDS) builder.setInitialDelay(delay, TimeUnit.MILLISECONDS)

@ -3,13 +3,13 @@ package org.tasks.notifications
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.alarms.AlarmService import com.todoroo.astrid.alarms.AlarmService
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.tasks.injection.ApplicationScope import org.tasks.injection.ApplicationScope
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@ -31,7 +31,7 @@ class NotificationClearedReceiver : BroadcastReceiver() {
// so sleep for 1s instead // so sleep for 1s instead
if (snoozeTime == 0L) snoozeTime = 1000L if (snoozeTime == 0L) snoozeTime = 1000L
alarmService.snooze( alarmService.snooze(
time = now() + snoozeTime, time = currentTimeMillis() + snoozeTime,
taskIds = listOf(notificationId) taskIds = listOf(notificationId)
) )
} else { } else {

@ -15,7 +15,6 @@ import androidx.documentfile.provider.DocumentFile
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import com.todoroo.andlib.utility.AndroidUtilities import com.todoroo.andlib.utility.AndroidUtilities
import com.todoroo.andlib.utility.DateUtilities import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.activity.BeastModePreferences import com.todoroo.astrid.activity.BeastModePreferences
import com.todoroo.astrid.core.SortHelper import com.todoroo.astrid.core.SortHelper
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
@ -30,6 +29,7 @@ import org.tasks.extensions.Context.getResourceUri
import org.tasks.themes.ColorProvider import org.tasks.themes.ColorProvider
import org.tasks.themes.ThemeBase import org.tasks.themes.ThemeBase
import org.tasks.time.DateTime import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import timber.log.Timber import timber.log.Timber
import java.io.File import java.io.File
import java.net.URI import java.net.URI
@ -497,8 +497,8 @@ class Preferences @JvmOverloads constructor(
get() = BuildConfig.DEBUG && getBoolean(R.string.p_flipper, false) get() = BuildConfig.DEBUG && getBoolean(R.string.p_flipper, false)
var isPositionHackEnabled: Boolean var isPositionHackEnabled: Boolean
get() = getLong(R.string.p_google_tasks_position_hack, 0) > now() - DateUtilities.ONE_WEEK get() = getLong(R.string.p_google_tasks_position_hack, 0) > currentTimeMillis() - DateUtilities.ONE_WEEK
set(value) { setLong(R.string.p_google_tasks_position_hack, if (value) now() else 0) } set(value) { setLong(R.string.p_google_tasks_position_hack, if (value) currentTimeMillis() else 0) }
override var isManualSort: Boolean override var isManualSort: Boolean
get() = getBoolean(R.string.p_manual_sort, false) get() = getBoolean(R.string.p_manual_sort, false)

@ -2,10 +2,10 @@ package org.tasks.tasklist
import android.util.SparseArray import android.util.SparseArray
import androidx.core.util.forEach import androidx.core.util.forEach
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.core.SortHelper import com.todoroo.astrid.core.SortHelper
import org.tasks.data.TaskContainer import org.tasks.data.TaskContainer
import org.tasks.time.DateTimeUtils.startOfDay import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import org.tasks.ui.TaskListViewModel.UiItem import org.tasks.ui.TaskListViewModel.UiItem
class SectionedDataSource( class SectionedDataSource(
@ -103,7 +103,7 @@ class SectionedDataSource(
private fun getSections(): SparseArray<AdapterSection> { private fun getSections(): SparseArray<AdapterSection> {
val sections = ArrayList<AdapterSection>() val sections = ArrayList<AdapterSection>()
val startOfToday = now().startOfDay() val startOfToday = currentTimeMillis().startOfDay()
for (i in tasks.indices) { for (i in tasks.indices) {
val task = tasks[i] val task = tasks[i]
val sortGroup = task.sortGroup val sortGroup = task.sortGroup

@ -15,7 +15,6 @@ import androidx.compose.ui.unit.dp
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.composethemeadapter.MdcTheme import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.utility.DateUtilities import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.api.CaldavFilter import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.GtasksFilter
@ -40,6 +39,7 @@ import org.tasks.filters.PlaceFilter
import org.tasks.markdown.Markdown import org.tasks.markdown.Markdown
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils.startOfDay import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import org.tasks.ui.CheckBoxProvider import org.tasks.ui.CheckBoxProvider
import org.tasks.ui.ChipProvider import org.tasks.ui.ChipProvider
import java.time.format.FormatStyle import java.time.format.FormatStyle
@ -216,7 +216,7 @@ class TaskViewHolder internal constructor(
dueDate.setTextColor(textColorSecondary) dueDate.setTextColor(textColorSecondary)
} }
val dateValue: String? = if (sortByDueDate val dateValue: String? = if (sortByDueDate
&& (task.sortGroup ?: 0) >= now().startOfDay() && (task.sortGroup ?: 0) >= currentTimeMillis().startOfDay()
) { ) {
task.takeIf { it.hasDueTime() }?.let { task.takeIf { it.hasDueTime() }?.let {
DateUtilities.getTimeString(context, newDateTime(task.dueDate)) DateUtilities.getTimeString(context, newDateTime(task.dueDate))

@ -11,7 +11,6 @@ import androidx.lifecycle.lifecycleScope
import com.google.android.material.composethemeadapter.MdcTheme import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.sql.Criterion import com.todoroo.andlib.sql.Criterion
import com.todoroo.andlib.sql.QueryTemplate import com.todoroo.andlib.sql.QueryTemplate
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.activity.MainActivityViewModel import com.todoroo.astrid.activity.MainActivityViewModel
import com.todoroo.astrid.api.FilterImpl import com.todoroo.astrid.api.FilterImpl
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
@ -28,6 +27,7 @@ import org.tasks.data.TaskDao.TaskCriteria.activeAndVisible
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.tasklist.SectionedDataSource import org.tasks.tasklist.SectionedDataSource
import org.tasks.themes.ColorProvider import org.tasks.themes.ColorProvider
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
@ -75,7 +75,7 @@ class SubtaskControlSet : TaskEditControlFragment() {
viewModel.newSubtasks.value = viewModel.newSubtasks.value =
ArrayList(viewModel.newSubtasks.value).apply { ArrayList(viewModel.newSubtasks.value).apply {
val modified = it.copy( val modified = it.copy(
completionDate = if (it.isCompleted) 0 else now() completionDate = if (it.isCompleted) 0 else currentTimeMillis()
) )
set(indexOf(it), modified) set(indexOf(it), modified)
} }

@ -7,7 +7,6 @@ import androidx.core.net.toUri
import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.activity.TaskEditFragment import com.todoroo.astrid.activity.TaskEditFragment
import com.todoroo.astrid.alarms.AlarmService import com.todoroo.astrid.alarms.AlarmService
import com.todoroo.astrid.api.CaldavFilter import com.todoroo.astrid.api.CaldavFilter
@ -359,7 +358,7 @@ class TaskEditViewModel @Inject constructor(
) { ) {
alarmService.synchronizeAlarms(task.id, selectedAlarms.value.toMutableSet()) alarmService.synchronizeAlarms(task.id, selectedAlarms.value.toMutableSet())
task.putTransitory(FORCE_CALDAV_SYNC, true) task.putTransitory(FORCE_CALDAV_SYNC, true)
task.modificationDate = now() task.modificationDate = currentTimeMillis()
} }
if ( if (
@ -475,7 +474,7 @@ class TaskEditViewModel @Inject constructor(
} }
userActivity.message = message userActivity.message = message
userActivity.targetId = task.uuid userActivity.targetId = task.uuid
userActivity.created = now() userActivity.created = currentTimeMillis()
viewModelScope.launch { viewModelScope.launch {
withContext(NonCancellable) { withContext(NonCancellable) {
userActivityDao.createNew(userActivity) userActivityDao.createNew(userActivity)

@ -6,7 +6,6 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.api.AstridOrderingFilter import com.todoroo.astrid.api.AstridOrderingFilter
import com.todoroo.astrid.api.EmptyFilter import com.todoroo.astrid.api.EmptyFilter
import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.Filter
@ -41,6 +40,7 @@ import org.tasks.db.QueryUtils
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.preferences.QueryPreferences import org.tasks.preferences.QueryPreferences
import org.tasks.tasklist.SectionedDataSource import org.tasks.tasklist.SectionedDataSource
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
@ -68,7 +68,7 @@ class TaskListViewModel @Inject constructor(
data class State( data class State(
val filter: Filter = EmptyFilter(), val filter: Filter = EmptyFilter(),
val now: Long = DateUtilities.now(), val now: Long = currentTimeMillis(),
val searchQuery: String? = null, val searchQuery: String? = null,
val tasks: TasksResults = TasksResults.Loading, val tasks: TasksResults = TasksResults.Loading,
val begForSubscription: Boolean = false, val begForSubscription: Boolean = false,
@ -98,7 +98,7 @@ class TaskListViewModel @Inject constructor(
fun invalidate() { fun invalidate() {
_state.update { _state.update {
it.copy( it.copy(
now = DateUtilities.now(), now = currentTimeMillis(),
syncOngoing = preferences.isSyncOngoing, syncOngoing = preferences.isSyncOngoing,
) )
} }
@ -108,7 +108,7 @@ class TaskListViewModel @Inject constructor(
_state.update { _state.update {
it.copy(begForSubscription = false) it.copy(begForSubscription = false)
} }
preferences.lastSubscribeRequest = DateUtilities.now() preferences.lastSubscribeRequest = currentTimeMillis()
firebase.logEvent(R.string.event_banner_sub, R.string.param_click to clickedPurchase) firebase.logEvent(R.string.event_banner_sub, R.string.param_click to clickedPurchase)
} }

@ -6,7 +6,6 @@ import android.view.View
import android.widget.RemoteViews import android.widget.RemoteViews
import android.widget.RemoteViewsService.RemoteViewsFactory import android.widget.RemoteViewsService.RemoteViewsFactory
import com.todoroo.andlib.utility.DateUtilities import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.api.AstridOrderingFilter import com.todoroo.astrid.api.AstridOrderingFilter
import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.core.SortHelper import com.todoroo.astrid.core.SortHelper
@ -31,6 +30,7 @@ import org.tasks.tasklist.HeaderFormatter
import org.tasks.tasklist.SectionedDataSource import org.tasks.tasklist.SectionedDataSource
import org.tasks.themes.ColorProvider.Companion.priorityColor import org.tasks.themes.ColorProvider.Companion.priorityColor
import org.tasks.time.DateTimeUtils.startOfDay import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import org.tasks.ui.CheckBoxProvider.Companion.getCheckboxRes import org.tasks.ui.CheckBoxProvider.Companion.getCheckboxRes
import timber.log.Timber import timber.log.Timber
import java.time.format.FormatStyle import java.time.format.FormatStyle
@ -285,7 +285,7 @@ internal class TasksWidgetViewFactory(
setViewVisibility(dueDateRes, View.VISIBLE) setViewVisibility(dueDateRes, View.VISIBLE)
val text = if ( val text = if (
settings.groupMode == SortHelper.SORT_DUE && settings.groupMode == SortHelper.SORT_DUE &&
(task.sortGroup ?: 0L) >= now().startOfDay() && (task.sortGroup ?: 0L) >= currentTimeMillis().startOfDay() &&
!disableGroups !disableGroups
) { ) {
task.takeIf { it.hasDueTime() }?.let { task.takeIf { it.hasDueTime() }?.let {

Loading…
Cancel
Save