fb57156ee9
listCalendars теперь забирает и cs:getctag (тот же PROPFIND — ноль лишних запросов; DavCalendar.ctag). Новый CalendarEventsCache — дисковый кэш СЫРЫХ REPORT-ответов per (аккаунт, календарь, диапазон), ключ — CTag: не менялся → события парсятся с диска (боевым парсером CalDavClient), REPORT-запросы в сеть не идут. Изменился → сеть + обновление кэша. Хранение сырого XML вместо сериализации моделей — без хрупкого JSON-маппинга ~20 полей события; чистка записей старше 30 дней. CalDavClient.queryEventsInRange разделён на queryEventsRawXml + parseEventsXml (поведение прежнее). Эффект: переключение месяцев, периодический рефреш и возврат в календарь при неизменных календарях — 1 PROPFIND вместо 1+N REPORT. +5 unit-тестов кэша (JVM, TemporaryFolder).
43 lines
1.1 KiB
Groovy
43 lines
1.1 KiB
Groovy
plugins {
|
|
id 'com.android.library'
|
|
id 'org.jetbrains.kotlin.android'
|
|
id 'org.jetbrains.kotlin.plugin.compose'
|
|
}
|
|
|
|
android {
|
|
namespace 'ru.forbion.f7cloud.feature.calendar'
|
|
compileSdk 36
|
|
|
|
defaultConfig {
|
|
minSdk 26
|
|
}
|
|
buildFeatures {
|
|
compose true
|
|
}
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_17
|
|
targetCompatibility JavaVersion.VERSION_17
|
|
}
|
|
kotlinOptions {
|
|
jvmTarget = '17'
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation project(':core:auth')
|
|
implementation project(':core:network')
|
|
implementation project(':core:designsystem')
|
|
implementation libs.coroutines.android
|
|
def composeBom = platform(libs.compose.bom)
|
|
implementation composeBom
|
|
implementation libs.compose.ui
|
|
implementation libs.compose.material3
|
|
implementation libs.compose.foundation
|
|
implementation libs.lifecycle.viewmodel.compose
|
|
implementation libs.activity.compose
|
|
implementation libs.core.ktx
|
|
implementation libs.coil.compose
|
|
implementation libs.coil.svg
|
|
testImplementation libs.junit
|
|
}
|