diff --git a/app/src/main/java/org/tasks/receivers/CompleteTaskReceiver.kt b/app/src/main/java/org/tasks/receivers/CompleteTaskReceiver.kt index 988623572..7df0485f3 100644 --- a/app/src/main/java/org/tasks/receivers/CompleteTaskReceiver.kt +++ b/app/src/main/java/org/tasks/receivers/CompleteTaskReceiver.kt @@ -7,6 +7,7 @@ import com.todoroo.astrid.service.TaskCompleter import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch +import org.tasks.data.dao.NotificationDao import org.tasks.injection.ApplicationScope import org.tasks.notifications.NotificationManager import timber.log.Timber @@ -15,6 +16,7 @@ import javax.inject.Inject @AndroidEntryPoint class CompleteTaskReceiver : BroadcastReceiver() { @Inject lateinit var notificationManager: NotificationManager + @Inject lateinit var notificationDao: NotificationDao @Inject lateinit var taskCompleter: TaskCompleter @Inject @ApplicationScope lateinit var scope: CoroutineScope @@ -22,6 +24,10 @@ class CompleteTaskReceiver : BroadcastReceiver() { val taskId = intent.getLongExtra(TASK_ID, 0) Timber.i("Completing %s", taskId) scope.launch { + if (!notificationDao.hasNotification(taskId)) { + Timber.e("No notification found for $taskId") + return@launch + } notificationManager.cancel(taskId) taskCompleter.setComplete(taskId) } @@ -30,4 +36,4 @@ class CompleteTaskReceiver : BroadcastReceiver() { companion object { const val TASK_ID = "id" } -} \ No newline at end of file +} diff --git a/data/src/commonMain/kotlin/org/tasks/data/dao/NotificationDao.kt b/data/src/commonMain/kotlin/org/tasks/data/dao/NotificationDao.kt index 9257722a6..df0dfe073 100644 --- a/data/src/commonMain/kotlin/org/tasks/data/dao/NotificationDao.kt +++ b/data/src/commonMain/kotlin/org/tasks/data/dao/NotificationDao.kt @@ -25,4 +25,7 @@ interface NotificationDao { @Query("SELECT MAX(timestamp) FROM notification") suspend fun latestTimestamp(): Long? + + @Query("SELECT EXISTS(SELECT 1 FROM notification WHERE task = :taskId)") + suspend fun hasNotification(taskId: Long): Boolean } \ No newline at end of file