|
|
|
@ -26,6 +26,7 @@ import org.tasks.billing.Inventory
|
|
|
|
import org.tasks.compose.throttleLatest
|
|
|
|
import org.tasks.compose.throttleLatest
|
|
|
|
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.data.dao.CaldavDao
|
|
|
|
import org.tasks.data.dao.DeletionDao
|
|
|
|
import org.tasks.data.dao.DeletionDao
|
|
|
|
import org.tasks.data.dao.TaskDao
|
|
|
|
import org.tasks.data.dao.TaskDao
|
|
|
|
import org.tasks.data.entity.Task
|
|
|
|
import org.tasks.data.entity.Task
|
|
|
|
@ -51,6 +52,8 @@ sealed interface Banner {
|
|
|
|
data object AlarmsDisabled : Banner
|
|
|
|
data object AlarmsDisabled : Banner
|
|
|
|
data object QuietHoursEnabled : Banner
|
|
|
|
data object QuietHoursEnabled : Banner
|
|
|
|
data object BegForMoney : Banner
|
|
|
|
data object BegForMoney : Banner
|
|
|
|
|
|
|
|
data object WarnMicrosoft : Banner
|
|
|
|
|
|
|
|
data object WarnGoogleTasks : Banner
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@HiltViewModel
|
|
|
|
@HiltViewModel
|
|
|
|
@ -64,6 +67,7 @@ class TaskListViewModel @Inject constructor(
|
|
|
|
private val inventory: Inventory,
|
|
|
|
private val inventory: Inventory,
|
|
|
|
private val firebase: Firebase,
|
|
|
|
private val firebase: Firebase,
|
|
|
|
private val permissionChecker: PermissionChecker,
|
|
|
|
private val permissionChecker: PermissionChecker,
|
|
|
|
|
|
|
|
private val caldavDao: CaldavDao,
|
|
|
|
) : ViewModel() {
|
|
|
|
) : ViewModel() {
|
|
|
|
|
|
|
|
|
|
|
|
data class State(
|
|
|
|
data class State(
|
|
|
|
@ -188,6 +192,7 @@ class TaskListViewModel @Inject constructor(
|
|
|
|
|
|
|
|
|
|
|
|
fun updateBannerState() {
|
|
|
|
fun updateBannerState() {
|
|
|
|
viewModelScope.launch(Dispatchers.IO) {
|
|
|
|
viewModelScope.launch(Dispatchers.IO) {
|
|
|
|
|
|
|
|
val accounts = caldavDao.getAccounts()
|
|
|
|
val banner = when {
|
|
|
|
val banner = when {
|
|
|
|
preferences.warnNotificationsDisabled && !permissionChecker.hasNotificationPermission() ->
|
|
|
|
preferences.warnNotificationsDisabled && !permissionChecker.hasNotificationPermission() ->
|
|
|
|
Banner.NotificationsDisabled
|
|
|
|
Banner.NotificationsDisabled
|
|
|
|
@ -197,6 +202,10 @@ class TaskListViewModel @Inject constructor(
|
|
|
|
Banner.BegForMoney
|
|
|
|
Banner.BegForMoney
|
|
|
|
preferences.isCurrentlyQuietHours && preferences.warnQuietHoursDisabled ->
|
|
|
|
preferences.isCurrentlyQuietHours && preferences.warnQuietHoursDisabled ->
|
|
|
|
Banner.QuietHoursEnabled
|
|
|
|
Banner.QuietHoursEnabled
|
|
|
|
|
|
|
|
accounts.any { it.isMicrosoft } && preferences.warnMicrosoft ->
|
|
|
|
|
|
|
|
Banner.WarnMicrosoft
|
|
|
|
|
|
|
|
accounts.any { it.isGoogleTasks } && preferences.warnGoogleTasks ->
|
|
|
|
|
|
|
|
Banner.WarnGoogleTasks
|
|
|
|
else -> null
|
|
|
|
else -> null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
_state.update {
|
|
|
|
_state.update {
|
|
|
|
@ -214,7 +223,9 @@ class TaskListViewModel @Inject constructor(
|
|
|
|
preferences.lastSubscribeRequest = currentTimeMillis()
|
|
|
|
preferences.lastSubscribeRequest = currentTimeMillis()
|
|
|
|
firebase.logEvent(R.string.event_banner_sub, R.string.param_click to tookAction)
|
|
|
|
firebase.logEvent(R.string.event_banner_sub, R.string.param_click to tookAction)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else -> {}
|
|
|
|
Banner.WarnGoogleTasks -> preferences.warnGoogleTasks = false
|
|
|
|
|
|
|
|
Banner.WarnMicrosoft -> preferences.warnMicrosoft = false
|
|
|
|
|
|
|
|
null -> {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
updateBannerState()
|
|
|
|
updateBannerState()
|
|
|
|
|