Migrate to Hilt

pull/1025/head
Alex Baker 6 years ago
parent da1a69760f
commit 52952e22cd

@ -7,6 +7,7 @@ plugins {
id("com.cookpad.android.plugin.license-tools") version "1.2.2" id("com.cookpad.android.plugin.license-tools") version "1.2.2"
id("com.github.ben-manes.versions") version "0.28.0" id("com.github.ben-manes.versions") version "0.28.0"
id("com.vanniktech.android.junit.jacoco") version "0.16.0" id("com.vanniktech.android.junit.jacoco") version "0.16.0"
id("dagger.hilt.android.plugin")
} }
repositories { repositories {
@ -47,7 +48,7 @@ android {
versionName = "9.7" versionName = "9.7"
targetSdkVersion(Versions.targetSdk) targetSdkVersion(Versions.targetSdk)
minSdkVersion(Versions.minSdk) minSdkVersion(Versions.minSdk)
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "org.tasks.TestRunner"
kapt { kapt {
arguments { arguments {
@ -142,8 +143,11 @@ dependencies {
implementation("com.gitlab.bitfireAT:ical4android:a675c7194b") implementation("com.gitlab.bitfireAT:ical4android:a675c7194b")
implementation("com.gitlab.bitfireAT:cert4android:1488e39a66") implementation("com.gitlab.bitfireAT:cert4android:1488e39a66")
kapt("com.google.dagger:dagger-compiler:${Versions.dagger}") implementation("com.google.dagger:hilt-android:${Versions.hilt}")
implementation("com.google.dagger:dagger:${Versions.dagger}") kapt("com.google.dagger:hilt-android-compiler:${Versions.hilt}")
kapt("androidx.hilt:hilt-compiler:${Versions.hilt_androidx}")
implementation("androidx.hilt:hilt-work:${Versions.hilt_androidx}")
implementation("androidx.hilt:hilt-lifecycle-viewmodel:${Versions.hilt_androidx}")
implementation("androidx.room:room-rxjava2:${Versions.room}") implementation("androidx.room:room-rxjava2:${Versions.room}")
kapt("androidx.room:room-compiler:${Versions.room}") kapt("androidx.room:room-compiler:${Versions.room}")
@ -199,7 +203,9 @@ dependencies {
googleplayImplementation("com.google.android.libraries.places:places:2.2.0") googleplayImplementation("com.google.android.libraries.places:places:2.2.0")
googleplayImplementation("com.android.billingclient:billing:1.2.2") googleplayImplementation("com.android.billingclient:billing:1.2.2")
kaptAndroidTest("com.google.dagger:dagger-compiler:${Versions.dagger}") androidTestImplementation("com.google.dagger:hilt-android-testing:${Versions.hilt}")
kaptAndroidTest("com.google.dagger:hilt-android-compiler:${Versions.hilt}")
kaptAndroidTest("androidx.hilt:hilt-compiler:${Versions.hilt_androidx}")
kaptAndroidTest("com.jakewharton:butterknife-compiler:${Versions.butterknife}") kaptAndroidTest("com.jakewharton:butterknife-compiler:${Versions.butterknife}")
androidTestImplementation("org.mockito:mockito-android:${Versions.mockito}") androidTestImplementation("org.mockito:mockito-android:${Versions.mockito}")
androidTestImplementation("com.natpryce:make-it-easy:${Versions.make_it_easy}") androidTestImplementation("com.natpryce:make-it-easy:${Versions.make_it_easy}")

@ -1,16 +1,16 @@
package com.todoroo.astrid.adapter package com.todoroo.astrid.adapter
import androidx.test.ext.junit.runners.AndroidJUnit4
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.astrid.api.CaldavFilter import com.todoroo.astrid.api.CaldavFilter
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.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull import org.junit.Assert.assertNull
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.data.CaldavCalendar import org.tasks.data.CaldavCalendar
@ -19,7 +19,7 @@ import org.tasks.data.GoogleTaskDao
import org.tasks.data.TaskContainer import org.tasks.data.TaskContainer
import org.tasks.data.TaskListQuery.getQuery import org.tasks.data.TaskListQuery.getQuery
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.CaldavTaskMaker.CALENDAR import org.tasks.makers.CaldavTaskMaker.CALENDAR
import org.tasks.makers.CaldavTaskMaker.REMOTE_PARENT import org.tasks.makers.CaldavTaskMaker.REMOTE_PARENT
import org.tasks.makers.CaldavTaskMaker.TASK import org.tasks.makers.CaldavTaskMaker.TASK
@ -31,7 +31,8 @@ import org.tasks.preferences.Preferences
import org.tasks.time.DateTime import org.tasks.time.DateTime
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class CaldavManualSortTaskAdapterTest : InjectingTestCase() { class CaldavManualSortTaskAdapterTest : InjectingTestCase() {
@Inject lateinit var googleTaskDao: GoogleTaskDao @Inject lateinit var googleTaskDao: GoogleTaskDao
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@ -241,6 +242,4 @@ class CaldavManualSortTaskAdapterTest : InjectingTestCase() {
with(REMOTE_PARENT, remoteParent))) with(REMOTE_PARENT, remoteParent)))
return task.id return task.id
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,24 +1,24 @@
package com.todoroo.astrid.adapter package com.todoroo.astrid.adapter
import androidx.test.ext.junit.runners.AndroidJUnit4
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.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.data.* import org.tasks.data.*
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.TaskContainerMaker.PARENT import org.tasks.makers.TaskContainerMaker.PARENT
import org.tasks.makers.TaskContainerMaker.newTaskContainer import org.tasks.makers.TaskContainerMaker.newTaskContainer
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class CaldavTaskAdapterTest : InjectingTestCase() { class CaldavTaskAdapterTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@Inject lateinit var caldavDao: CaldavDao @Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var googleTaskDao: GoogleTaskDao @Inject lateinit var googleTaskDao: GoogleTaskDao
@ -211,6 +211,4 @@ class CaldavTaskAdapterTest : InjectingTestCase() {
result.cd_remote_parent = remoteParent result.cd_remote_parent = remoteParent
return result return result
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,15 +1,15 @@
package com.todoroo.astrid.adapter package com.todoroo.astrid.adapter
import androidx.test.ext.junit.runners.AndroidJUnit4
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.astrid.api.GtasksFilter import com.todoroo.astrid.api.GtasksFilter
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.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.data.CaldavDao import org.tasks.data.CaldavDao
@ -17,7 +17,7 @@ import org.tasks.data.GoogleTaskDao
import org.tasks.data.TaskContainer import org.tasks.data.TaskContainer
import org.tasks.data.TaskListQuery.getQuery import org.tasks.data.TaskListQuery.getQuery
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.GoogleTaskListMaker.REMOTE_ID import org.tasks.makers.GoogleTaskListMaker.REMOTE_ID
import org.tasks.makers.GoogleTaskListMaker.newGoogleTaskList import org.tasks.makers.GoogleTaskListMaker.newGoogleTaskList
import org.tasks.makers.GoogleTaskMaker import org.tasks.makers.GoogleTaskMaker
@ -29,9 +29,9 @@ import org.tasks.makers.TaskMaker.newTask
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class GoogleTaskManualSortAdapterTest : InjectingTestCase() { class GoogleTaskManualSortAdapterTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@Inject lateinit var caldavDao: CaldavDao @Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var googleTaskDao: GoogleTaskDao @Inject lateinit var googleTaskDao: GoogleTaskDao
@ -444,6 +444,4 @@ class GoogleTaskManualSortAdapterTest : InjectingTestCase() {
false) false)
return task.id return task.id
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -2,16 +2,16 @@ package com.todoroo.astrid.adapter
import android.content.Context import android.content.Context
import androidx.test.core.app.ApplicationProvider import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
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.astrid.core.BuiltInFilterExposer import com.todoroo.astrid.core.BuiltInFilterExposer
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.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.data.CaldavDao import org.tasks.data.CaldavDao
@ -19,15 +19,15 @@ import org.tasks.data.GoogleTaskDao
import org.tasks.data.TaskContainer import org.tasks.data.TaskContainer
import org.tasks.data.TaskListQuery.getQuery import org.tasks.data.TaskListQuery.getQuery
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent 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.preferences.Preferences import org.tasks.preferences.Preferences
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class NonRecursiveQueryTest : InjectingTestCase() { class NonRecursiveQueryTest : InjectingTestCase() {
@Inject lateinit var googleTaskDao: GoogleTaskDao @Inject lateinit var googleTaskDao: GoogleTaskDao
@Inject lateinit var caldavDao: CaldavDao @Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@ -74,6 +74,4 @@ class NonRecursiveQueryTest : InjectingTestCase() {
private fun query() { private fun query() {
tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter, it) }) tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter, it) })
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -2,31 +2,31 @@ package com.todoroo.astrid.adapter
import android.content.Context import android.content.Context
import androidx.test.core.app.ApplicationProvider import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
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.astrid.core.BuiltInFilterExposer import com.todoroo.astrid.core.BuiltInFilterExposer
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.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.data.CaldavDao 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.TaskListQuery.getQuery import org.tasks.data.TaskListQuery.getQuery
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent 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.preferences.Preferences import org.tasks.preferences.Preferences
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class OfflineSubtaskTest : InjectingTestCase() { class OfflineSubtaskTest : InjectingTestCase() {
@Inject lateinit var googleTaskDao: GoogleTaskDao @Inject lateinit var googleTaskDao: GoogleTaskDao
@Inject lateinit var caldavDao: CaldavDao @Inject lateinit var caldavDao: CaldavDao
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@ -85,6 +85,4 @@ class OfflineSubtaskTest : InjectingTestCase() {
private fun query() { private fun query() {
tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter, it) }) tasks.addAll(taskDao.fetchTasks { getQuery(preferences, filter, it) })
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,16 +1,16 @@
package com.todoroo.astrid.alarms package com.todoroo.astrid.alarms
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.Alarm import org.tasks.data.Alarm
import org.tasks.data.AlarmDao import org.tasks.data.AlarmDao
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.jobs.AlarmEntry import org.tasks.jobs.AlarmEntry
import org.tasks.jobs.NotificationQueue import org.tasks.jobs.NotificationQueue
import org.tasks.makers.TaskMaker.REMINDER_LAST import org.tasks.makers.TaskMaker.REMINDER_LAST
@ -18,7 +18,8 @@ import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTime import org.tasks.time.DateTime
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class AlarmJobServiceTest : InjectingTestCase() { class AlarmJobServiceTest : InjectingTestCase() {
@Inject lateinit var alarmDao: AlarmDao @Inject lateinit var alarmDao: AlarmDao
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@ -47,6 +48,4 @@ class AlarmJobServiceTest : InjectingTestCase() {
assertTrue(jobs.getJobs().isEmpty()) assertTrue(jobs.getJobs().isEmpty())
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -5,23 +5,25 @@
*/ */
package com.todoroo.astrid.dao package com.todoroo.astrid.dao
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.andlib.utility.DateUtilities 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.UninstallModules
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.TaskMaker.ID import org.tasks.makers.TaskMaker.ID
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 javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class TaskDaoTests : InjectingTestCase() { class TaskDaoTests : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@Inject lateinit var taskDeleter: TaskDeleter @Inject lateinit var taskDeleter: TaskDeleter
@ -162,6 +164,4 @@ class TaskDaoTests : InjectingTestCase() {
taskDao.createNew(newTask(with(ID, 3L), with(PARENT, 2L))) taskDao.createNew(newTask(with(ID, 3L), with(PARENT, 2L)))
assertEquals(listOf(2L, 3L), taskDao.getChildren(listOf(1L, 3L))) assertEquals(listOf(2L, 3L), taskDao.getChildren(listOf(1L, 3L)))
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,18 +1,19 @@
package com.todoroo.astrid.gtasks package com.todoroo.astrid.gtasks
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.api.services.tasks.model.TaskList import com.google.api.services.tasks.model.TaskList
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.service.TaskDeleter import com.todoroo.astrid.service.TaskDeleter
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull import org.junit.Assert.assertNull
import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.data.GoogleTaskAccount import org.tasks.data.GoogleTaskAccount
import org.tasks.data.GoogleTaskListDao import org.tasks.data.GoogleTaskListDao
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.GtaskListMaker.ID import org.tasks.makers.GtaskListMaker.ID
import org.tasks.makers.GtaskListMaker.NAME import org.tasks.makers.GtaskListMaker.NAME
import org.tasks.makers.GtaskListMaker.REMOTE_ID import org.tasks.makers.GtaskListMaker.REMOTE_ID
@ -21,7 +22,8 @@ import org.tasks.makers.RemoteGtaskListMaker
import org.tasks.makers.RemoteGtaskListMaker.newRemoteList import org.tasks.makers.RemoteGtaskListMaker.newRemoteList
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class GtasksListServiceTest : InjectingTestCase() { class GtasksListServiceTest : InjectingTestCase() {
@Inject lateinit var taskDeleter: TaskDeleter @Inject lateinit var taskDeleter: TaskDeleter
@Inject lateinit var localBroadcastManager: LocalBroadcastManager @Inject lateinit var localBroadcastManager: LocalBroadcastManager
@ -29,13 +31,12 @@ class GtasksListServiceTest : InjectingTestCase() {
private lateinit var gtasksListService: GtasksListService private lateinit var gtasksListService: GtasksListService
@Before
override fun setUp() { override fun setUp() {
super.setUp() super.setUp()
gtasksListService = GtasksListService(googleTaskListDao, taskDeleter, localBroadcastManager) gtasksListService = GtasksListService(googleTaskListDao, taskDeleter, localBroadcastManager)
} }
override fun inject(component: TestComponent) = component.inject(this)
@Test @Test
fun testCreateNewList() { fun testCreateNewList() {
setLists( setLists(
@ -50,12 +51,12 @@ class GtasksListServiceTest : InjectingTestCase() {
fun testGetListByRemoteId() { fun testGetListByRemoteId() {
val list = newGtaskList(with(REMOTE_ID, "1")) val list = newGtaskList(with(REMOTE_ID, "1"))
list.id = googleTaskListDao.insertOrReplace(list) list.id = googleTaskListDao.insertOrReplace(list)
assertEquals(list, gtasksListService.getList("1")) assertEquals(list, googleTaskListDao.getByRemoteId("1"))
} }
@Test @Test
fun testGetListReturnsNullWhenNotFound() { fun testGetListReturnsNullWhenNotFound() {
assertNull(gtasksListService.getList("1")) assertNull(googleTaskListDao.getByRemoteId("1"))
} }
@Test @Test
@ -81,7 +82,7 @@ class GtasksListServiceTest : InjectingTestCase() {
@Test @Test
fun testNewListLastSyncIsZero() { fun testNewListLastSyncIsZero() {
setLists(TaskList().setId("1")) setLists(TaskList().setId("1"))
assertEquals(0L, gtasksListService.getList("1").lastSync) assertEquals(0L, googleTaskListDao.getByRemoteId("1")!!.lastSync)
} }
private fun setLists(vararg list: TaskList) { private fun setLists(vararg list: TaskList) {

@ -5,20 +5,21 @@
*/ */
package com.todoroo.astrid.gtasks package com.todoroo.astrid.gtasks
import androidx.test.ext.junit.runners.AndroidJUnit4
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.UninstallModules
import org.junit.Assert.assertNotNull import org.junit.Assert.assertNotNull
import org.junit.Assert.assertNull import org.junit.Assert.assertNull
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.GoogleTask import org.tasks.data.GoogleTask
import org.tasks.data.GoogleTaskDao import org.tasks.data.GoogleTaskDao
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class GtasksMetadataServiceTest : InjectingTestCase() { class GtasksMetadataServiceTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@Inject lateinit var googleTaskDao: GoogleTaskDao @Inject lateinit var googleTaskDao: GoogleTaskDao
@ -26,8 +27,6 @@ class GtasksMetadataServiceTest : InjectingTestCase() {
private var task: Task? = null private var task: Task? = null
private var metadata: GoogleTask? = null private var metadata: GoogleTask? = null
override fun inject(component: TestComponent) = component.inject(this)
@Test @Test
fun testMetadataFound() { fun testMetadataFound() {
givenTask(taskWithMetadata(null)) givenTask(taskWithMetadata(null))

@ -1,18 +1,19 @@
package com.todoroo.astrid.model package com.todoroo.astrid.model
import androidx.test.ext.junit.runners.AndroidJUnit4
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.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze import org.tasks.Freeze
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.time.DateTimeUtils import org.tasks.time.DateTimeUtils
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class TaskTest : InjectingTestCase() { class TaskTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@ -32,6 +33,4 @@ class TaskTest : InjectingTestCase() {
val fromDb = taskDao.fetch(task.id) val fromDb = taskDao.fetch(task.id)
assertEquals(task, fromDb) assertEquals(task, fromDb)
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,19 +1,20 @@
package com.todoroo.astrid.reminders package com.todoroo.astrid.reminders
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.andlib.utility.DateUtilities 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 dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze import org.tasks.Freeze
import org.tasks.R import org.tasks.R
import org.tasks.date.DateTimeUtils import org.tasks.date.DateTimeUtils
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.jobs.NotificationQueue import org.tasks.jobs.NotificationQueue
import org.tasks.jobs.ReminderEntry import org.tasks.jobs.ReminderEntry
import org.tasks.makers.TaskMaker.COMPLETION_TIME import org.tasks.makers.TaskMaker.COMPLETION_TIME
@ -33,7 +34,8 @@ import org.tasks.time.DateTime
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class ReminderServiceTest : InjectingTestCase() { class ReminderServiceTest : InjectingTestCase() {
@Inject lateinit var preferences: Preferences @Inject lateinit var preferences: Preferences
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@ -42,6 +44,7 @@ class ReminderServiceTest : InjectingTestCase() {
private lateinit var service: ReminderService private lateinit var service: ReminderService
private lateinit var random: RandomStub private lateinit var random: RandomStub
@Before
override fun setUp() { override fun setUp() {
super.setUp() super.setUp()
random = RandomStub() random = RandomStub()
@ -49,8 +52,6 @@ class ReminderServiceTest : InjectingTestCase() {
service = ReminderService(preferences, jobs, random, taskDao) service = ReminderService(preferences, jobs, random, taskDao)
} }
override fun inject(component: TestComponent) = component.inject(this)
@Test @Test
fun dontScheduleDueDateReminderWhenFlagNotSet() { fun dontScheduleDueDateReminderWhenFlagNotSet() {
service.scheduleAlarm(newTask(with(ID, 1L), with(DUE_TIME, DateTimeUtils.newDateTime()))) service.scheduleAlarm(newTask(with(ID, 1L), with(DUE_TIME, DateTimeUtils.newDateTime())))

@ -1,23 +1,23 @@
package com.todoroo.astrid.repeats package com.todoroo.astrid.repeats
import android.annotation.SuppressLint import android.annotation.SuppressLint
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.ical.values.RRule import com.google.ical.values.RRule
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
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.data.Task import com.todoroo.astrid.data.Task
import com.todoroo.astrid.gcal.GCalHelper import com.todoroo.astrid.gcal.GCalHelper
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.After import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.InOrder import org.mockito.InOrder
import org.mockito.Mockito import org.mockito.Mockito
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.TaskMaker.AFTER_COMPLETE import org.tasks.makers.TaskMaker.AFTER_COMPLETE
import org.tasks.makers.TaskMaker.COMPLETION_TIME import org.tasks.makers.TaskMaker.COMPLETION_TIME
import org.tasks.makers.TaskMaker.DUE_TIME import org.tasks.makers.TaskMaker.DUE_TIME
@ -29,7 +29,8 @@ import java.text.ParseException
import javax.inject.Inject import javax.inject.Inject
@SuppressLint("NewApi") @SuppressLint("NewApi")
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class RepeatTaskHelperTest : InjectingTestCase() { class RepeatTaskHelperTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
private lateinit var localBroadcastManager: LocalBroadcastManager private lateinit var localBroadcastManager: LocalBroadcastManager
@ -188,6 +189,4 @@ class RepeatTaskHelperTest : InjectingTestCase() {
mocks.verify(alarmService).rescheduleAlarms(1, oldDueDate.millis, newDueDate.millis) mocks.verify(alarmService).rescheduleAlarms(1, oldDueDate.millis, newDueDate.millis)
mocks.verify(localBroadcastManager).broadcastRepeat(1, oldDueDate.millis, newDueDate.millis) mocks.verify(localBroadcastManager).broadcastRepeat(1, oldDueDate.millis, newDueDate.millis)
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -5,27 +5,26 @@
*/ */
package com.todoroo.astrid.service package com.todoroo.astrid.service
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import com.todoroo.astrid.utility.TitleParser import com.todoroo.astrid.utility.TitleParser
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.TagDataDao import org.tasks.data.TagDataDao
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import java.util.* import java.util.*
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class QuickAddMarkupTest : InjectingTestCase() { class QuickAddMarkupTest : InjectingTestCase() {
private val tags = ArrayList<String>() private val tags = ArrayList<String>()
@Inject lateinit var tagDataDao: TagDataDao @Inject lateinit var tagDataDao: TagDataDao
private var task: Task? = null private var task: Task? = null
override fun inject(component: TestComponent) = component.inject(this)
@Test @Test
fun testTags() { fun testTags() {
whenTitleIs("this #cool") whenTitleIs("this #cool")

@ -1,19 +1,19 @@
package com.todoroo.astrid.service package com.todoroo.astrid.service
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.api.CaldavFilter import com.todoroo.astrid.api.CaldavFilter
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.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.CaldavCalendar import org.tasks.data.CaldavCalendar
import org.tasks.data.CaldavDao import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTaskDao import org.tasks.data.GoogleTaskDao
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.jobs.WorkManager import org.tasks.jobs.WorkManager
import org.tasks.makers.CaldavTaskMaker import org.tasks.makers.CaldavTaskMaker
import org.tasks.makers.CaldavTaskMaker.CALENDAR import org.tasks.makers.CaldavTaskMaker.CALENDAR
@ -31,7 +31,8 @@ import org.tasks.makers.TaskMaker.ID
import org.tasks.makers.TaskMaker.newTask import org.tasks.makers.TaskMaker.newTask
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class TaskMoverTest : InjectingTestCase() { class TaskMoverTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@Inject lateinit var googleTaskDao: GoogleTaskDao @Inject lateinit var googleTaskDao: GoogleTaskDao
@ -298,6 +299,4 @@ class TaskMoverTest : InjectingTestCase() {
private fun moveToCaldavList(calendar: String, vararg tasks: Long) { private fun moveToCaldavList(calendar: String, vararg tasks: Long) {
taskMover.move(tasks.toList(), CaldavFilter(CaldavCalendar("", calendar))) taskMover.move(tasks.toList(), CaldavFilter(CaldavCalendar("", calendar)))
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -5,36 +5,37 @@
*/ */
package com.todoroo.astrid.service package com.todoroo.astrid.service
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.ical.values.Frequency import com.google.ical.values.Frequency
import com.google.ical.values.RRule import com.google.ical.values.RRule
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import com.todoroo.astrid.utility.TitleParser import com.todoroo.astrid.utility.TitleParser
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.R import org.tasks.R
import org.tasks.data.TagDataDao import org.tasks.data.TagDataDao
import org.tasks.date.DateTimeUtils import org.tasks.date.DateTimeUtils
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import java.util.* import java.util.*
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class TitleParserTest : InjectingTestCase() { class TitleParserTest : InjectingTestCase() {
@Inject lateinit var tagDataDao: TagDataDao @Inject lateinit var tagDataDao: TagDataDao
@Inject lateinit var preferences: Preferences @Inject lateinit var preferences: Preferences
@Inject lateinit var taskCreator: TaskCreator @Inject lateinit var taskCreator: TaskCreator
@Before
override fun setUp() { override fun setUp() {
super.setUp() super.setUp()
preferences.setStringFromInteger(R.string.p_default_urgency_key, 0) preferences.setStringFromInteger(R.string.p_default_urgency_key, 0)
} }
override fun inject(component: TestComponent) = component.inject(this)
/** /**
* test that completing a task w/ no regular expressions creates a simple task with no date, no * test that completing a task w/ no regular expressions creates a simple task with no date, no
* repeat, no lists * repeat, no lists

@ -1,16 +1,18 @@
package com.todoroo.astrid.subtasks package com.todoroo.astrid.subtasks
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.TaskListMetadata import org.tasks.data.TaskListMetadata
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class SubtasksHelperTest : SubtasksTestCase() { class SubtasksHelperTest : SubtasksTestCase() {
@Before
override fun setUp() { override fun setUp() {
super.setUp() super.setUp()
createTasks() createTasks()
@ -53,8 +55,6 @@ class SubtasksHelperTest : SubtasksTestCase() {
assertEquals(EXPECTED_REMOTE, mapped) assertEquals(EXPECTED_REMOTE, mapped)
} }
override fun inject(component: TestComponent) = component.inject(this)
companion object { companion object {
private val EXPECTED_ORDER = arrayOf("-1", "1", "2", "3", "4", "5", "6") private val EXPECTED_ORDER = arrayOf("-1", "1", "2", "3", "4", "5", "6")
private val EXPECTED_REMOTE = "[\"-1\", [\"6\", \"4\", [\"3\", \"1\"]], \"2\", \"5\"]".replace("\\s".toRegex(), "") private val EXPECTED_REMOTE = "[\"-1\", [\"6\", \"4\", [\"3\", \"1\"]], \"2\", \"5\"]".replace("\\s".toRegex(), "")

@ -1,13 +1,15 @@
package com.todoroo.astrid.subtasks package com.todoroo.astrid.subtasks
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.TaskListMetadata import org.tasks.data.TaskListMetadata
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class SubtasksMovingTest : SubtasksTestCase() { class SubtasksMovingTest : SubtasksTestCase() {
private lateinit var A: Task private lateinit var A: Task
private lateinit var B: Task private lateinit var B: Task
@ -16,6 +18,7 @@ class SubtasksMovingTest : SubtasksTestCase() {
private lateinit var E: Task private lateinit var E: Task
private lateinit var F: Task private lateinit var F: Task
@Before
override fun setUp() { override fun setUp() {
super.setUp() super.setUp()
createTasks() createTasks()
@ -33,8 +36,6 @@ class SubtasksMovingTest : SubtasksTestCase() {
expectParentAndPosition(F, null, 2) expectParentAndPosition(F, null, 2)
} }
override fun inject(component: TestComponent) = component.inject(this)
private fun createTasks() { private fun createTasks() {
A = createTask("A") A = createTask("A")
B = createTask("B") B = createTask("B")

@ -5,7 +5,6 @@ import com.todoroo.astrid.data.Task
import org.tasks.data.TagData import org.tasks.data.TagData
import org.tasks.data.TagDataDao import org.tasks.data.TagDataDao
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent
import javax.inject.Inject import javax.inject.Inject
open class NewSyncTestCase : InjectingTestCase() { open class NewSyncTestCase : InjectingTestCase() {
@ -27,8 +26,6 @@ open class NewSyncTestCase : InjectingTestCase() {
return tag return tag
} }
override fun inject(component: TestComponent) = component.inject(this)
companion object { companion object {
private const val SYNC_TASK_TITLE = "new title" private const val SYNC_TASK_TITLE = "new title"
private const val SYNC_TASK_IMPORTANCE = Task.Priority.MEDIUM private const val SYNC_TASK_IMPORTANCE = Task.Priority.MEDIUM

@ -1,13 +1,16 @@
package com.todoroo.astrid.sync package com.todoroo.astrid.sync
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.assertNotEquals import org.junit.Assert.assertNotEquals
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.tasks.injection.ProductionModule
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class SyncModelTest : NewSyncTestCase() { class SyncModelTest : NewSyncTestCase() {
@Test @Test
fun testCreateTaskMakesUuid() { fun testCreateTaskMakesUuid() {
val task = createTask() val task = createTask()

@ -0,0 +1,13 @@
package org.tasks
import android.app.Application
import android.content.Context
import androidx.test.runner.AndroidJUnitRunner
import dagger.hilt.android.testing.HiltTestApplication
@Suppress("unused")
class TestRunner : AndroidJUnitRunner() {
override fun newApplication(cl: ClassLoader?, name: String?, context: Context?): Application {
return super.newApplication(cl, HiltTestApplication::class.java.name, context)
}
}

@ -6,8 +6,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.tasks.TestUtilities.newPreferences import org.tasks.TestUtilities.newPreferences
import java.security.KeyManagementException
import java.security.NoSuchAlgorithmException
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
class CaldavClientTest { class CaldavClientTest {

@ -1,25 +1,25 @@
package org.tasks.data package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
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 com.todoroo.andlib.utility.DateUtilities.now
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull import org.junit.Assert.assertNull
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze.Companion.freezeAt import org.tasks.Freeze.Companion.freezeAt
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent 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 javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class CaldavDaoShiftTests : InjectingTestCase() { class CaldavDaoShiftTests : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@Inject lateinit var caldavDao: CaldavDao @Inject lateinit var caldavDao: CaldavDao
@ -163,6 +163,4 @@ class CaldavDaoShiftTests : InjectingTestCase() {
result.cd_remote_parent = remoteParent result.cd_remote_parent = remoteParent
return result return result
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,15 +1,14 @@
package org.tasks.data package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.helper.UUIDHelper import com.todoroo.astrid.helper.UUIDHelper
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.TagDataMaker.newTagData import org.tasks.makers.TagDataMaker.newTagData
import org.tasks.makers.TagMaker.TAGDATA import org.tasks.makers.TagMaker.TAGDATA
import org.tasks.makers.TagMaker.TASK import org.tasks.makers.TagMaker.TASK
@ -20,7 +19,8 @@ import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTime import org.tasks.time.DateTime
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class CaldavDaoTests : InjectingTestCase() { class CaldavDaoTests : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@Inject lateinit var tagDao: TagDao @Inject lateinit var tagDao: TagDao
@ -143,6 +143,4 @@ class CaldavDaoTests : InjectingTestCase() {
assertEquals(order, sortOrder) assertEquals(order, sortOrder)
} }
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,16 +1,16 @@
package org.tasks.data package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.helper.UUIDHelper import com.todoroo.astrid.helper.UUIDHelper
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.data.CaldavDao.Companion.LOCAL import org.tasks.data.CaldavDao.Companion.LOCAL
import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.TaskMaker.CREATION_TIME import org.tasks.makers.TaskMaker.CREATION_TIME
import org.tasks.makers.TaskMaker.DELETION_TIME import org.tasks.makers.TaskMaker.DELETION_TIME
import org.tasks.makers.TaskMaker.newTask import org.tasks.makers.TaskMaker.newTask
@ -18,7 +18,8 @@ import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils import org.tasks.time.DateTimeUtils
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class DeletionDaoTests : InjectingTestCase() { class DeletionDaoTests : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@Inject lateinit var deletionDao: DeletionDao @Inject lateinit var deletionDao: DeletionDao
@ -89,6 +90,4 @@ class DeletionDaoTests : InjectingTestCase() {
assertNotNull(taskDao.fetch(task.id)) assertNotNull(taskDao.fetch(task.id))
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,15 +1,15 @@
package org.tasks.data package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull import org.junit.Assert.assertNull
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.GoogleTaskMaker.LIST import org.tasks.makers.GoogleTaskMaker.LIST
import org.tasks.makers.GoogleTaskMaker.PARENT import org.tasks.makers.GoogleTaskMaker.PARENT
import org.tasks.makers.GoogleTaskMaker.REMOTE_ID import org.tasks.makers.GoogleTaskMaker.REMOTE_ID
@ -19,7 +19,8 @@ import org.tasks.makers.GtaskListMaker.newGtaskList
import org.tasks.makers.TaskMaker.newTask import org.tasks.makers.TaskMaker.newTask
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class GoogleTaskDaoTests : InjectingTestCase() { class GoogleTaskDaoTests : InjectingTestCase() {
@Inject lateinit var googleTaskListDao: GoogleTaskListDao @Inject lateinit var googleTaskListDao: GoogleTaskListDao
@Inject lateinit var googleTaskDao: GoogleTaskDao @Inject lateinit var googleTaskDao: GoogleTaskDao
@ -177,6 +178,4 @@ class GoogleTaskDaoTests : InjectingTestCase() {
result.gt_parent = googleTask.parent result.gt_parent = googleTask.parent
return result return result
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,20 +1,20 @@
package org.tasks.data package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.GoogleTaskListMaker.ACCOUNT import org.tasks.makers.GoogleTaskListMaker.ACCOUNT
import org.tasks.makers.GoogleTaskListMaker.REMOTE_ID import org.tasks.makers.GoogleTaskListMaker.REMOTE_ID
import org.tasks.makers.GoogleTaskListMaker.newGoogleTaskList import org.tasks.makers.GoogleTaskListMaker.newGoogleTaskList
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class GoogleTaskListDaoTest : InjectingTestCase() { class GoogleTaskListDaoTest : InjectingTestCase() {
@Inject lateinit var googleTaskListDao: GoogleTaskListDao @Inject lateinit var googleTaskListDao: GoogleTaskListDao
@Test @Test
@ -49,6 +49,4 @@ class GoogleTaskListDaoTest : InjectingTestCase() {
assertNull(googleTaskListDao.findExistingList("1234")) assertNull(googleTaskListDao.findExistingList("1234"))
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,18 +1,18 @@
package org.tasks.data package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.andlib.utility.DateUtilities.now 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.UninstallModules
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze import org.tasks.Freeze
import org.tasks.caldav.GeoUtils.toLikeString import org.tasks.caldav.GeoUtils.toLikeString
import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.GeofenceMaker.ARRIVAL import org.tasks.makers.GeofenceMaker.ARRIVAL
import org.tasks.makers.GeofenceMaker.DEPARTURE import org.tasks.makers.GeofenceMaker.DEPARTURE
import org.tasks.makers.GeofenceMaker.PLACE import org.tasks.makers.GeofenceMaker.PLACE
@ -30,9 +30,9 @@ import org.tasks.makers.TaskMaker.SNOOZE_TIME
import org.tasks.makers.TaskMaker.newTask import org.tasks.makers.TaskMaker.newTask
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class LocationDaoTest : InjectingTestCase() { class LocationDaoTest : InjectingTestCase() {
@Inject lateinit var locationDao: LocationDao @Inject lateinit var locationDao: LocationDao
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@ -228,7 +228,5 @@ class LocationDaoTest : InjectingTestCase() {
assertEquals(listOf(geofence), locationDao.getDepartureGeofences(place.uid!!, now())) assertEquals(listOf(geofence), locationDao.getDepartureGeofences(place.uid!!, now()))
} }
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,18 +1,18 @@
package org.tasks.data package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
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 com.todoroo.astrid.helper.UUIDHelper import com.todoroo.astrid.helper.UUIDHelper
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.R import org.tasks.R
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.GoogleTaskListMaker.REMOTE_ID import org.tasks.makers.GoogleTaskListMaker.REMOTE_ID
import org.tasks.makers.GoogleTaskListMaker.newGoogleTaskList import org.tasks.makers.GoogleTaskListMaker.newGoogleTaskList
import org.tasks.makers.GoogleTaskMaker.LIST import org.tasks.makers.GoogleTaskMaker.LIST
@ -26,9 +26,9 @@ import org.tasks.makers.TaskMaker.UUID
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class ManualGoogleTaskQueryTest : InjectingTestCase() { class ManualGoogleTaskQueryTest : InjectingTestCase() {
@Inject lateinit var googleTaskDao: GoogleTaskDao @Inject lateinit var googleTaskDao: GoogleTaskDao
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@Inject lateinit var preferences: Preferences @Inject lateinit var preferences: Preferences
@ -106,6 +106,4 @@ class ManualGoogleTaskQueryTest : InjectingTestCase() {
private fun query(): List<TaskContainer> = taskDao.fetchTasks { private fun query(): List<TaskContainer> = taskDao.fetchTasks {
TaskListQuery.getQuery(preferences, filter, it) TaskListQuery.getQuery(preferences, filter, it)
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,14 +1,14 @@
package org.tasks.data package org.tasks.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.natpryce.makeiteasy.MakeItEasy.with import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.UninstallModules
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.makers.TagDataMaker.NAME import org.tasks.makers.TagDataMaker.NAME
import org.tasks.makers.TagDataMaker.newTagData import org.tasks.makers.TagDataMaker.newTagData
import org.tasks.makers.TagMaker.TAGDATA import org.tasks.makers.TagMaker.TAGDATA
@ -19,7 +19,8 @@ import org.tasks.makers.TaskMaker.ID
import org.tasks.makers.TaskMaker.newTask import org.tasks.makers.TaskMaker.newTask
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class TagDataDaoTest : InjectingTestCase() { class TagDataDaoTest : InjectingTestCase() {
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@Inject lateinit var tagDao: TagDao @Inject lateinit var tagDao: TagDao
@ -136,6 +137,4 @@ class TagDataDaoTest : InjectingTestCase() {
tagDao.insert(newTag(with(TASK, task), with(TAGUID, tag))) tagDao.insert(newTag(with(TASK, task), with(TAGUID, tag)))
} }
} }
override fun inject(component: TestComponent) = component.inject(this)
} }

@ -1,20 +1,16 @@
package org.tasks.injection package org.tasks.injection
import android.content.Context import dagger.hilt.android.testing.HiltAndroidRule
import androidx.test.core.app.ApplicationProvider
import org.junit.Before import org.junit.Before
import timber.log.Timber import org.junit.Rule
abstract class InjectingTestCase { abstract class InjectingTestCase {
@get:Rule
var hiltRule = HiltAndroidRule(this)
@Before @Before
open fun setUp() { open fun setUp() {
Thread.setDefaultUncaughtExceptionHandler { _, e: Throwable? -> Timber.e(e) } hiltRule.inject()
val context = ApplicationProvider.getApplicationContext<Context>()
val component = DaggerTestComponent.builder()
.applicationModule(ApplicationModule(context))
.testModule(TestModule()).build()
inject(component)
} }
protected abstract fun inject(component: TestComponent)
} }

@ -1,52 +0,0 @@
package org.tasks.injection
import com.todoroo.astrid.adapter.*
import com.todoroo.astrid.alarms.AlarmJobServiceTest
import com.todoroo.astrid.dao.TaskDaoTests
import com.todoroo.astrid.gtasks.GtasksListServiceTest
import com.todoroo.astrid.gtasks.GtasksMetadataServiceTest
import com.todoroo.astrid.model.TaskTest
import com.todoroo.astrid.reminders.ReminderServiceTest
import com.todoroo.astrid.repeats.RepeatTaskHelperTest
import com.todoroo.astrid.service.QuickAddMarkupTest
import com.todoroo.astrid.service.TaskMoverTest
import com.todoroo.astrid.service.TitleParserTest
import com.todoroo.astrid.subtasks.SubtasksHelperTest
import com.todoroo.astrid.subtasks.SubtasksMovingTest
import com.todoroo.astrid.sync.NewSyncTestCase
import dagger.Component
import org.tasks.data.*
import org.tasks.jobs.BackupServiceTests
import javax.inject.Singleton
@Singleton
@Component(modules = [TestModule::class])
interface TestComponent : ApplicationComponent {
fun inject(tests: GtasksListServiceTest)
fun inject(tests: ReminderServiceTest)
fun inject(tests: TaskTest)
fun inject(tests: TaskDaoTests)
fun inject(tests: NewSyncTestCase)
fun inject(tests: SubtasksMovingTest)
fun inject(tests: SubtasksHelperTest)
fun inject(tests: QuickAddMarkupTest)
fun inject(tests: TitleParserTest)
fun inject(tests: BackupServiceTests)
fun inject(tests: AlarmJobServiceTest)
fun inject(tests: RepeatTaskHelperTest)
fun inject(tests: GtasksMetadataServiceTest)
fun inject(tests: DeletionDaoTests)
fun inject(tests: GoogleTaskDaoTests)
fun inject(tests: TagDataDaoTest)
fun inject(tests: CaldavDaoTests)
fun inject(tests: TaskMoverTest)
fun inject(tests: LocationDaoTest)
fun inject(tests: GoogleTaskListDaoTest)
fun inject(tests: CaldavTaskAdapterTest)
fun inject(tests: ManualGoogleTaskQueryTest)
fun inject(tests: CaldavDaoShiftTests)
fun inject(tests: CaldavManualSortTaskAdapterTest)
fun inject(tests: GoogleTaskManualSortAdapterTest)
fun inject(tests: OfflineSubtaskTest)
fun inject(tests: NonRecursiveQueryTest)
}

@ -5,13 +5,19 @@ import androidx.room.Room
import com.todoroo.astrid.dao.Database import com.todoroo.astrid.dao.Database
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ApplicationComponent
import dagger.hilt.android.qualifiers.ApplicationContext
import org.mockito.Mockito.mock
import org.tasks.TestUtilities import org.tasks.TestUtilities
import org.tasks.jobs.WorkManager
import org.tasks.preferences.PermissionChecker import org.tasks.preferences.PermissionChecker
import org.tasks.preferences.PermissivePermissionChecker import org.tasks.preferences.PermissivePermissionChecker
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import javax.inject.Singleton import javax.inject.Singleton
@Module(includes = [ApplicationModule::class]) @Module
@InstallIn(ApplicationComponent::class)
class TestModule { class TestModule {
@Provides @Provides
@Singleton @Singleton
@ -30,4 +36,7 @@ class TestModule {
fun getPreferences(@ApplicationContext context: Context): Preferences { fun getPreferences(@ApplicationContext context: Context): Preferences {
return TestUtilities.newPreferences(context) return TestUtilities.newPreferences(context)
} }
@Provides
fun getWorkManager(): WorkManager = mock(WorkManager::class.java)
} }

@ -7,31 +7,34 @@ package org.tasks.jobs
import android.net.Uri import android.net.Uri
import androidx.test.InstrumentationRegistry import androidx.test.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
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.UninstallModules
import org.junit.After import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.R import org.tasks.R
import org.tasks.backup.TasksJsonExporter import org.tasks.backup.TasksJsonExporter
import org.tasks.backup.TasksJsonExporter.ExportType import org.tasks.backup.TasksJsonExporter.ExportType
import org.tasks.injection.InjectingTestCase import org.tasks.injection.InjectingTestCase
import org.tasks.injection.TestComponent import org.tasks.injection.ProductionModule
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import javax.inject.Inject import javax.inject.Inject
@RunWith(AndroidJUnit4::class) @UninstallModules(ProductionModule::class)
@HiltAndroidTest
class BackupServiceTests : InjectingTestCase() { class BackupServiceTests : InjectingTestCase() {
@Inject lateinit var jsonExporter: TasksJsonExporter @Inject lateinit var jsonExporter: TasksJsonExporter
@Inject lateinit var taskDao: TaskDao @Inject lateinit var taskDao: TaskDao
@Inject lateinit var preferences: Preferences @Inject lateinit var preferences: Preferences
private lateinit var temporaryDirectory: File private lateinit var temporaryDirectory: File
@Before
override fun setUp() { override fun setUp() {
super.setUp() super.setUp()
temporaryDirectory = try { temporaryDirectory = try {
@ -55,8 +58,6 @@ class BackupServiceTests : InjectingTestCase() {
taskDao.createNew(task) taskDao.createNew(task)
} }
override fun inject(component: TestComponent) = component.inject(this)
@After @After
fun tearDown() { fun tearDown() {
for (file in temporaryDirectory.listFiles()!!) { for (file in temporaryDirectory.listFiles()!!) {
@ -73,6 +74,6 @@ class BackupServiceTests : InjectingTestCase() {
// assert file created // assert file created
val files = temporaryDirectory.listFiles() val files = temporaryDirectory.listFiles()
assertEquals(1, files!!.size) assertEquals(1, files!!.size)
assertTrue(files[0].name.matches(Regex(BackupWork.BACKUP_FILE_NAME_REGEX))) assertTrue(files[0].name.matches(BackupWork.BACKUP_FILE_NAME_REGEX))
} }
} }

@ -7,7 +7,6 @@ import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.Mockito import org.mockito.Mockito
import org.tasks.Freeze import org.tasks.Freeze
import org.tasks.notifications.Throttle
import org.tasks.time.DateTimeUtils import org.tasks.time.DateTimeUtils
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)

@ -1,7 +1,7 @@
package org.tasks.preferences package org.tasks.preferences
import android.content.Context import android.content.Context
import org.tasks.injection.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
class PermissivePermissionChecker(@ApplicationContext context: Context) : PermissionChecker(context) { class PermissivePermissionChecker(@ApplicationContext context: Context) : PermissionChecker(context) {
override fun canAccessCalendars() = true override fun canAccessCalendars() = true

@ -11,8 +11,8 @@ import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin import com.facebook.flipper.plugins.network.NetworkFlipperPlugin
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin
import com.facebook.soloader.SoLoader import com.facebook.soloader.SoLoader
import dagger.hilt.android.qualifiers.ApplicationContext
import leakcanary.AppWatcher import leakcanary.AppWatcher
import org.tasks.injection.ApplicationContext
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import timber.log.Timber import timber.log.Timber
import timber.log.Timber.DebugTree import timber.log.Timber.DebugTree

@ -6,8 +6,8 @@ import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin import com.facebook.flipper.plugins.network.NetworkFlipperPlugin
import com.google.api.client.http.HttpRequest import com.google.api.client.http.HttpRequest
import com.google.api.client.http.HttpResponse import com.google.api.client.http.HttpResponse
import dagger.hilt.android.qualifiers.ApplicationContext
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import org.tasks.injection.ApplicationContext
import java.io.IOException import java.io.IOException
import javax.inject.Inject import javax.inject.Inject

@ -4,14 +4,15 @@ import android.os.Bundle
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.preference.Preference import androidx.preference.Preference
import at.bitfire.cert4android.CustomCertManager.Companion.resetCertificates import at.bitfire.cert4android.CustomCertManager.Companion.resetCertificates
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.billing.BillingClient import org.tasks.billing.BillingClient
import org.tasks.billing.Inventory import org.tasks.billing.Inventory
import org.tasks.injection.FragmentComponent
import org.tasks.injection.InjectingPreferenceFragment import org.tasks.injection.InjectingPreferenceFragment
import org.tasks.ui.Toaster import org.tasks.ui.Toaster
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint
class Debug : InjectingPreferenceFragment() { class Debug : InjectingPreferenceFragment() {
@Inject lateinit var inventory: Inventory @Inject lateinit var inventory: Inventory
@ -60,6 +61,4 @@ class Debug : InjectingPreferenceFragment() {
} }
} }
} }
override fun inject(component: FragmentComponent) = component.inject(this)
} }

@ -3,12 +3,17 @@ package org.tasks.injection
import android.content.Context import android.content.Context
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.scopes.ActivityScoped
import org.tasks.location.MapFragment import org.tasks.location.MapFragment
import org.tasks.location.MapboxMapFragment import org.tasks.location.MapboxMapFragment
import org.tasks.location.MapboxSearchProvider import org.tasks.location.MapboxSearchProvider
import org.tasks.location.PlaceSearchProvider import org.tasks.location.PlaceSearchProvider
@Module @Module
@InstallIn(ActivityComponent::class)
class LocationModule { class LocationModule {
@Provides @Provides
@ActivityScoped @ActivityScoped

@ -8,10 +8,10 @@ import com.crashlytics.android.Crashlytics
import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.analytics.FirebaseAnalytics
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 dagger.hilt.android.qualifiers.ApplicationContext
import io.fabric.sdk.android.Fabric import io.fabric.sdk.android.Fabric
import org.tasks.R import org.tasks.R
import org.tasks.billing.BillingClientImpl import org.tasks.billing.BillingClientImpl
import org.tasks.injection.ApplicationContext
import org.tasks.jobs.WorkManager import org.tasks.jobs.WorkManager
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import timber.log.Timber import timber.log.Timber

@ -16,13 +16,13 @@ import com.android.billingclient.api.Purchase.PurchasesResult;
import com.android.billingclient.api.PurchasesUpdatedListener; import com.android.billingclient.api.PurchasesUpdatedListener;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import dagger.hilt.android.qualifiers.ApplicationContext;
import io.reactivex.Single; import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import java.util.List; import java.util.List;
import org.tasks.BuildConfig; import org.tasks.BuildConfig;
import org.tasks.analytics.Firebase; import org.tasks.analytics.Firebase;
import org.tasks.injection.ApplicationContext;
import timber.log.Timber; import timber.log.Timber;
@SuppressWarnings("all") @SuppressWarnings("all")

@ -1,8 +1,8 @@
package org.tasks.billing package org.tasks.billing
import android.content.Context import android.content.Context
import dagger.hilt.android.qualifiers.ApplicationContext
import org.tasks.R import org.tasks.R
import org.tasks.injection.ApplicationContext
import timber.log.Timber import timber.log.Timber
import java.io.IOException import java.io.IOException
import javax.inject.Inject import javax.inject.Inject

@ -5,6 +5,7 @@ import android.content.Context
import android.widget.Toast import android.widget.Toast
import com.google.android.gms.common.ConnectionResult import com.google.android.gms.common.ConnectionResult
import com.google.android.gms.common.GoogleApiAvailability import com.google.android.gms.common.GoogleApiAvailability
import dagger.hilt.android.qualifiers.ApplicationContext
import io.reactivex.Single import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable import io.reactivex.disposables.Disposable
@ -13,7 +14,6 @@ import io.reactivex.schedulers.Schedulers
import org.tasks.R import org.tasks.R
import org.tasks.data.GoogleTaskListDao import org.tasks.data.GoogleTaskListDao
import org.tasks.data.LocationDao import org.tasks.data.LocationDao
import org.tasks.injection.ApplicationContext
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject

@ -3,12 +3,17 @@ package org.tasks.injection
import android.content.Context import android.content.Context
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.scopes.ActivityScoped
import org.tasks.billing.Inventory import org.tasks.billing.Inventory
import org.tasks.gtasks.PlayServices import org.tasks.gtasks.PlayServices
import org.tasks.location.* import org.tasks.location.*
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
@Module @Module
@InstallIn(ActivityComponent::class)
internal class LocationModule { internal class LocationModule {
@Provides @Provides
@ActivityScoped @ActivityScoped

@ -7,10 +7,10 @@ import android.content.Intent
import com.google.android.gms.location.Geofence import com.google.android.gms.location.Geofence
import com.google.android.gms.location.GeofencingRequest import com.google.android.gms.location.GeofencingRequest
import com.google.android.gms.location.LocationServices import com.google.android.gms.location.LocationServices
import dagger.hilt.android.qualifiers.ApplicationContext
import org.tasks.data.LocationDao import org.tasks.data.LocationDao
import org.tasks.data.MergedGeofence import org.tasks.data.MergedGeofence
import org.tasks.data.Place import org.tasks.data.Place
import org.tasks.injection.ApplicationContext
import org.tasks.preferences.PermissionChecker import org.tasks.preferences.PermissionChecker
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject

@ -7,16 +7,17 @@ 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 com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.reminders.ReminderService import com.todoroo.astrid.reminders.ReminderService
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.data.Place import org.tasks.data.Place
import org.tasks.injection.ApplicationComponent
import org.tasks.injection.InjectingJobIntentService import org.tasks.injection.InjectingJobIntentService
import org.tasks.notifications.Notification import org.tasks.notifications.Notification
import org.tasks.time.DateTimeUtils import org.tasks.time.DateTimeUtils
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint
class GeofenceTransitionsIntentService : InjectingJobIntentService() { class GeofenceTransitionsIntentService : InjectingJobIntentService() {
@Inject lateinit var locationDao: LocationDao @Inject lateinit var locationDao: LocationDao
@Inject lateinit var notifier: Notifier @Inject lateinit var notifier: Notifier
@ -69,8 +70,6 @@ class GeofenceTransitionsIntentService : InjectingJobIntentService() {
return notification return notification
} }
override fun inject(component: ApplicationComponent) = component.inject(this)
class Broadcast : BroadcastReceiver() { class Broadcast : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) { override fun onReceive(context: Context, intent: Intent) {
enqueueWork( enqueueWork(

@ -17,16 +17,17 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import dagger.hilt.android.AndroidEntryPoint;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.ThemedInjectingAppCompatActivity; import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.preferences.beast.BeastModeRecyclerAdapter; import org.tasks.preferences.beast.BeastModeRecyclerAdapter;
@AndroidEntryPoint
public class BeastModePreferences extends ThemedInjectingAppCompatActivity public class BeastModePreferences extends ThemedInjectingAppCompatActivity
implements Toolbar.OnMenuItemClickListener { implements Toolbar.OnMenuItemClickListener {
@ -102,11 +103,6 @@ public class BeastModePreferences extends ThemedInjectingAppCompatActivity
adapter.applyToRecyclerView(recyclerView); adapter.applyToRecyclerView(recyclerView);
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override @Override
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.menu_reset_to_defaults) { if (item.getItemId() == R.id.menu_reset_to_defaults) {

@ -17,7 +17,6 @@ import android.view.inputmethod.InputMethodManager
import androidx.appcompat.view.ActionMode import androidx.appcompat.view.ActionMode
import androidx.drawerlayout.widget.DrawerLayout.SimpleDrawerListener import androidx.drawerlayout.widget.DrawerLayout.SimpleDrawerListener
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.lifecycle.ViewModelProvider
import com.todoroo.andlib.utility.AndroidUtilities import com.todoroo.andlib.utility.AndroidUtilities
import com.todoroo.astrid.activity.TaskEditFragment.TaskEditFragmentCallbackHandler import com.todoroo.astrid.activity.TaskEditFragment.TaskEditFragmentCallbackHandler
import com.todoroo.astrid.activity.TaskListFragment.TaskListFragmentCallbackHandler import com.todoroo.astrid.activity.TaskListFragment.TaskListFragmentCallbackHandler
@ -26,6 +25,7 @@ import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import com.todoroo.astrid.service.TaskCreator import com.todoroo.astrid.service.TaskCreator
import com.todoroo.astrid.timers.TimerControlSet.TimerControlSetCallback import com.todoroo.astrid.timers.TimerControlSet.TimerControlSetCallback
import dagger.hilt.android.AndroidEntryPoint
import io.reactivex.Single import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.CompositeDisposable
@ -42,7 +42,6 @@ import org.tasks.dialogs.WhatsNewDialog
import org.tasks.filters.PlaceFilter import org.tasks.filters.PlaceFilter
import org.tasks.fragments.CommentBarFragment.CommentBarFragmentCallback import org.tasks.fragments.CommentBarFragment.CommentBarFragmentCallback
import org.tasks.gtasks.PlayServices import org.tasks.gtasks.PlayServices
import org.tasks.injection.ActivityComponent
import org.tasks.injection.InjectingAppCompatActivity import org.tasks.injection.InjectingAppCompatActivity
import org.tasks.intents.TaskIntents import org.tasks.intents.TaskIntents
import org.tasks.location.LocationPickerActivity import org.tasks.location.LocationPickerActivity
@ -57,9 +56,9 @@ import org.tasks.ui.DeadlineControlSet.DueDateChangeListener
import org.tasks.ui.EmptyTaskEditFragment.Companion.newEmptyTaskEditFragment import org.tasks.ui.EmptyTaskEditFragment.Companion.newEmptyTaskEditFragment
import org.tasks.ui.ListFragment.OnListChanged import org.tasks.ui.ListFragment.OnListChanged
import org.tasks.ui.NavigationDrawerFragment import org.tasks.ui.NavigationDrawerFragment
import org.tasks.ui.TaskListViewModel
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint
class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandler, OnListChanged, TimerControlSetCallback, DueDateChangeListener, TaskEditFragmentCallbackHandler, CommentBarFragmentCallback, SortDialogCallback { class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandler, OnListChanged, TimerControlSetCallback, DueDateChangeListener, TaskEditFragmentCallbackHandler, CommentBarFragmentCallback, SortDialogCallback {
@Inject lateinit var preferences: Preferences @Inject lateinit var preferences: Preferences
@Inject lateinit var repeatConfirmationReceiver: RepeatConfirmationReceiver @Inject lateinit var repeatConfirmationReceiver: RepeatConfirmationReceiver
@ -83,8 +82,7 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
*/ */
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val viewModel = ViewModelProvider(this).get(TaskListViewModel::class.java) theme.applyTheme(this)
component.inject(viewModel)
currentNightMode = nightMode currentNightMode = nightMode
currentPro = inventory.hasPro() currentPro = inventory.hasPro()
binding = TaskListActivityBinding.inflate(layoutInflater) binding = TaskListActivityBinding.inflate(layoutInflater)
@ -301,11 +299,6 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
private val nightMode: Int private val nightMode: Int
get() = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK get() = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
override fun inject(component: ActivityComponent) {
component.inject(this)
theme.applyTheme(this)
}
override fun onPause() { override fun onPause() {
super.onPause() super.onPause()
localBroadcastManager.unregisterReceiver(repeatConfirmationReceiver) localBroadcastManager.unregisterReceiver(repeatConfirmationReceiver)

@ -16,12 +16,12 @@ import androidx.core.app.TaskStackBuilder;
import com.google.common.io.Files; import com.google.common.io.Files;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskCreator; import com.todoroo.astrid.service.TaskCreator;
import dagger.hilt.android.AndroidEntryPoint;
import dagger.hilt.android.qualifiers.ApplicationContext;
import java.util.ArrayList; import java.util.ArrayList;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.data.TaskAttachment; import org.tasks.data.TaskAttachment;
import org.tasks.files.FileHelper; import org.tasks.files.FileHelper;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.ApplicationContext;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import timber.log.Timber; import timber.log.Timber;
@ -30,6 +30,7 @@ import timber.log.Timber;
* @author joshuagross * @author joshuagross
* <p>Create a new task based on incoming links from the "share" menu * <p>Create a new task based on incoming links from the "share" menu
*/ */
@AndroidEntryPoint
public final class ShareLinkActivity extends InjectingAppCompatActivity { public final class ShareLinkActivity extends InjectingAppCompatActivity {
@Inject @ApplicationContext Context context; @Inject @ApplicationContext Context context;
@ -49,11 +50,6 @@ public final class ShareLinkActivity extends InjectingAppCompatActivity {
readIntent(); readIntent();
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override @Override
protected void onNewIntent(Intent intent) { protected void onNewIntent(Intent intent) {
super.onNewIntent(intent); super.onNewIntent(intent);

@ -2,15 +2,16 @@ package com.todoroo.astrid.activity;
import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.service.TaskCreator; import com.todoroo.astrid.service.TaskCreator;
import dagger.hilt.android.AndroidEntryPoint;
import io.reactivex.Single; import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.intents.TaskIntents; import org.tasks.intents.TaskIntents;
@AndroidEntryPoint
public class TaskEditActivity extends InjectingAppCompatActivity { public class TaskEditActivity extends InjectingAppCompatActivity {
private static final String TOKEN_ID = "id"; private static final String TOKEN_ID = "id";
@ -49,9 +50,4 @@ public class TaskEditActivity extends InjectingAppCompatActivity {
disposables.dispose(); disposables.dispose();
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
} }

@ -34,6 +34,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction; import androidx.fragment.app.FragmentTransaction;
import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.appbar.AppBarLayout;
@ -46,6 +47,7 @@ import com.todoroo.astrid.notes.CommentsController;
import com.todoroo.astrid.repeats.RepeatControlSet; import com.todoroo.astrid.repeats.RepeatControlSet;
import com.todoroo.astrid.service.TaskDeleter; import com.todoroo.astrid.service.TaskDeleter;
import com.todoroo.astrid.timers.TimerPlugin; import com.todoroo.astrid.timers.TimerPlugin;
import dagger.hilt.android.AndroidEntryPoint;
import io.reactivex.Completable; import io.reactivex.Completable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
@ -59,16 +61,14 @@ import org.tasks.databinding.FragmentTaskEditBinding;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.dialogs.Linkify; import org.tasks.dialogs.Linkify;
import org.tasks.fragments.TaskEditControlSetFragmentManager; import org.tasks.fragments.TaskEditControlSetFragmentManager;
import org.tasks.injection.ActivityContext;
import org.tasks.injection.FragmentComponent;
import org.tasks.injection.InjectingFragment;
import org.tasks.notifications.NotificationManager; import org.tasks.notifications.NotificationManager;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.themes.ThemeColor; import org.tasks.themes.ThemeColor;
import org.tasks.ui.SubtaskControlSet; import org.tasks.ui.SubtaskControlSet;
import org.tasks.ui.TaskEditControlFragment; import org.tasks.ui.TaskEditControlFragment;
public final class TaskEditFragment extends InjectingFragment @AndroidEntryPoint
public final class TaskEditFragment extends Fragment
implements Toolbar.OnMenuItemClickListener { implements Toolbar.OnMenuItemClickListener {
static final String TAG_TASKEDIT_FRAGMENT = "taskedit_fragment"; static final String TAG_TASKEDIT_FRAGMENT = "taskedit_fragment";
@ -81,7 +81,7 @@ public final class TaskEditFragment extends InjectingFragment
@Inject TaskDeleter taskDeleter; @Inject TaskDeleter taskDeleter;
@Inject NotificationManager notificationManager; @Inject NotificationManager notificationManager;
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
@Inject @ActivityContext Context context; @Inject Activity context;
@Inject TaskEditControlSetFragmentManager taskEditControlSetFragmentManager; @Inject TaskEditControlSetFragmentManager taskEditControlSetFragmentManager;
@Inject CommentsController commentsController; @Inject CommentsController commentsController;
@Inject Preferences preferences; @Inject Preferences preferences;
@ -118,11 +118,6 @@ public final class TaskEditFragment extends InjectingFragment
outState.putBoolean(EXTRA_COMPLETED, completed); outState.putBoolean(EXTRA_COMPLETED, completed);
} }
@Override
protected void inject(FragmentComponent component) {
component.inject(this);
}
@Override @Override
public View onCreateView( public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

@ -19,6 +19,7 @@ import androidx.appcompat.view.ActionMode
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.paging.PagedList import androidx.paging.PagedList
@ -44,6 +45,7 @@ import com.todoroo.astrid.service.TaskDuplicator
import com.todoroo.astrid.service.TaskMover import com.todoroo.astrid.service.TaskMover
import com.todoroo.astrid.timers.TimerPlugin import com.todoroo.astrid.timers.TimerPlugin
import com.todoroo.astrid.utility.Flags import com.todoroo.astrid.utility.Flags
import dagger.hilt.android.AndroidEntryPoint
import io.reactivex.Single import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.CompositeDisposable
@ -63,8 +65,6 @@ import org.tasks.dialogs.DateTimePicker.Companion.newDateTimePicker
import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.DialogBuilder
import org.tasks.dialogs.SortDialog import org.tasks.dialogs.SortDialog
import org.tasks.filters.PlaceFilter import org.tasks.filters.PlaceFilter
import org.tasks.injection.FragmentComponent
import org.tasks.injection.InjectingFragment
import org.tasks.intents.TaskIntents import org.tasks.intents.TaskIntents
import org.tasks.notifications.NotificationManager import org.tasks.notifications.NotificationManager
import org.tasks.preferences.Device import org.tasks.preferences.Device
@ -84,7 +84,8 @@ import java.util.concurrent.TimeUnit
import javax.inject.Inject import javax.inject.Inject
import kotlin.math.max import kotlin.math.max
class TaskListFragment : InjectingFragment(), OnRefreshListener, Toolbar.OnMenuItemClickListener, MenuItem.OnActionExpandListener, SearchView.OnQueryTextListener, ActionMode.Callback { @AndroidEntryPoint
class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickListener, MenuItem.OnActionExpandListener, SearchView.OnQueryTextListener, ActionMode.Callback {
private val refreshReceiver = RefreshReceiver() private val refreshReceiver = RefreshReceiver()
private var disposables: CompositeDisposable? = null private var disposables: CompositeDisposable? = null
@ -176,8 +177,6 @@ class TaskListFragment : InjectingFragment(), OnRefreshListener, Toolbar.OnMenuI
callbacks = activity as TaskListFragmentCallbackHandler callbacks = activity as TaskListFragmentCallbackHandler
} }
public override fun inject(component: FragmentComponent) = component.inject(this)
override fun onSaveInstanceState(outState: Bundle) { override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState) super.onSaveInstanceState(outState)
val selectedTaskIds: List<Long> = taskAdapter.getSelected() val selectedTaskIds: List<Long> = taskAdapter.getSelected()

@ -10,13 +10,13 @@ import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task.Companion.isUuidEmpty import com.todoroo.astrid.data.Task.Companion.isUuidEmpty
import com.todoroo.astrid.subtasks.SubtasksFilterUpdater import com.todoroo.astrid.subtasks.SubtasksFilterUpdater
import com.todoroo.astrid.subtasks.SubtasksHelper import com.todoroo.astrid.subtasks.SubtasksHelper
import dagger.hilt.android.qualifiers.ApplicationContext
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.Strings.isNullOrEmpty import org.tasks.Strings.isNullOrEmpty
import org.tasks.data.CaldavDao import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTaskDao import org.tasks.data.GoogleTaskDao
import org.tasks.data.TaskListMetadata import org.tasks.data.TaskListMetadata
import org.tasks.data.TaskListMetadataDao import org.tasks.data.TaskListMetadataDao
import org.tasks.injection.ApplicationContext
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import javax.inject.Inject import javax.inject.Inject

@ -17,6 +17,7 @@ import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.timers.TimerPlugin; import com.todoroo.astrid.timers.TimerPlugin;
import dagger.hilt.android.qualifiers.ApplicationContext;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -25,7 +26,6 @@ import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.filters.RecentlyModifiedFilter; import org.tasks.filters.RecentlyModifiedFilter;
import org.tasks.filters.SortableFilter; import org.tasks.filters.SortableFilter;
import org.tasks.injection.ApplicationContext;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.themes.CustomIcons; import org.tasks.themes.CustomIcons;

@ -7,7 +7,6 @@ package com.todoroo.astrid.files
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
@ -19,21 +18,21 @@ import android.widget.TextView
import butterknife.BindView import butterknife.BindView
import butterknife.OnClick import butterknife.OnClick
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.data.TaskAttachment import org.tasks.data.TaskAttachment
import org.tasks.data.TaskAttachmentDao import org.tasks.data.TaskAttachmentDao
import org.tasks.dialogs.AddAttachmentDialog import org.tasks.dialogs.AddAttachmentDialog
import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.DialogBuilder
import org.tasks.files.FileHelper import org.tasks.files.FileHelper
import org.tasks.injection.ActivityContext
import org.tasks.injection.FragmentComponent
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.ui.TaskEditControlFragment import org.tasks.ui.TaskEditControlFragment
import java.util.* import java.util.*
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint
class FilesControlSet : TaskEditControlFragment() { class FilesControlSet : TaskEditControlFragment() {
@Inject @ActivityContext lateinit var activity: Context @Inject lateinit var activity: Activity
@Inject lateinit var taskAttachmentDao: TaskAttachmentDao @Inject lateinit var taskAttachmentDao: TaskAttachmentDao
@Inject lateinit var dialogBuilder: DialogBuilder @Inject lateinit var dialogBuilder: DialogBuilder
@Inject lateinit var preferences: Preferences @Inject lateinit var preferences: Preferences
@ -128,8 +127,6 @@ class FilesControlSet : TaskEditControlFragment() {
} }
} }
override fun inject(component: FragmentComponent) = component.inject(this)
@SuppressLint("NewApi") @SuppressLint("NewApi")
private fun showFile(m: TaskAttachment) { private fun showFile(m: TaskAttachment) {
FileHelper.startActionView(requireActivity(), m.parseUri()) FileHelper.startActionView(requireActivity(), m.parseUri())

@ -6,6 +6,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import dagger.hilt.android.AndroidEntryPoint;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.BuildConfig; import org.tasks.BuildConfig;
@ -14,12 +15,12 @@ import org.tasks.calendars.AndroidCalendarEvent;
import org.tasks.calendars.AndroidCalendarEventAttendee; import org.tasks.calendars.AndroidCalendarEventAttendee;
import org.tasks.calendars.CalendarEventProvider; import org.tasks.calendars.CalendarEventProvider;
import org.tasks.gtasks.GoogleAccountManager; import org.tasks.gtasks.GoogleAccountManager;
import org.tasks.injection.ApplicationComponent;
import org.tasks.injection.InjectingBroadcastReceiver; import org.tasks.injection.InjectingBroadcastReceiver;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.scheduling.CalendarNotificationIntentService; import org.tasks.scheduling.CalendarNotificationIntentService;
import timber.log.Timber; import timber.log.Timber;
@AndroidEntryPoint
public class CalendarAlarmReceiver extends InjectingBroadcastReceiver { public class CalendarAlarmReceiver extends InjectingBroadcastReceiver {
public static final int REQUEST_CODE_CAL_REMINDER = 100; public static final int REQUEST_CODE_CAL_REMINDER = 100;
@ -63,11 +64,6 @@ public class CalendarAlarmReceiver extends InjectingBroadcastReceiver {
} }
} }
@Override
protected void inject(ApplicationComponent component) {
component.inject(this);
}
private void showCalReminder(Context context, final long eventId, final boolean fromPostpone) { private void showCalReminder(Context context, final long eventId, final boolean fromPostpone) {
final AndroidCalendarEvent event = calendarEventProvider.getEvent(eventId); final AndroidCalendarEvent event = calendarEventProvider.getEvent(eventId);
if (event == null) { if (event == null) {

@ -9,10 +9,10 @@ import android.view.View.OnClickListener;
import android.widget.TextView; import android.widget.TextView;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.MainActivity; import com.todoroo.astrid.activity.MainActivity;
import dagger.hilt.android.AndroidEntryPoint;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.ThemedInjectingAppCompatActivity; import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.preferences.MainPreferences; import org.tasks.preferences.MainPreferences;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
@ -20,6 +20,7 @@ import org.tasks.scheduling.AlarmManager;
import org.tasks.scheduling.CalendarNotificationIntentService; import org.tasks.scheduling.CalendarNotificationIntentService;
import org.tasks.themes.ThemeAccent; import org.tasks.themes.ThemeAccent;
@AndroidEntryPoint
public class CalendarReminderActivity extends ThemedInjectingAppCompatActivity { public class CalendarReminderActivity extends ThemedInjectingAppCompatActivity {
public static final String TOKEN_EVENT_ID = "eventId"; public static final String TOKEN_EVENT_ID = "eventId";
@ -97,11 +98,6 @@ public class CalendarReminderActivity extends ThemedInjectingAppCompatActivity {
addListeners(); addListeners();
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
private void setupUi() { private void setupUi() {
((TextView) findViewById(R.id.reminder_title)).setText(getString(R.string.CRA_title)); ((TextView) findViewById(R.id.reminder_title)).setText(getString(R.string.CRA_title));

@ -17,12 +17,12 @@ import android.text.format.Time;
import com.todoroo.andlib.utility.DateUtilities; 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 dagger.hilt.android.qualifiers.ApplicationContext;
import java.util.TimeZone; import java.util.TimeZone;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.calendars.AndroidCalendarEvent; import org.tasks.calendars.AndroidCalendarEvent;
import org.tasks.calendars.CalendarEventProvider; import org.tasks.calendars.CalendarEventProvider;
import org.tasks.injection.ApplicationContext;
import org.tasks.preferences.PermissionChecker; import org.tasks.preferences.PermissionChecker;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import timber.log.Timber; import timber.log.Timber;

@ -34,10 +34,6 @@ public class GtasksListService {
this.localBroadcastManager = localBroadcastManager; this.localBroadcastManager = localBroadcastManager;
} }
public GoogleTaskList getList(long id) {
return googleTaskListDao.getById(id);
}
/** /**
* Reads in remote list information and updates local list objects. * Reads in remote list information and updates local list objects.
* *
@ -89,8 +85,4 @@ public class GtasksListService {
localBroadcastManager.broadcastRefreshList(); localBroadcastManager.broadcastRefreshList();
} }
public GoogleTaskList getList(String listId) {
return googleTaskListDao.getByRemoteId(listId);
}
} }

@ -13,12 +13,12 @@ import com.google.api.services.tasks.TasksScopes;
import com.google.api.services.tasks.model.Task; import com.google.api.services.tasks.model.Task;
import com.google.api.services.tasks.model.TaskList; import com.google.api.services.tasks.model.TaskList;
import com.google.api.services.tasks.model.TaskLists; import com.google.api.services.tasks.model.TaskLists;
import dagger.hilt.android.qualifiers.ApplicationContext;
import java.io.IOException; import java.io.IOException;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.BuildConfig; import org.tasks.BuildConfig;
import org.tasks.DebugNetworkInterceptor; import org.tasks.DebugNetworkInterceptor;
import org.tasks.gtasks.GoogleAccountManager; import org.tasks.gtasks.GoogleAccountManager;
import org.tasks.injection.ApplicationContext;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import timber.log.Timber; import timber.log.Timber;

@ -13,13 +13,13 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
import dagger.hilt.android.AndroidEntryPoint;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.data.GoogleTaskAccount; import org.tasks.data.GoogleTaskAccount;
import org.tasks.data.GoogleTaskListDao; import org.tasks.data.GoogleTaskListDao;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.gtasks.GoogleAccountManager; import org.tasks.gtasks.GoogleAccountManager;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.play.AuthResultHandler; import org.tasks.play.AuthResultHandler;
import org.tasks.preferences.ActivityPermissionRequestor; import org.tasks.preferences.ActivityPermissionRequestor;
@ -31,6 +31,7 @@ import org.tasks.preferences.PermissionRequestor;
* *
* @author Sam Bosley * @author Sam Bosley
*/ */
@AndroidEntryPoint
public class GtasksLoginActivity extends InjectingAppCompatActivity { public class GtasksLoginActivity extends InjectingAppCompatActivity {
public static final String EXTRA_ERROR = "extra_error"; public static final String EXTRA_ERROR = "extra_error";
@ -49,11 +50,6 @@ public class GtasksLoginActivity extends InjectingAppCompatActivity {
} }
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
private void chooseAccount() { private void chooseAccount() {
Intent chooseAccountIntent = Intent chooseAccountIntent =
android.accounts.AccountManager.newChooseAccountIntent( android.accounts.AccountManager.newChooseAccountIntent(

@ -6,6 +6,7 @@
package com.todoroo.astrid.provider; package com.todoroo.astrid.provider;
import android.content.ContentProvider;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.UriMatcher; import android.content.UriMatcher;
@ -17,19 +18,19 @@ import androidx.annotation.NonNull;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
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.Lazy; import dagger.hilt.EntryPoint;
import dagger.hilt.InstallIn;
import dagger.hilt.android.EntryPointAccessors;
import dagger.hilt.android.components.ApplicationComponent;
import java.math.BigInteger; import java.math.BigInteger;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import org.tasks.BuildConfig; import org.tasks.BuildConfig;
import org.tasks.R; import org.tasks.R;
import org.tasks.data.TagDao; import org.tasks.data.TagDao;
import org.tasks.data.TagData; import org.tasks.data.TagData;
import org.tasks.data.TagDataDao; import org.tasks.data.TagDataDao;
import org.tasks.injection.ApplicationComponent;
import org.tasks.injection.InjectingContentProvider;
import timber.log.Timber; import timber.log.Timber;
/** /**
@ -40,7 +41,15 @@ import timber.log.Timber;
* *
* @author Tim Su <tim@todoroo.com> * @author Tim Su <tim@todoroo.com>
*/ */
public class Astrid2TaskProvider extends InjectingContentProvider { public class Astrid2TaskProvider extends ContentProvider {
@EntryPoint
@InstallIn(ApplicationComponent.class)
interface Astrid2TaskProviderEntryPoint {
TagDataDao getTagDataDao();
TaskDao getTaskDao();
TagDao getTagDao();
}
private static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".tasksprovider"; private static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".tasksprovider";
@ -81,10 +90,6 @@ public class Astrid2TaskProvider extends InjectingContentProvider {
URI_MATCHER.addURI(AUTHORITY, "tags", URI_TAGS); URI_MATCHER.addURI(AUTHORITY, "tags", URI_TAGS);
} }
@Inject Lazy<TagDataDao> tagDataDao;
@Inject Lazy<TaskDao> taskDao;
@Inject Lazy<TagDao> tagDao;
public static void notifyDatabaseModification(Context context) { public static void notifyDatabaseModification(Context context) {
try { try {
context.getContentResolver().notifyChange(CONTENT_URI, null); context.getContentResolver().notifyChange(CONTENT_URI, null);
@ -110,13 +115,12 @@ public class Astrid2TaskProvider extends InjectingContentProvider {
@Override @Override
public boolean onCreate() { public boolean onCreate() {
super.onCreate(); return true;
return false;
} }
@Override private Astrid2TaskProviderEntryPoint hilt() {
protected void inject(ApplicationComponent component) { return EntryPointAccessors.fromApplication(
component.inject(this); getContext().getApplicationContext(), Astrid2TaskProviderEntryPoint.class);
} }
/** /**
@ -125,7 +129,7 @@ public class Astrid2TaskProvider extends InjectingContentProvider {
* @return two-column cursor: tag id (string) and tag name * @return two-column cursor: tag id (string) and tag name
*/ */
private Cursor getTags() { private Cursor getTags() {
List<TagData> tags = tagDataDao.get().tagDataOrderedByName(); List<TagData> tags = hilt().getTagDataDao().tagDataOrderedByName();
MatrixCursor ret = new MatrixCursor(TAGS_FIELD_LIST); MatrixCursor ret = new MatrixCursor(TAGS_FIELD_LIST);
@ -170,7 +174,7 @@ public class Astrid2TaskProvider extends InjectingContentProvider {
*/ */
private Cursor getTasks() { private Cursor getTasks() {
MatrixCursor ret = new MatrixCursor(TASK_FIELD_LIST); MatrixCursor ret = new MatrixCursor(TASK_FIELD_LIST);
List<Task> tasks = taskDao.get().getAstrid2TaskProviderTasks(); List<Task> tasks = hilt().getTaskDao().getAstrid2TaskProviderTasks();
for (Task task : tasks) { for (Task task : tasks) {
String taskTags = getTagsAsString(task.getId(), TAG_SEPARATOR); String taskTags = getTagsAsString(task.getId(), TAG_SEPARATOR);
@ -233,6 +237,6 @@ public class Astrid2TaskProvider extends InjectingContentProvider {
* @return empty string if no tags, otherwise string * @return empty string if no tags, otherwise string
*/ */
private String getTagsAsString(long taskId, String separator) { private String getTagsAsString(long taskId, String separator) {
return Joiner.on(separator).join(tagDao.get().getTagNames(taskId)); return Joiner.on(separator).join(hilt().getTagDao().getTagNames(taskId));
} }
} }

@ -5,7 +5,7 @@
*/ */
package com.todoroo.astrid.repeats package com.todoroo.astrid.repeats
import android.content.Context import android.app.Activity
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -20,12 +20,11 @@ import com.google.ical.values.Frequency
import com.google.ical.values.RRule import com.google.ical.values.RRule
import com.google.ical.values.WeekdayNum import com.google.ical.values.WeekdayNum
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.Strings.isNullOrEmpty import org.tasks.Strings.isNullOrEmpty
import org.tasks.analytics.Firebase import org.tasks.analytics.Firebase
import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.DialogBuilder
import org.tasks.injection.ActivityContext
import org.tasks.injection.FragmentComponent
import org.tasks.repeats.BasicRecurrenceDialog import org.tasks.repeats.BasicRecurrenceDialog
import org.tasks.repeats.RepeatRuleToString import org.tasks.repeats.RepeatRuleToString
import org.tasks.themes.Theme import org.tasks.themes.Theme
@ -42,10 +41,11 @@ import javax.inject.Inject
* *
* @author Tim Su <tim></tim>@todoroo.com> * @author Tim Su <tim></tim>@todoroo.com>
*/ */
@AndroidEntryPoint
class RepeatControlSet : TaskEditControlFragment() { class RepeatControlSet : TaskEditControlFragment() {
private val repeatTypes: MutableList<String> = ArrayList() private val repeatTypes: MutableList<String> = ArrayList()
@Inject @ActivityContext lateinit var activity: Context @Inject lateinit var activity: Activity
@Inject lateinit var dialogBuilder: DialogBuilder @Inject lateinit var dialogBuilder: DialogBuilder
@Inject lateinit var theme: Theme @Inject lateinit var theme: Theme
@Inject lateinit var firebase: Firebase @Inject lateinit var firebase: Firebase
@ -158,8 +158,6 @@ class RepeatControlSet : TaskEditControlFragment() {
outState.putLong(EXTRA_DUE_DATE, dueDate) outState.putLong(EXTRA_DUE_DATE, dueDate)
} }
override fun inject(component: FragmentComponent) = component.inject(this)
override fun onRowClick() { override fun onRowClick() {
BasicRecurrenceDialog.newBasicRecurrenceDialog(this, rrule, dueDate) BasicRecurrenceDialog.newBasicRecurrenceDialog(this, rrule, dueDate)
.show(parentFragmentManager, FRAG_TAG_BASIC_RECURRENCE) .show(parentFragmentManager, FRAG_TAG_BASIC_RECURRENCE)

@ -7,11 +7,11 @@ import com.todoroo.astrid.api.Filter
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 com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import dagger.hilt.android.qualifiers.ApplicationContext
import org.tasks.BuildConfig import org.tasks.BuildConfig
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.data.* import org.tasks.data.*
import org.tasks.db.DbUtils.dbchunk import org.tasks.db.DbUtils.dbchunk
import org.tasks.injection.ApplicationContext
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import java.util.* import java.util.*
import javax.inject.Inject import javax.inject.Inject

@ -7,6 +7,7 @@ import com.google.common.collect.ListMultimap
import com.google.common.collect.Multimaps import com.google.common.collect.Multimaps
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.hilt.android.qualifiers.ApplicationContext
import org.tasks.R import org.tasks.R
import org.tasks.Strings.isNullOrEmpty import org.tasks.Strings.isNullOrEmpty
import org.tasks.caldav.iCalendar import org.tasks.caldav.iCalendar
@ -14,7 +15,6 @@ import org.tasks.caldav.iCalendar.Companion.fromVtodo
import org.tasks.caldav.iCalendar.Companion.getParent import org.tasks.caldav.iCalendar.Companion.getParent
import org.tasks.caldav.iCalendar.Companion.order import org.tasks.caldav.iCalendar.Companion.order
import org.tasks.data.* import org.tasks.data.*
import org.tasks.injection.ApplicationContext
import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.widget.AppWidgetManager import org.tasks.widget.AppWidgetManager

@ -9,6 +9,7 @@ import com.todoroo.astrid.core.BuiltInFilterExposer;
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.subtasks.SubtasksFilterUpdater.Node; import com.todoroo.astrid.subtasks.SubtasksFilterUpdater.Node;
import dagger.hilt.android.qualifiers.ApplicationContext;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -18,7 +19,6 @@ import org.tasks.data.TagData;
import org.tasks.data.TagDataDao; import org.tasks.data.TagDataDao;
import org.tasks.data.TaskListMetadata; import org.tasks.data.TaskListMetadata;
import org.tasks.data.TaskListMetadataDao; import org.tasks.data.TaskListMetadataDao;
import org.tasks.injection.ApplicationContext;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import timber.log.Timber; import timber.log.Timber;

@ -16,11 +16,11 @@ import butterknife.BindView
import com.google.android.material.chip.ChipGroup import com.google.android.material.chip.ChipGroup
import com.todoroo.andlib.utility.DateUtilities import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.data.TagDao import org.tasks.data.TagDao
import org.tasks.data.TagData import org.tasks.data.TagData
import org.tasks.data.TagDataDao import org.tasks.data.TagDataDao
import org.tasks.injection.FragmentComponent
import org.tasks.tags.TagPickerActivity import org.tasks.tags.TagPickerActivity
import org.tasks.ui.ChipProvider import org.tasks.ui.ChipProvider
import org.tasks.ui.TaskEditControlFragment import org.tasks.ui.TaskEditControlFragment
@ -32,6 +32,7 @@ import javax.inject.Inject
* *
* @author Tim Su <tim></tim>@todoroo.com> * @author Tim Su <tim></tim>@todoroo.com>
*/ */
@AndroidEntryPoint
class TagsControlSet : TaskEditControlFragment() { class TagsControlSet : TaskEditControlFragment() {
@Inject lateinit var tagDao: TagDao @Inject lateinit var tagDao: TagDao
@Inject lateinit var tagDataDao: TagDataDao @Inject lateinit var tagDataDao: TagDataDao
@ -129,8 +130,6 @@ class TagsControlSet : TaskEditControlFragment() {
} }
} }
override fun inject(component: FragmentComponent) = component.inject(this)
override fun requiresId() = true override fun requiresId() = true
companion object { companion object {

@ -6,7 +6,6 @@
package com.todoroo.astrid.timers package com.todoroo.astrid.timers
import android.app.Activity import android.app.Activity
import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.os.SystemClock import android.os.SystemClock
import android.text.format.DateFormat import android.text.format.DateFormat
@ -24,11 +23,10 @@ import butterknife.OnClick
import com.todoroo.andlib.utility.DateUtilities import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import com.todoroo.astrid.ui.TimeDurationControlSet import com.todoroo.astrid.ui.TimeDurationControlSet
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.Strings.isNullOrEmpty import org.tasks.Strings.isNullOrEmpty
import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.DialogBuilder
import org.tasks.injection.ActivityContext
import org.tasks.injection.FragmentComponent
import org.tasks.themes.Theme import org.tasks.themes.Theme
import org.tasks.ui.TaskEditControlFragment import org.tasks.ui.TaskEditControlFragment
import javax.inject.Inject import javax.inject.Inject
@ -38,8 +36,9 @@ import javax.inject.Inject
* *
* @author Tim Su <tim></tim>@todoroo.com> * @author Tim Su <tim></tim>@todoroo.com>
*/ */
@AndroidEntryPoint
class TimerControlSet : TaskEditControlFragment() { class TimerControlSet : TaskEditControlFragment() {
@Inject @ActivityContext lateinit var activity: Context @Inject lateinit var activity: Activity
@Inject lateinit var dialogBuilder: DialogBuilder @Inject lateinit var dialogBuilder: DialogBuilder
@Inject lateinit var theme: Theme @Inject lateinit var theme: Theme
@ -87,8 +86,6 @@ class TimerControlSet : TaskEditControlFragment() {
callback = activity as TimerControlSetCallback callback = activity as TimerControlSetCallback
} }
override fun inject(component: FragmentComponent) = component.inject(this)
override fun onSaveInstanceState(outState: Bundle) { override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState) super.onSaveInstanceState(outState)
outState.putInt(EXTRA_ELAPSED, elapsed.timeDurationInSeconds) outState.putInt(EXTRA_ELAPSED, elapsed.timeDurationInSeconds)

@ -20,11 +20,11 @@ import com.todoroo.astrid.api.Filter;
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.utility.Constants; import com.todoroo.astrid.utility.Constants;
import dagger.hilt.android.qualifiers.ApplicationContext;
import io.reactivex.Completable; import io.reactivex.Completable;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.ApplicationContext;
import org.tasks.intents.TaskIntents; import org.tasks.intents.TaskIntents;
import org.tasks.notifications.NotificationManager; import org.tasks.notifications.NotificationManager;

@ -6,7 +6,6 @@
package com.todoroo.astrid.ui package com.todoroo.astrid.ui
import android.app.Activity import android.app.Activity
import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
@ -18,12 +17,11 @@ import butterknife.BindView
import butterknife.OnClick import butterknife.OnClick
import com.todoroo.andlib.utility.DateUtilities import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.activities.DateAndTimePickerActivity import org.tasks.activities.DateAndTimePickerActivity
import org.tasks.date.DateTimeUtils import org.tasks.date.DateTimeUtils
import org.tasks.dialogs.MyTimePickerDialog import org.tasks.dialogs.MyTimePickerDialog
import org.tasks.injection.ActivityContext
import org.tasks.injection.FragmentComponent
import org.tasks.locale.Locale import org.tasks.locale.Locale
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.themes.ThemeBase import org.tasks.themes.ThemeBase
@ -37,10 +35,11 @@ import javax.inject.Inject
* *
* @author Tim Su <tim></tim>@todoroo.com> * @author Tim Su <tim></tim>@todoroo.com>
*/ */
@AndroidEntryPoint
class HideUntilControlSet : TaskEditControlFragment(), OnItemSelectedListener { class HideUntilControlSet : TaskEditControlFragment(), OnItemSelectedListener {
private val spinnerItems: MutableList<HideUntilValue> = ArrayList() private val spinnerItems: MutableList<HideUntilValue> = ArrayList()
@Inject @ActivityContext lateinit var activity: Context @Inject lateinit var activity: Activity
@Inject lateinit var themeBase: ThemeBase @Inject lateinit var themeBase: ThemeBase
@Inject lateinit var preferences: Preferences @Inject lateinit var preferences: Preferences
@Inject lateinit var locale: Locale @Inject lateinit var locale: Locale
@ -181,10 +180,6 @@ class HideUntilControlSet : TaskEditControlFragment(), OnItemSelectedListener {
outState.putInt(EXTRA_SELECTION, selection) outState.putInt(EXTRA_SELECTION, selection)
} }
override fun inject(component: FragmentComponent) {
component.inject(this)
}
private fun updateSpinnerOptions(specificDate: Long) { private fun updateSpinnerOptions(specificDate: Long) {
spinnerItems.clear() spinnerItems.clear()
// set up base values // set up base values

@ -6,7 +6,6 @@
package com.todoroo.astrid.ui package com.todoroo.astrid.ui
import android.app.Activity import android.app.Activity
import android.content.Context
import android.content.DialogInterface import android.content.DialogInterface
import android.content.Intent import android.content.Intent
import android.graphics.Paint import android.graphics.Paint
@ -22,14 +21,13 @@ import butterknife.OnClick
import com.todoroo.andlib.utility.DateUtilities import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.alarms.AlarmService import com.todoroo.astrid.alarms.AlarmService
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.activities.DateAndTimePickerActivity import org.tasks.activities.DateAndTimePickerActivity
import org.tasks.data.Alarm import org.tasks.data.Alarm
import org.tasks.date.DateTimeUtils import org.tasks.date.DateTimeUtils
import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.DialogBuilder
import org.tasks.dialogs.MyTimePickerDialog import org.tasks.dialogs.MyTimePickerDialog
import org.tasks.injection.ActivityContext
import org.tasks.injection.FragmentComponent
import org.tasks.locale.Locale import org.tasks.locale.Locale
import org.tasks.ui.TaskEditControlFragment import org.tasks.ui.TaskEditControlFragment
import java.util.* import java.util.*
@ -41,10 +39,11 @@ import javax.inject.Inject
* *
* @author Tim Su <tim></tim>@todoroo.com> * @author Tim Su <tim></tim>@todoroo.com>
*/ */
@AndroidEntryPoint
class ReminderControlSet : TaskEditControlFragment() { class ReminderControlSet : TaskEditControlFragment() {
private val alarms: MutableSet<Long> = LinkedHashSet() private val alarms: MutableSet<Long> = LinkedHashSet()
@Inject @ActivityContext lateinit var activity: Context @Inject lateinit var activity: Activity
@Inject lateinit var alarmService: AlarmService @Inject lateinit var alarmService: AlarmService
@Inject lateinit var locale: Locale @Inject lateinit var locale: Locale
@Inject lateinit var dialogBuilder: DialogBuilder @Inject lateinit var dialogBuilder: DialogBuilder
@ -291,8 +290,6 @@ class ReminderControlSet : TaskEditControlFragment() {
} }
} }
override fun inject(component: FragmentComponent) = component.inject(this)
companion object { companion object {
const val TAG = R.string.TEA_ctrl_reminders_pref const val TAG = R.string.TEA_ctrl_reminders_pref
private const val REQUEST_NEW_ALARM = 12152 private const val REQUEST_NEW_ALARM = 12152

@ -4,11 +4,11 @@ import android.content.Context;
import android.media.AudioManager; import android.media.AudioManager;
import android.speech.tts.TextToSpeech; import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener; import android.speech.tts.TextToSpeech.OnInitListener;
import dagger.hilt.android.qualifiers.ApplicationContext;
import java.util.HashMap; import java.util.HashMap;
import java.util.Locale; import java.util.Locale;
import java.util.UUID; import java.util.UUID;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.injection.ApplicationContext;
import timber.log.Timber; import timber.log.Timber;
/** @author Arne Jans */ /** @author Arne Jans */

@ -5,8 +5,8 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import dagger.hilt.android.qualifiers.ApplicationContext;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.injection.ApplicationContext;
import org.tasks.widget.AppWidgetManager; import org.tasks.widget.AppWidgetManager;
public class LocalBroadcastManager { public class LocalBroadcastManager {

@ -10,7 +10,7 @@ import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.reminders.ReminderService import com.todoroo.astrid.reminders.ReminderService
import com.todoroo.astrid.voice.VoiceOutputAssistant import com.todoroo.astrid.voice.VoiceOutputAssistant
import org.tasks.injection.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import org.tasks.notifications.AudioManager import org.tasks.notifications.AudioManager
import org.tasks.notifications.Notification import org.tasks.notifications.Notification
import org.tasks.notifications.NotificationManager import org.tasks.notifications.NotificationManager

@ -3,7 +3,7 @@ package org.tasks
import android.content.Context import android.content.Context
import android.content.pm.ShortcutManager import android.content.pm.ShortcutManager
import com.todoroo.andlib.utility.AndroidUtilities import com.todoroo.andlib.utility.AndroidUtilities
import org.tasks.injection.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton

@ -1,23 +1,25 @@
package org.tasks package org.tasks
import android.app.Application
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 android.util.Log import android.util.Log
import androidx.core.app.JobIntentService import androidx.core.app.JobIntentService
import androidx.hilt.work.HiltWorkerFactory
import androidx.work.Configuration import androidx.work.Configuration
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.qualifiers.ApplicationContext
import io.reactivex.Completable import io.reactivex.Completable
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import org.tasks.billing.BillingClient import org.tasks.billing.BillingClient
import org.tasks.billing.Inventory import org.tasks.billing.Inventory
import org.tasks.files.FileHelper import org.tasks.files.FileHelper
import org.tasks.injection.ApplicationComponent
import org.tasks.injection.ApplicationContext
import org.tasks.injection.InjectingApplication
import org.tasks.injection.InjectingJobIntentService import org.tasks.injection.InjectingJobIntentService
import org.tasks.jobs.WorkManager import org.tasks.jobs.WorkManager
import org.tasks.locale.Locale
import org.tasks.location.GeofenceApi import org.tasks.location.GeofenceApi
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.receivers.RefreshReceiver import org.tasks.receivers.RefreshReceiver
@ -29,7 +31,8 @@ import org.tasks.widget.AppWidgetManager
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
class Tasks : InjectingApplication(), Configuration.Provider { @HiltAndroidApp
class Tasks : Application(), Configuration.Provider {
@Inject @ApplicationContext lateinit var context: Context @Inject @ApplicationContext lateinit var context: Context
@Inject lateinit var preferences: Preferences @Inject lateinit var preferences: Preferences
@Inject lateinit var buildSetup: BuildSetup @Inject lateinit var buildSetup: BuildSetup
@ -41,6 +44,7 @@ class Tasks : InjectingApplication(), Configuration.Provider {
@Inject lateinit var geofenceApi: Lazy<GeofenceApi> @Inject lateinit var geofenceApi: Lazy<GeofenceApi>
@Inject lateinit var billingClient: Lazy<BillingClient> @Inject lateinit var billingClient: Lazy<BillingClient>
@Inject lateinit var appWidgetManager: Lazy<AppWidgetManager> @Inject lateinit var appWidgetManager: Lazy<AppWidgetManager>
@Inject lateinit var workerFactory: HiltWorkerFactory
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
@ -49,6 +53,7 @@ class Tasks : InjectingApplication(), Configuration.Provider {
preferences.isSyncOngoing = false preferences.isSyncOngoing = false
ThemeBase.getThemeBase(preferences, inventory, null).setDefaultNightMode() ThemeBase.getThemeBase(preferences, inventory, null).setDefaultNightMode()
localBroadcastManager.registerRefreshReceiver(RefreshBroadcastReceiver()) localBroadcastManager.registerRefreshReceiver(RefreshBroadcastReceiver())
Locale.getInstance(this).createConfigurationContext(applicationContext)
Completable.fromAction { doInBackground() }.subscribeOn(Schedulers.io()).subscribe() Completable.fromAction { doInBackground() }.subscribeOn(Schedulers.io()).subscribe()
} }
@ -78,10 +83,9 @@ class Tasks : InjectingApplication(), Configuration.Provider {
appWidgetManager.get().reconfigureWidgets() appWidgetManager.get().reconfigureWidgets()
} }
override fun inject(component: ApplicationComponent) = component.inject(this)
override fun getWorkManagerConfiguration(): Configuration { override fun getWorkManagerConfiguration(): Configuration {
return Configuration.Builder() return Configuration.Builder()
.setWorkerFactory(workerFactory)
.setMinimumLoggingLevel(if (BuildConfig.DEBUG) Log.DEBUG else Log.INFO) .setMinimumLoggingLevel(if (BuildConfig.DEBUG) Log.DEBUG else Log.INFO)
.build() .build()
} }

@ -8,15 +8,16 @@ import android.os.Bundle;
import android.provider.MediaStore; import android.provider.MediaStore;
import androidx.core.content.FileProvider; import androidx.core.content.FileProvider;
import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Constants;
import dagger.hilt.android.AndroidEntryPoint;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.files.FileHelper; import org.tasks.files.FileHelper;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.time.DateTime; import org.tasks.time.DateTime;
@AndroidEntryPoint
public class CameraActivity extends InjectingAppCompatActivity { public class CameraActivity extends InjectingAppCompatActivity {
private static final int REQUEST_CODE_CAMERA = 75; private static final int REQUEST_CODE_CAMERA = 75;
@ -57,11 +58,6 @@ public class CameraActivity extends InjectingAppCompatActivity {
} }
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_CAMERA) { if (requestCode == REQUEST_CODE_CAMERA) {

@ -7,15 +7,16 @@ import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import dagger.hilt.android.AndroidEntryPoint;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.dialogs.MyDatePickerDialog; import org.tasks.dialogs.MyDatePickerDialog;
import org.tasks.dialogs.MyTimePickerDialog; import org.tasks.dialogs.MyTimePickerDialog;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.themes.ThemeAccent; import org.tasks.themes.ThemeAccent;
import org.tasks.time.DateTime; import org.tasks.time.DateTime;
@AndroidEntryPoint
public class DateAndTimePickerActivity extends InjectingAppCompatActivity public class DateAndTimePickerActivity extends InjectingAppCompatActivity
implements MyDatePickerDialog.DatePickerCallback, MyTimePickerDialog.TimePickerCallback { implements MyDatePickerDialog.DatePickerCallback, MyTimePickerDialog.TimePickerCallback {
@ -51,11 +52,6 @@ public class DateAndTimePickerActivity extends InjectingAppCompatActivity
} }
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override @Override
protected void onSaveInstanceState(Bundle outState) { protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);

@ -8,6 +8,8 @@ import android.os.Bundle;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import dagger.hilt.android.AndroidEntryPoint;
import dagger.hilt.android.qualifiers.ApplicationContext;
import io.reactivex.Single; import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.CompositeDisposable;
@ -16,13 +18,12 @@ import javax.inject.Inject;
import org.tasks.LocalBroadcastManager; import org.tasks.LocalBroadcastManager;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.filters.FilterProvider; import org.tasks.filters.FilterProvider;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.ApplicationContext;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.DefaultFilterProvider; import org.tasks.preferences.DefaultFilterProvider;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.widget.WidgetPreferences; import org.tasks.widget.WidgetPreferences;
@AndroidEntryPoint
public class FilterSelectionActivity extends InjectingAppCompatActivity { public class FilterSelectionActivity extends InjectingAppCompatActivity {
public static final String EXTRA_RETURN_FILTER = "extra_include_filter"; public static final String EXTRA_RETURN_FILTER = "extra_include_filter";
@ -125,9 +126,4 @@ public class FilterSelectionActivity extends InjectingAppCompatActivity {
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(items -> filterAdapter.setData(items, selected))); .subscribe(items -> filterAdapter.setData(items, selected)));
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
} }

@ -33,17 +33,18 @@ import com.todoroo.astrid.core.CustomFilterItemTouchHelper
import com.todoroo.astrid.dao.Database import com.todoroo.astrid.dao.Database
import com.todoroo.astrid.dao.TaskDao.TaskCriteria.activeAndVisible import com.todoroo.astrid.dao.TaskDao.TaskCriteria.activeAndVisible
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.Strings import org.tasks.Strings
import org.tasks.data.Filter import org.tasks.data.Filter
import org.tasks.data.FilterDao import org.tasks.data.FilterDao
import org.tasks.filters.FilterCriteriaProvider import org.tasks.filters.FilterCriteriaProvider
import org.tasks.injection.ActivityComponent
import org.tasks.locale.Locale import org.tasks.locale.Locale
import java.util.* import java.util.*
import javax.inject.Inject import javax.inject.Inject
import kotlin.math.max import kotlin.math.max
@AndroidEntryPoint
class FilterSettingsActivity : BaseListSettingsActivity() { class FilterSettingsActivity : BaseListSettingsActivity() {
@Inject lateinit var filterDao: FilterDao @Inject lateinit var filterDao: FilterDao
@Inject lateinit var locale: Locale @Inject lateinit var locale: Locale
@ -225,8 +226,6 @@ class FilterSettingsActivity : BaseListSettingsActivity() {
nameLayout.error = null nameLayout.error = null
} }
override fun inject(component: ActivityComponent) = component.inject(this)
override fun save() { override fun save() {
val newName = newName val newName = newName
if (Strings.isNullOrEmpty(newName)) { if (Strings.isNullOrEmpty(newName)) {

@ -19,15 +19,16 @@ import com.todoroo.astrid.api.GtasksFilter;
import com.todoroo.astrid.gtasks.GtasksListService; import com.todoroo.astrid.gtasks.GtasksListService;
import com.todoroo.astrid.gtasks.api.GtasksInvoker; import com.todoroo.astrid.gtasks.api.GtasksInvoker;
import com.todoroo.astrid.service.TaskDeleter; import com.todoroo.astrid.service.TaskDeleter;
import dagger.hilt.android.AndroidEntryPoint;
import dagger.hilt.android.qualifiers.ApplicationContext;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.data.GoogleTaskAccount; import org.tasks.data.GoogleTaskAccount;
import org.tasks.data.GoogleTaskList; import org.tasks.data.GoogleTaskList;
import org.tasks.data.GoogleTaskListDao; import org.tasks.data.GoogleTaskListDao;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.ApplicationContext;
import timber.log.Timber; import timber.log.Timber;
@AndroidEntryPoint
public class GoogleTaskListSettingsActivity extends BaseListSettingsActivity { public class GoogleTaskListSettingsActivity extends BaseListSettingsActivity {
public static final String EXTRA_ACCOUNT = "extra_account"; public static final String EXTRA_ACCOUNT = "extra_account";
@ -116,11 +117,6 @@ public class GoogleTaskListSettingsActivity extends BaseListSettingsActivity {
return progressView.getVisibility() == View.VISIBLE; return progressView.getVisibility() == View.VISIBLE;
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override @Override
protected void save() { protected void save() {
if (requestInProgress()) { if (requestInProgress()) {

@ -8,12 +8,14 @@ import android.content.DialogInterface
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.todoroo.astrid.adapter.FilterAdapter import com.todoroo.astrid.adapter.FilterAdapter
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.FilterListItem import com.todoroo.astrid.api.FilterListItem
import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.GtasksFilter
import dagger.hilt.android.AndroidEntryPoint
import io.reactivex.Single import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.CompositeDisposable
@ -21,11 +23,10 @@ import io.reactivex.schedulers.Schedulers
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.DialogBuilder
import org.tasks.filters.FilterProvider import org.tasks.filters.FilterProvider
import org.tasks.injection.FragmentComponent
import org.tasks.injection.InjectingDialogFragment
import javax.inject.Inject import javax.inject.Inject
class ListPicker : InjectingDialogFragment() { @AndroidEntryPoint
class ListPicker : DialogFragment() {
@Inject lateinit var dialogBuilder: DialogBuilder @Inject lateinit var dialogBuilder: DialogBuilder
@Inject lateinit var filterAdapter: FilterAdapter @Inject lateinit var filterAdapter: FilterAdapter
@Inject lateinit var filterProvider: FilterProvider @Inject lateinit var filterProvider: FilterProvider
@ -63,8 +64,6 @@ class ListPicker : InjectingDialogFragment() {
filterAdapter.save(outState) filterAdapter.save(outState)
} }
override fun inject(component: FragmentComponent) = component.inject(this)
private fun selectedList(list: Filter) { private fun selectedList(list: Filter) {
targetFragment!!.onActivityResult( targetFragment!!.onActivityResult(
targetRequestCode, targetRequestCode,

@ -16,6 +16,7 @@ import com.todoroo.astrid.adapter.FilterViewHolder
import com.todoroo.astrid.adapter.NavigationDrawerAdapter import com.todoroo.astrid.adapter.NavigationDrawerAdapter
import com.todoroo.astrid.api.* import com.todoroo.astrid.api.*
import com.todoroo.astrid.api.FilterListItem.Type.ITEM import com.todoroo.astrid.api.FilterListItem.Type.ITEM
import dagger.hilt.android.AndroidEntryPoint
import io.reactivex.Single import io.reactivex.Single
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.CompositeDisposable
@ -29,12 +30,12 @@ import org.tasks.dialogs.NewFilterDialog.Companion.newFilterDialog
import org.tasks.filters.FilterProvider import org.tasks.filters.FilterProvider
import org.tasks.filters.NavigationDrawerAction import org.tasks.filters.NavigationDrawerAction
import org.tasks.filters.PlaceFilter import org.tasks.filters.PlaceFilter
import org.tasks.injection.ActivityComponent
import org.tasks.injection.ThemedInjectingAppCompatActivity import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.ui.NavigationDrawerFragment.Companion.REQUEST_NEW_FILTER import org.tasks.ui.NavigationDrawerFragment.Companion.REQUEST_NEW_FILTER
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint
class NavigationDrawerCustomization : ThemedInjectingAppCompatActivity(), Toolbar.OnMenuItemClickListener { class NavigationDrawerCustomization : ThemedInjectingAppCompatActivity(), Toolbar.OnMenuItemClickListener {
@Inject lateinit var filterProvider: FilterProvider @Inject lateinit var filterProvider: FilterProvider
@ -144,8 +145,6 @@ class NavigationDrawerCustomization : ThemedInjectingAppCompatActivity(), Toolba
} }
} }
override fun inject(component: ActivityComponent) = component.inject(this)
override fun onMenuItemClick(item: MenuItem): Boolean { override fun onMenuItemClick(item: MenuItem): Boolean {
return if (item.itemId == R.id.reset_sort) { return if (item.itemId == R.id.reset_sort) {
filterDao.resetOrders() filterDao.resetOrders()

@ -9,15 +9,16 @@ import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout import com.google.android.material.textfield.TextInputLayout
import com.todoroo.astrid.activity.MainActivity import com.todoroo.astrid.activity.MainActivity
import com.todoroo.astrid.activity.TaskListFragment import com.todoroo.astrid.activity.TaskListFragment
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.Strings.isNullOrEmpty import org.tasks.Strings.isNullOrEmpty
import org.tasks.data.LocationDao import org.tasks.data.LocationDao
import org.tasks.data.Place import org.tasks.data.Place
import org.tasks.filters.PlaceFilter import org.tasks.filters.PlaceFilter
import org.tasks.injection.ActivityComponent
import org.tasks.location.MapFragment import org.tasks.location.MapFragment
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint
class PlaceSettingsActivity : BaseListSettingsActivity(), MapFragment.MapFragmentCallback { class PlaceSettingsActivity : BaseListSettingsActivity(), MapFragment.MapFragmentCallback {
companion object { companion object {
@ -101,8 +102,6 @@ class PlaceSettingsActivity : BaseListSettingsActivity(), MapFragment.MapFragmen
finish() finish()
} }
override fun inject(component: ActivityComponent) = component.inject(this)
override fun onMapReady(mapFragment: MapFragment?) { override fun onMapReady(mapFragment: MapFragment?) {
map = mapFragment!! map = mapFragment!!
map.setMarkers(listOf(place)) map.setMarkers(listOf(place))

@ -20,13 +20,14 @@ import com.todoroo.astrid.activity.MainActivity;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.TagFilter; import com.todoroo.astrid.api.TagFilter;
import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.helper.UUIDHelper;
import dagger.hilt.android.AndroidEntryPoint;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.data.TagDao; import org.tasks.data.TagDao;
import org.tasks.data.TagData; import org.tasks.data.TagData;
import org.tasks.data.TagDataDao; import org.tasks.data.TagDataDao;
import org.tasks.injection.ActivityComponent;
@AndroidEntryPoint
public class TagSettingsActivity extends BaseListSettingsActivity { public class TagSettingsActivity extends BaseListSettingsActivity {
public static final String TOKEN_AUTOPOPULATE_NAME = "autopopulateName"; // $NON-NLS-1$ public static final String TOKEN_AUTOPOPULATE_NAME = "autopopulateName"; // $NON-NLS-1$
@ -90,11 +91,6 @@ public class TagSettingsActivity extends BaseListSettingsActivity {
nameLayout.setError(null); nameLayout.setError(null);
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
private String getNewName() { private String getNewName() {
return name.getText().toString().trim(); return name.getText().toString().trim();
} }

@ -8,13 +8,14 @@ import androidx.recyclerview.widget.RecyclerView
import butterknife.BindView import butterknife.BindView
import butterknife.ButterKnife import butterknife.ButterKnife
import com.google.common.collect.Multimaps import com.google.common.collect.Multimaps
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.activities.attribution.AttributionViewModel.LibraryAttribution import org.tasks.activities.attribution.AttributionViewModel.LibraryAttribution
import org.tasks.injection.ActivityComponent
import org.tasks.injection.ThemedInjectingAppCompatActivity import org.tasks.injection.ThemedInjectingAppCompatActivity
import timber.log.Timber import timber.log.Timber
import java.util.* import java.util.*
@AndroidEntryPoint
class AttributionActivity : ThemedInjectingAppCompatActivity() { class AttributionActivity : ThemedInjectingAppCompatActivity() {
@BindView(R.id.toolbar) @BindView(R.id.toolbar)
lateinit var toolbar: Toolbar lateinit var toolbar: Toolbar
@ -60,6 +61,4 @@ class AttributionActivity : ThemedInjectingAppCompatActivity() {
AttributionRow(it, libraries.sorted().joinToString("\n")) AttributionRow(it, libraries.sorted().joinToString("\n"))
} }
} }
override fun inject(component: ActivityComponent) = component.inject(this)
} }

@ -6,21 +6,31 @@ import android.app.backup.FileBackupHelper;
import android.net.Uri; import android.net.Uri;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import com.todoroo.astrid.backup.BackupConstants; import com.todoroo.astrid.backup.BackupConstants;
import dagger.hilt.EntryPoint;
import dagger.hilt.InstallIn;
import dagger.hilt.android.EntryPointAccessors;
import dagger.hilt.android.components.ApplicationComponent;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import javax.inject.Inject;
import org.tasks.injection.InjectingApplication;
import timber.log.Timber; import timber.log.Timber;
public class TasksBackupAgent extends BackupAgentHelper { public class TasksBackupAgent extends BackupAgentHelper {
@EntryPoint
@InstallIn(ApplicationComponent.class)
interface TasksBackupAgentEntryPoint {
TasksJsonImporter getTasksJsonImporter();
}
private static final String BACKUP_KEY = "backup"; private static final String BACKUP_KEY = "backup";
@Inject TasksJsonImporter importer; private TasksJsonImporter importer;
@Override @Override
public void onCreate() { public void onCreate() {
((InjectingApplication) getApplicationContext()).getComponent().inject(this); TasksBackupAgentEntryPoint hilt =
EntryPointAccessors.fromApplication(getApplicationContext(), TasksBackupAgentEntryPoint.class);
importer = hilt.getTasksJsonImporter();
addHelper(BACKUP_KEY, new FileBackupHelper(this, BackupConstants.INTERNAL_BACKUP)); addHelper(BACKUP_KEY, new FileBackupHelper(this, BackupConstants.INTERNAL_BACKUP));
} }

@ -12,12 +12,12 @@ import androidx.appcompat.widget.Toolbar
import butterknife.ButterKnife import butterknife.ButterKnife
import butterknife.OnClick import butterknife.OnClick
import com.google.android.material.button.MaterialButtonToggleGroup import com.google.android.material.button.MaterialButtonToggleGroup
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.databinding.ActivityPurchaseBinding import org.tasks.databinding.ActivityPurchaseBinding
import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.DialogBuilder
import org.tasks.dialogs.IconLayoutManager import org.tasks.dialogs.IconLayoutManager
import org.tasks.injection.ActivityComponent
import org.tasks.injection.ThemedInjectingAppCompatActivity import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.locale.Locale import org.tasks.locale.Locale
import timber.log.Timber import timber.log.Timber
@ -26,6 +26,7 @@ import javax.inject.Inject
private const val EXTRA_MONTHLY = "extra_monthly" private const val EXTRA_MONTHLY = "extra_monthly"
private const val EXTRA_PRICE = "extra_price" private const val EXTRA_PRICE = "extra_price"
@AndroidEntryPoint
class PurchaseActivity : ThemedInjectingAppCompatActivity(), OnPurchasesUpdated, Toolbar.OnMenuItemClickListener { class PurchaseActivity : ThemedInjectingAppCompatActivity(), OnPurchasesUpdated, Toolbar.OnMenuItemClickListener {
@Inject lateinit var inventory: Inventory @Inject lateinit var inventory: Inventory
@ -129,10 +130,6 @@ class PurchaseActivity : ThemedInjectingAppCompatActivity(), OnPurchasesUpdated,
localBroadcastManager.unregisterReceiver(purchaseReceiver) localBroadcastManager.unregisterReceiver(purchaseReceiver)
} }
override fun inject(component: ActivityComponent) {
component.inject(this)
}
private fun setup() { private fun setup() {
currentSubscription = inventory.subscription currentSubscription = inventory.subscription
if (adapter.selected == 0) { if (adapter.selected == 0) {

@ -4,12 +4,13 @@ import android.os.Bundle;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.helper.UUIDHelper;
import dagger.hilt.android.AndroidEntryPoint;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.data.CaldavAccount; import org.tasks.data.CaldavAccount;
import org.tasks.injection.ActivityComponent;
import timber.log.Timber; import timber.log.Timber;
@AndroidEntryPoint
public class CaldavAccountSettingsActivity extends BaseCaldavAccountSettingsActivity public class CaldavAccountSettingsActivity extends BaseCaldavAccountSettingsActivity
implements Toolbar.OnMenuItemClickListener { implements Toolbar.OnMenuItemClickListener {
@ -94,9 +95,4 @@ public class CaldavAccountSettingsActivity extends BaseCaldavAccountSettingsActi
protected String getHelpUrl() { protected String getHelpUrl() {
return "https://tasks.org/caldav"; return "https://tasks.org/caldav";
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
} }

@ -2,12 +2,13 @@ package org.tasks.caldav;
import android.os.Bundle; import android.os.Bundle;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import dagger.hilt.android.AndroidEntryPoint;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.data.CaldavAccount; import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar; import org.tasks.data.CaldavCalendar;
import org.tasks.injection.ActivityComponent;
@AndroidEntryPoint
public class CaldavCalendarSettingsActivity extends BaseCaldavCalendarSettingsActivity { public class CaldavCalendarSettingsActivity extends BaseCaldavCalendarSettingsActivity {
@Inject CaldavClient client; @Inject CaldavClient client;
@ -35,11 +36,6 @@ public class CaldavCalendarSettingsActivity extends BaseCaldavCalendarSettingsAc
updateCalendarViewModel.observe(this, ignored -> updateCalendar(), this::requestFailed); updateCalendarViewModel.observe(this, ignored -> updateCalendar(), this::requestFailed);
} }
@Override
public void inject(ActivityComponent component) {
component.inject(this);
}
@Override @Override
protected void createCalendar(CaldavAccount caldavAccount, String name, int color) { protected void createCalendar(CaldavAccount caldavAccount, String name, int color) {
createCalendarViewModel.createCalendar(client, caldavAccount, name, color); createCalendarViewModel.createCalendar(client, caldavAccount, name, color);

@ -25,6 +25,7 @@ import at.bitfire.dav4jvm.property.ResourceType;
import at.bitfire.dav4jvm.property.SupportedCalendarComponentSet; import at.bitfire.dav4jvm.property.SupportedCalendarComponentSet;
import at.bitfire.dav4jvm.property.SyncToken; import at.bitfire.dav4jvm.property.SyncToken;
import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.helper.UUIDHelper;
import dagger.hilt.android.qualifiers.ApplicationContext;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
import java.security.KeyManagementException; import java.security.KeyManagementException;
@ -43,7 +44,6 @@ import org.tasks.DebugNetworkInterceptor;
import org.tasks.R; import org.tasks.R;
import org.tasks.data.CaldavAccount; import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar; import org.tasks.data.CaldavCalendar;
import org.tasks.injection.ApplicationContext;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.security.KeyStoreEncryption; import org.tasks.security.KeyStoreEncryption;
import org.tasks.ui.DisplayableException; import org.tasks.ui.DisplayableException;

@ -31,6 +31,7 @@ import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.UUIDHelper; import com.todoroo.astrid.helper.UUIDHelper;
import com.todoroo.astrid.service.TaskDeleter; import com.todoroo.astrid.service.TaskDeleter;
import dagger.hilt.android.qualifiers.ApplicationContext;
import java.io.IOException; import java.io.IOException;
import java.net.ConnectException; import java.net.ConnectException;
import java.net.SocketTimeoutException; import java.net.SocketTimeoutException;
@ -55,7 +56,6 @@ import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar; import org.tasks.data.CaldavCalendar;
import org.tasks.data.CaldavDao; import org.tasks.data.CaldavDao;
import org.tasks.data.CaldavTask; import org.tasks.data.CaldavTask;
import org.tasks.injection.ApplicationContext;
import timber.log.Timber; import timber.log.Timber;
public class CaldavSynchronizer { public class CaldavSynchronizer {

@ -1,12 +1,13 @@
package org.tasks.caldav package org.tasks.caldav
import android.os.Bundle import android.os.Bundle
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.data.CaldavAccount import org.tasks.data.CaldavAccount
import org.tasks.data.CaldavCalendar import org.tasks.data.CaldavCalendar
import org.tasks.data.CaldavDao import org.tasks.data.CaldavDao
import org.tasks.injection.ActivityComponent
@AndroidEntryPoint
class LocalListSettingsActivity : BaseCaldavCalendarSettingsActivity() { class LocalListSettingsActivity : BaseCaldavCalendarSettingsActivity() {
override fun getLayout() = R.layout.activity_caldav_calendar_settings override fun getLayout() = R.layout.activity_caldav_calendar_settings
@ -17,8 +18,6 @@ class LocalListSettingsActivity : BaseCaldavCalendarSettingsActivity() {
toolbar.menu.findItem(R.id.delete)?.isVisible = caldavDao.getCalendarsByAccount(CaldavDao.LOCAL).size > 1 toolbar.menu.findItem(R.id.delete)?.isVisible = caldavDao.getCalendarsByAccount(CaldavDao.LOCAL).size > 1
} }
override fun inject(component: ActivityComponent) = component.inject(this)
override fun createCalendar(caldavAccount: CaldavAccount, name: String, color: Int) = override fun createCalendar(caldavAccount: CaldavAccount, name: String, color: Int) =
createSuccessful(null) createSuccessful(null)

@ -4,11 +4,11 @@ import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.provider.CalendarContract; import android.provider.CalendarContract;
import dagger.hilt.android.qualifiers.ApplicationContext;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.injection.ApplicationContext;
import org.tasks.preferences.PermissionChecker; import org.tasks.preferences.PermissionChecker;
import timber.log.Timber; import timber.log.Timber;

@ -10,11 +10,11 @@ import android.net.Uri;
import android.provider.CalendarContract; import android.provider.CalendarContract;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import dagger.hilt.android.qualifiers.ApplicationContext;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.injection.ApplicationContext;
import org.tasks.preferences.PermissionChecker; import org.tasks.preferences.PermissionChecker;
import timber.log.Timber; import timber.log.Timber;

@ -12,21 +12,22 @@ import android.widget.ListView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import dagger.hilt.android.AndroidEntryPoint;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.injection.FragmentComponent;
import org.tasks.injection.InjectingDialogFragment;
import org.tasks.preferences.FragmentPermissionRequestor; import org.tasks.preferences.FragmentPermissionRequestor;
import org.tasks.preferences.PermissionChecker; import org.tasks.preferences.PermissionChecker;
import org.tasks.preferences.PermissionRequestor; import org.tasks.preferences.PermissionRequestor;
import org.tasks.themes.Theme; import org.tasks.themes.Theme;
import org.tasks.ui.SingleCheckedArrayAdapter; import org.tasks.ui.SingleCheckedArrayAdapter;
public class CalendarPicker extends InjectingDialogFragment { @AndroidEntryPoint
public class CalendarPicker extends DialogFragment {
public static final String EXTRA_CALENDAR_ID = "extra_calendar_id"; public static final String EXTRA_CALENDAR_ID = "extra_calendar_id";
public static final String EXTRA_CALENDAR_NAME = "extra_calendar_name"; public static final String EXTRA_CALENDAR_NAME = "extra_calendar_name";
@ -124,9 +125,4 @@ public class CalendarPicker extends InjectingDialogFragment {
super.onRequestPermissionsResult(requestCode, permissions, grantResults); super.onRequestPermissionsResult(requestCode, permissions, grantResults);
} }
} }
@Override
protected void inject(FragmentComponent component) {
component.inject(this);
}
} }

@ -9,11 +9,11 @@ import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.provider.CalendarContract; import android.provider.CalendarContract;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import dagger.hilt.android.qualifiers.ApplicationContext;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.injection.ApplicationContext;
import org.tasks.preferences.PermissionChecker; import org.tasks.preferences.PermissionChecker;
import timber.log.Timber; import timber.log.Timber;

@ -8,15 +8,16 @@ import com.todoroo.astrid.activity.MainActivity;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
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.AndroidEntryPoint;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.LocalBroadcastManager; import org.tasks.LocalBroadcastManager;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.InjectingApplication;
import org.tasks.preferences.DefaultFilterProvider; import org.tasks.preferences.DefaultFilterProvider;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import timber.log.Timber; import timber.log.Timber;
@AndroidEntryPoint
public class DashClockExtension extends com.google.android.apps.dashclock.api.DashClockExtension { public class DashClockExtension extends com.google.android.apps.dashclock.api.DashClockExtension {
@Inject DefaultFilterProvider defaultFilterProvider; @Inject DefaultFilterProvider defaultFilterProvider;
@ -36,8 +37,6 @@ public class DashClockExtension extends com.google.android.apps.dashclock.api.Da
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
((InjectingApplication) getApplication()).getComponent().inject(this);
localBroadcastManager.registerRefreshReceiver(refreshReceiver); localBroadcastManager.registerRefreshReceiver(refreshReceiver);
} }

@ -1,14 +1,13 @@
package org.tasks.dashclock package org.tasks.dashclock
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R import org.tasks.R
import org.tasks.injection.ActivityComponent
import org.tasks.preferences.BasePreferences import org.tasks.preferences.BasePreferences
import org.tasks.preferences.fragments.DashClock import org.tasks.preferences.fragments.DashClock
@AndroidEntryPoint
class DashClockSettings : BasePreferences() { class DashClockSettings : BasePreferences() {
override fun getRootTitle() = R.string.pro_dashclock_extension override fun getRootTitle() = R.string.pro_dashclock_extension
override fun getRootPreference() = DashClock() override fun getRootPreference() = DashClock()
override fun inject(component: ActivityComponent) = component.inject(this)
} }

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save