diff --git a/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java b/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java
index 7090ce63b..9236ae14d 100644
--- a/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java
+++ b/app/src/main/java/com/todoroo/andlib/utility/AndroidUtilities.java
@@ -160,6 +160,10 @@ public class AndroidUtilities {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O;
}
+ public static boolean atLeastOreoMR1() {
+ return Build.VERSION.SDK_INT >= VERSION_CODES.O_MR1;
+ }
+
public static boolean atLeastP() {
return VERSION.SDK_INT >= Build.VERSION_CODES.P;
}
diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt
index 6402d4747..4be2801d0 100755
--- a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt
+++ b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt
@@ -43,6 +43,7 @@ import androidx.lifecycle.lifecycleScope
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.appbar.AppBarLayout.Behavior.DragCallback
import com.google.android.material.composethemeadapter.MdcTheme
+import com.todoroo.andlib.utility.AndroidUtilities.atLeastOreoMR1
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
@@ -150,6 +151,9 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener {
discardButtonClick()
}
}
+ if (atLeastOreoMR1()) {
+ activity?.setShowWhenLocked(preferences.showEditScreenWithoutUnlock)
+ }
binding = FragmentTaskEditBinding.inflate(inflater)
val view: View = binding.root
@@ -305,6 +309,13 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener {
return view
}
+ override fun onDestroyView() {
+ super.onDestroyView()
+ if (atLeastOreoMR1()) {
+ activity?.setShowWhenLocked(false)
+ }
+ }
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
taskEditEventBus
.onEach(this::process)
diff --git a/app/src/main/java/org/tasks/notifications/NotificationClearedReceiver.kt b/app/src/main/java/org/tasks/notifications/NotificationClearedReceiver.kt
index e56ab0757..cf1743cb6 100644
--- a/app/src/main/java/org/tasks/notifications/NotificationClearedReceiver.kt
+++ b/app/src/main/java/org/tasks/notifications/NotificationClearedReceiver.kt
@@ -3,10 +3,13 @@ package org.tasks.notifications
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
+import com.todoroo.andlib.utility.DateUtilities.now
+import com.todoroo.astrid.alarms.AlarmService
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import org.tasks.injection.ApplicationScope
+import org.tasks.preferences.Preferences
import timber.log.Timber
import javax.inject.Inject
@@ -14,12 +17,26 @@ import javax.inject.Inject
class NotificationClearedReceiver : BroadcastReceiver() {
@Inject lateinit var notificationManager: NotificationManager
@Inject @ApplicationScope lateinit var scope: CoroutineScope
+ @Inject lateinit var preferences: Preferences
+ @Inject lateinit var alarmService: AlarmService
override fun onReceive(context: Context, intent: Intent) {
val notificationId = intent.getLongExtra(NotificationManager.EXTRA_NOTIFICATION_ID, -1L)
Timber.d("cleared $notificationId")
+ if (notificationId <= 0L) return
scope.launch {
- notificationManager.cancel(notificationId)
+ if (preferences.useSwipeToSnooze()) {
+ var snoozeTime = preferences.swipeToSnoozeIntervalMS()
+ // snoozing for 0ms will cause the alarm service to miss this notification
+ // so sleep for 1s instead
+ if (snoozeTime == 0L) snoozeTime = 1000L
+ alarmService.snooze(
+ time = now() + snoozeTime,
+ taskIds = listOf(notificationId)
+ )
+ } else {
+ notificationManager.cancel(notificationId)
+ }
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/org/tasks/preferences/Preferences.kt b/app/src/main/java/org/tasks/preferences/Preferences.kt
index 9d2deb6a9..bc74c74cb 100644
--- a/app/src/main/java/org/tasks/preferences/Preferences.kt
+++ b/app/src/main/java/org/tasks/preferences/Preferences.kt
@@ -176,6 +176,9 @@ class Preferences @JvmOverloads constructor(
return if (firstDayOfWeek < 1 || firstDayOfWeek > 7) 0 else firstDayOfWeek
}
+ val showEditScreenWithoutUnlock: Boolean
+ get() = getBoolean(R.string.p_show_edit_screen_without_unlock, false)
+
@SuppressLint("ApplySharedPref")
fun clear() {
prefs.edit().clear().commit()
@@ -465,7 +468,15 @@ class Preferences @JvmOverloads constructor(
fun bundleNotifications(): Boolean = getBoolean(R.string.p_bundle_notifications, true)
fun usePersistentReminders(): Boolean =
- AndroidUtilities.preUpsideDownCake() && getBoolean(R.string.p_rmd_persistent, true)
+ AndroidUtilities.preUpsideDownCake() && getBoolean(R.string.p_rmd_persistent, true)
+
+ fun useSwipeToSnooze(): Boolean =
+ getBoolean(R.string.p_rmd_swipe_to_snooze_enabled, false)
+
+ fun swipeToSnoozeIntervalMS(): Long =
+ TimeUnit.MINUTES.toMillis(
+ getIntegerFromString(R.string.p_rmd_swipe_to_snooze_time_minutes, 0).toLong()
+ )
var isSyncOngoing: Boolean
get() = syncFlags.any { getBoolean(it, false) }
diff --git a/app/src/main/java/org/tasks/preferences/fragments/TaskEditPreferences.kt b/app/src/main/java/org/tasks/preferences/fragments/TaskEditPreferences.kt
index a7faebac6..2107d1fa9 100644
--- a/app/src/main/java/org/tasks/preferences/fragments/TaskEditPreferences.kt
+++ b/app/src/main/java/org/tasks/preferences/fragments/TaskEditPreferences.kt
@@ -2,6 +2,7 @@ package org.tasks.preferences.fragments
import android.os.Bundle
import androidx.appcompat.content.res.AppCompatResources
+import com.todoroo.andlib.utility.AndroidUtilities.atLeastOreoMR1
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R
import org.tasks.injection.InjectingPreferenceFragment
@@ -21,5 +22,7 @@ class TaskEditPreferences : InjectingPreferenceFragment() {
tint = context.getColor(R.color.icon_tint_with_alpha)
iconVisible = true
}
+
+ findPreference(R.string.p_show_edit_screen_without_unlock).isVisible = atLeastOreoMR1()
}
}
\ No newline at end of file
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index a9eb5fe86..6acdfd100 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -30,12 +30,12 @@
Intelligente Sortierung
Nach Titel
Nach Fälligkeitsdatum
- Nach Wichtigkeit
+ Nach Priorität
Nach letzter Änderung
Suche nach \'%s\'
Neuen Filter erstellen
Aufgabenname
- Wichtigkeit
+ Priorität
Beschreibung
Wie lange wird es dauern?
Schon benötigte Zeit
@@ -48,7 +48,7 @@
Woche vor Fälligkeit
Wiederholen
Kalender
- Wichtigkeit
+ Priorität
Ort
Beschreibung
Dateien
@@ -74,7 +74,7 @@
Alle Kalendereinträge für Aufgaben löschen
Möchten Sie wirklich alle Kalendereinträge für Aufgaben löschen\?
Vorgaben für Aufgaben
- Wichtigkeitsstandard
+ Standardpriorität
Standard-Erinnerungen
Standard-Standort-Erinnerungen
Alarm/Vibrationssignal
@@ -94,8 +94,8 @@
Fällig …
Ohne Fälligkeit
Nächster Monat
- Mindestwichtigkeit?
- Wichtigkeit …
+ Mindestpriorität?
+ Priorität…
Schlagwort: \?
Schlagwort …
Schlagwort enthält …
@@ -249,7 +249,7 @@
Wenn überfällig
Wenn fällig
Schlagwörter
- Wichtigkeit ändern
+ Priorität ändern
Filter
Für eine Stunde
Vormittag
@@ -485,10 +485,10 @@
NICHT
ODER
Filterkriterien
- Keine Wichtigkeit
- Niedrige Wichtigkeit
- Mittlere Wichtigkeit
- Hohe Wichtigkeit
+ Keine Priorität
+ Niedrige Priorität
+ Mittlere Priorität
+ Hohe Priorität
Nur heute
Nach Erstellungszeit
Ab morgen
@@ -724,4 +724,6 @@
Wiederholt sich
Monatlich an Tag %1d
Monatlich an dem %1$s %2$s
+ %s werden gelöscht
+ Dynamisch
\ No newline at end of file
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 2ddcd5473..c12f1cf0a 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -517,7 +517,7 @@
J\'ai compris !
Déverrouillez des fonctionnalités supplémentaires et soutenez les logiciels à code source ouvert
Appréciez-vous Tasks \?
- Quoi de neuf \?
+ Quoi de neuf ?
Nouvelle tâche
hier
demain
@@ -746,4 +746,5 @@
Répéter le
Jamais
Modifier la priorité
+ Dynamique
\ No newline at end of file
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 81a212e43..64ad079e0 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -136,58 +136,72 @@
Personalizado…
- %d tarefa
+ - %d tarefas
- %d tarefas
- vez
+ - vezes
- vezes
- minuto
+ - minutos
- minutos
- %d minuto
+ - %d minutos
- %d minutos
- hora
+ - horas
- horas
- %d hora
+ - %d horas
- %d horas
- dia
+ - dias
- dias
- %d dia
+ - %d dias
- %d dias
- semana
+ - semanas
- semanas
- %d semana
+ - %d semanas
- %d semanas
- mês
+ - meses
- meses
- %d mês
+ - %d meses
- %d meses
- ano
+ - anos
- anos
- %d ano
+ - %d anos
- %d anos
data de vencimento
@@ -210,6 +224,7 @@
Tarefa adicionada
- 1 tarefa
+ - %d tarefas
- %d tarefas
Hoje
@@ -473,6 +488,7 @@
hoje
- %d sub-tarefa
+ - %d sub-tarefas
- %d sub-tarefas
Na lista…
@@ -636,6 +652,7 @@
Data de conclusão
- %d lista
+ - %d listas
- %d listas
Qualquer data de início
@@ -656,18 +673,22 @@
Superior
- Minuto
+ - Minutos
- Minutos
- Hora
+ - Horas
- Horas
- Dia
+ - Dias
- Dias
- Semana
+ - Semanas
- Semanas
Quando começar
@@ -697,7 +718,7 @@
Seu endereço de e-mail e ID de conta serão transmitidos e armazenados pelo Tasks.org. Estas informações serão usadas para autenticação e para fornecer-lhe anúncios importantes relacionados ao serviço. Estas informações não serão compartilhadas com ninguém.
Ativar lembretes
Sincronizar com a sua conta Microsoft pessoal
- Os lembretes estão desativados nas configurações do Android
+ Os lembretes estão desabilitados nas Configurações do Android
Data de criação
Entrar
Recorrência personalizada
@@ -712,7 +733,7 @@
Por lista
Listagem
Mensalmente na %1$s %2$s
- Por data de conclusão
+ Por hora de conclusão
Conclusão %s
Repete a cada
Repete em
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index b187e6bfa..076aa0c57 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -280,7 +280,7 @@
Fundo
Dia/noite
Idioma
- O Tasks precisa ser reiniciado para que a mudança entre em vigor
+ Reinicie o Tasks para que esta alteração tenha efeito
Reiniciar agora
Mais tarde
Tradução
@@ -302,9 +302,9 @@
Repetir de
Repetir %s
Repetir %1$s em %2$s
- Repetir %1$s até %2$s
+ Repetir %1$s, termina em %2$s
Repetir %1$s, ocorre %2$d %3$s
- Repetir %1$s em %2$s até %3$s
+ Repetir %1$s em %2$s, termina em %3$s
Repetir %1$s em %2$s, ocorre %3$d %4$s
a cada minuto
de hora em hora
@@ -314,13 +314,13 @@
anualmente
Repetir a cada %s
Repetir a cada %1$s em %2$s
- Repetir a cada %1$s até %2$s
+ Repetir a cada %1$s, termina em %2$s
Repetir a cada %1$s, ocorre %2$d %3$s
- Repetir a cada %1$s em %2$s até %3$s
+ Repetir a cada %1$s em %2$s, termina em %3$s
Repetir a cada %1$s em %2$s, ocorre %3$d %4$s
Não adicionar ao calendário
Calendário predefinido
- Combinar várias notificações numa só notificação
+ Combinar várias notificações numa só
cada %1$s %2$s
primeiro
segundo
@@ -525,11 +525,11 @@
Acima da média
Guardar %d%%
Mover %s para Tasks.org
- Autorização
+ Autorização cancelada
Entrar em r/tasks
Subscrição atual: %s
- %s$/mês
- %s$/ano
+ $%s/mês
+ $%s/ano
É uma subtarefa
AVISO: os ficheiros localizados em \"%s\" serão eliminados se o Tasks for desinstalado! Escolha outra localização para impedir que o Android elimine os seus ficheiros.
Ignorar avisos
@@ -687,9 +687,9 @@
Desconhecido
Outro
Tipo de servidor
- Rearrange ou remova campos
+ Reorganizar ou remover campos
Demasiada informação\?
- Pode costumizar este ecrã rearranjando ou removendo campos
+ Pode personalizar este ecrã reorganizando ou removendo campos
Adiado
Dispensar
Ativar lembretes
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 9a17c0f5a..d80539f41 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -400,7 +400,7 @@
Min ordning
Fel: %s
Listor
- Modifierad %s
+ Ändrad %s
Skapad %s
Ingen prioritet
Låg prioritet
@@ -563,7 +563,7 @@
Färgerna kommer att avmattas i mörka teman
Dölj oanvända platser
Dölj oanvända taggar
- Navigationslåda
+ Navigeringslåda
Färger avmattas inte i mörka teman
Avmatta färger
Utseende av flis
@@ -720,4 +720,5 @@
OK
Avbryt
%s kommer att tas bort
+ Dynamisk
\ No newline at end of file
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index b0705a49b..b4d2bd864 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -328,9 +328,9 @@
Şundan sonra yinele
%s yineler
%2$s gününde %1$s yineler
- %2$s gününe dek %1$s yineler
+ %1$s yineler, %2$s biter
%1$s yineler, %2$d %3$s gerçekleşir
- %3$s gününe dek %2$s gününde %1$s yineler
+ %2$s gününde %1$s yineler, %3$s biter
%2$s gününde %1$s yineler, %3$d %4$s gerçekleşir
Dakikalık
Saatlik
@@ -340,9 +340,9 @@
Yıllık
Her %s yineler
%2$s gününde her %1$s yineler
- %2$s gününe dek her %1$s yineler
+ Her %1$s yineler, %2$s biter
Her %1$s yineler, %2$d %3$s gerçekleşir
- %3$s gününe dek %2$s gününde her %1$s yineler
+ %2$s gününde her %1$s yineler, %3$s biter
%2$s gününde her %1$s yineler, %3$d %4$s gerçekleşir
Takvime ekleme
Öntanımlı takvim
@@ -725,4 +725,5 @@
Kümeleme
Önceliği değiştir
%s silinecek
+ Dinamik
\ No newline at end of file
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index e27ac97f6..3649f10cf 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -16,6 +16,14 @@
- @string/none
+
+ - @string/swipe_to_snooze_time_immediately
+ - @string/swipe_to_snooze_time_15_minutes
+ - @string/swipe_to_snooze_time_30_minutes
+ - @string/swipe_to_snooze_time_1_hour
+ - @string/swipe_to_snooze_time_24_hours
+
+
- @string/ring_once
- @string/ring_five_times
diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml
index 1deb27cec..f3e1fe542 100644
--- a/app/src/main/res/values/keys.xml
+++ b/app/src/main/res/values/keys.xml
@@ -75,6 +75,17 @@
notif_annoy
+ notif_swipe_to_snooze_enabled
+ notif_swipe_to_snooze_time_minutes
+
+
+ - 0
+ - 15
+ - 30
+ - 60
+ - 1440
+
+
notif_vibrate
@@ -98,6 +109,7 @@
p_show_task_edit_comments
+ show_edit_screen_without_unlock
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fc85a21dc..c0992ff0d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -150,6 +150,14 @@ File %1$s contained %2$s.\n\n
Notifications for tasks without due times will appear at %s
Persistent notifications
Persistent notifications cannot be cleared
+ Swipe to snooze
+ Snooze time
+ A cleared notification will be snoozed and recreated %s
+ immediately
+ after 15 minutes
+ after 30 minutes
+ after 1 hour
+ after 24 hours
Random reminders
Disabled
Hourly
@@ -369,6 +377,8 @@ File %1$s contained %2$s.\n\n
Must begin with http(s)://
(No title)
Back button saves task
+ Show edit screen without unlock
+ Enables use of Quick Settings tile without unlocking device
Default list
Default tags
Default recurrence
diff --git a/app/src/main/res/xml/preferences_notifications.xml b/app/src/main/res/xml/preferences_notifications.xml
index 3c285a030..9c73c2824 100644
--- a/app/src/main/res/xml/preferences_notifications.xml
+++ b/app/src/main/res/xml/preferences_notifications.xml
@@ -71,6 +71,23 @@
android:summary="@string/more_notification_settings_summary"
app:icon="@drawable/ic_open_in_new_24px" />
+
+
+
+
+
+
+
+
+
diff --git a/deps_fdroid.txt b/deps_fdroid.txt
index 315ce64ed..3f59d8b94 100644
--- a/deps_fdroid.txt
+++ b/deps_fdroid.txt
@@ -1,4 +1,4 @@
-++--- androidx.databinding:viewbinding:8.3.1
+++--- androidx.databinding:viewbinding:8.3.2
+| \--- androidx.annotation:annotation:1.0.0 -> 1.7.1
+| \--- androidx.annotation:annotation-jvm:1.7.1
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 1.9.22
@@ -6,16 +6,16 @@
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0 -> 1.9.22 (c)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.22 (c)
+| \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22 (c)
-++--- androidx.databinding:databinding-common:8.3.1
-++--- androidx.databinding:databinding-runtime:8.3.1
+++--- androidx.databinding:databinding-common:8.3.2
+++--- androidx.databinding:databinding-runtime:8.3.2
+| +--- androidx.collection:collection:1.0.0 -> 1.4.0
+| | \--- androidx.collection:collection-jvm:1.4.0
+| | +--- androidx.annotation:annotation:1.7.0 -> 1.7.1 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 1.9.22 (*)
+| | +--- androidx.collection:collection-ktx:1.4.0 (c)
+| | \--- androidx.collection:collection-ktx:1.3.0 -> 1.4.0 (c)
-+| +--- androidx.databinding:databinding-common:8.3.1
-+| +--- androidx.databinding:viewbinding:8.3.1 (*)
++| +--- androidx.databinding:databinding-common:8.3.2
++| +--- androidx.databinding:viewbinding:8.3.2 (*)
+| \--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.7.0
+| +--- androidx.annotation:annotation:1.1.0 -> 1.7.1 (*)
+| +--- androidx.arch.core:core-common:2.2.0
@@ -80,11 +80,11 @@
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.7.0 (c)
+| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0 (c)
+| \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.7.0 (c)
-++--- androidx.databinding:databinding-adapters:8.3.1
-+| +--- androidx.databinding:databinding-runtime:8.3.1 (*)
-+| \--- androidx.databinding:databinding-common:8.3.1
-++--- androidx.databinding:databinding-ktx:8.3.1
-+| +--- androidx.databinding:databinding-runtime:8.3.1 (*)
+++--- androidx.databinding:databinding-adapters:8.3.2
++| +--- androidx.databinding:databinding-runtime:8.3.2 (*)
++| \--- androidx.databinding:databinding-common:8.3.2
+++--- androidx.databinding:databinding-ktx:8.3.2
++| +--- androidx.databinding:databinding-runtime:8.3.2 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20 -> 1.9.22 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1 -> 1.7.3 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.1 -> 2.7.0
@@ -263,10 +263,10 @@
+| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 1.9.22 (*)
+| \--- androidx.core:core:1.12.0 (c)
++--- com.github.bitfireAT:cert4android:7814052
-+| +--- androidx.databinding:databinding-common:7.2.0 -> 8.3.1
-+| +--- androidx.databinding:databinding-runtime:7.2.0 -> 8.3.1 (*)
-+| +--- androidx.databinding:databinding-adapters:7.2.0 -> 8.3.1 (*)
-+| +--- androidx.databinding:databinding-ktx:7.2.0 -> 8.3.1 (*)
++| +--- androidx.databinding:databinding-common:7.2.0 -> 8.3.2
++| +--- androidx.databinding:databinding-runtime:7.2.0 -> 8.3.2 (*)
++| +--- androidx.databinding:databinding-adapters:7.2.0 -> 8.3.2 (*)
++| +--- androidx.databinding:databinding-ktx:7.2.0 -> 8.3.2 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21 -> 1.9.22 (*)
+| +--- androidx.appcompat:appcompat:1.4.1 -> 1.6.1
+| | +--- androidx.activity:activity:1.6.0 -> 1.8.2
@@ -1018,7 +1018,7 @@
++--- androidx.compose.ui:ui-viewbinding -> 1.6.4
+| +--- androidx.compose.ui:ui:1.6.4 (*)
+| +--- androidx.compose.ui:ui-util:1.6.4 (*)
-+| +--- androidx.databinding:viewbinding:4.1.2 -> 8.3.1 (*)
++| +--- androidx.databinding:viewbinding:4.1.2 -> 8.3.2 (*)
+| +--- androidx.fragment:fragment-ktx:1.3.2 -> 1.6.2 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 1.9.22 (*)
+| +--- androidx.compose.ui:ui:1.6.4 (c)
diff --git a/deps_googleplay.txt b/deps_googleplay.txt
index 6fe79a9ed..00021f8b9 100644
--- a/deps_googleplay.txt
+++ b/deps_googleplay.txt
@@ -1,4 +1,4 @@
-++--- androidx.databinding:viewbinding:8.3.1
+++--- androidx.databinding:viewbinding:8.3.2
+| \--- androidx.annotation:annotation:1.0.0 -> 1.7.1
+| \--- androidx.annotation:annotation-jvm:1.7.1
+| \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 1.9.22
@@ -6,16 +6,16 @@
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0 -> 1.9.22 (c)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0 -> 1.9.22 (c)
+| \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.22 (c)
-++--- androidx.databinding:databinding-common:8.3.1
-++--- androidx.databinding:databinding-runtime:8.3.1
+++--- androidx.databinding:databinding-common:8.3.2
+++--- androidx.databinding:databinding-runtime:8.3.2
+| +--- androidx.collection:collection:1.0.0 -> 1.4.0
+| | \--- androidx.collection:collection-jvm:1.4.0
+| | +--- androidx.annotation:annotation:1.7.0 -> 1.7.1 (*)
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 1.9.22 (*)
+| | +--- androidx.collection:collection-ktx:1.4.0 (c)
+| | \--- androidx.collection:collection-ktx:1.3.0 -> 1.4.0 (c)
-+| +--- androidx.databinding:databinding-common:8.3.1
-+| +--- androidx.databinding:viewbinding:8.3.1 (*)
++| +--- androidx.databinding:databinding-common:8.3.2
++| +--- androidx.databinding:viewbinding:8.3.2 (*)
+| \--- androidx.lifecycle:lifecycle-runtime:2.6.1 -> 2.7.0
+| +--- androidx.annotation:annotation:1.1.0 -> 1.7.1 (*)
+| +--- androidx.arch.core:core-common:2.2.0
@@ -81,11 +81,11 @@
+| +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.7.0 (c)
+| +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0 (c)
+| \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.7.0 (c)
-++--- androidx.databinding:databinding-adapters:8.3.1
-+| +--- androidx.databinding:databinding-runtime:8.3.1 (*)
-+| \--- androidx.databinding:databinding-common:8.3.1
-++--- androidx.databinding:databinding-ktx:8.3.1
-+| +--- androidx.databinding:databinding-runtime:8.3.1 (*)
+++--- androidx.databinding:databinding-adapters:8.3.2
++| +--- androidx.databinding:databinding-runtime:8.3.2 (*)
++| \--- androidx.databinding:databinding-common:8.3.2
+++--- androidx.databinding:databinding-ktx:8.3.2
++| +--- androidx.databinding:databinding-runtime:8.3.2 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.20 -> 1.9.22 (*)
+| +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1 -> 1.7.3 (*)
+| +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.1 -> 2.7.0
@@ -605,10 +605,10 @@
+| | \--- org.slf4j:slf4j-api:2.0.3
+| \--- androidx.core:core-ktx:1.9.0 -> 1.12.0 (*)
++--- com.github.bitfireAT:cert4android:7814052
-+| +--- androidx.databinding:databinding-common:7.2.0 -> 8.3.1
-+| +--- androidx.databinding:databinding-runtime:7.2.0 -> 8.3.1 (*)
-+| +--- androidx.databinding:databinding-adapters:7.2.0 -> 8.3.1 (*)
-+| +--- androidx.databinding:databinding-ktx:7.2.0 -> 8.3.1 (*)
++| +--- androidx.databinding:databinding-common:7.2.0 -> 8.3.2
++| +--- androidx.databinding:databinding-runtime:7.2.0 -> 8.3.2 (*)
++| +--- androidx.databinding:databinding-adapters:7.2.0 -> 8.3.2 (*)
++| +--- androidx.databinding:databinding-ktx:7.2.0 -> 8.3.2 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21 -> 1.9.22 (*)
+| +--- androidx.appcompat:appcompat:1.4.1 -> 1.6.1 (*)
+| +--- androidx.cardview:cardview:1.0.0
@@ -1243,7 +1243,7 @@
++--- androidx.compose.ui:ui-viewbinding -> 1.6.4
+| +--- androidx.compose.ui:ui:1.6.4 (*)
+| +--- androidx.compose.ui:ui-util:1.6.4 (*)
-+| +--- androidx.databinding:viewbinding:4.1.2 -> 8.3.1 (*)
++| +--- androidx.databinding:viewbinding:4.1.2 -> 8.3.2 (*)
+| +--- androidx.fragment:fragment-ktx:1.3.2 -> 1.6.2 (*)
+| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 1.9.22 (*)
+| +--- androidx.compose.ui:ui:1.6.4 (c)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index cd1837293..b17560f8f 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,15 +15,15 @@ dashclock-api = "2.0.0"
dav4jvm = "2.2.1"
desugar_jdk_libs = "2.0.4"
etebase = "2.3.2"
-firebase = "32.0.0"
-firebase-crashlytics-gradle = "2.9.5"
-flipper = "0.191.0"
-fragment-ktx = "1.5.7"
-google-oauth2 = "0.27.0"
-google-api-drive = "v3-rev20230423-2.0.0"
-google-api-tasks = "v1-rev20230401-2.0.0"
-google-services = "4.3.15"
-gradle = "8.2.1"
+firebase = "32.7.4"
+firebase-crashlytics-gradle = "2.9.9"
+flipper = "0.250.0"
+fragment-ktx = "1.6.2"
+google-oauth2 = "1.20.0"
+google-api-drive = "v3-rev20240123-2.0.0"
+google-api-tasks = "v1-rev20240225-2.0.0"
+google-services = "4.4.1"
+gradle = "8.3.2"
gson = "2.10.1"
hilt = "1.2.0"
ical4android = "12fe73a"