package ru.forbion.f7cloud.feature.tasks

/**
 * Лёгкий кэш в памяти на время жизни процесса: списки задач и задачи по каждому списку.
 * VM пересоздаётся при каждом открытии раздела Задач — без кэша это полный PROPFIND+REPORT
 * заново. Кэш даёт мгновенный показ, сеть обновляет в фоне.
 */
internal object TasksCache {
    @Volatile
    private var lists: List<TaskListItem>? = null
    private val tasksByList = java.util.concurrent.ConcurrentHashMap<String, List<TaskItem>>()

    fun cachedLists(): List<TaskListItem>? = lists

    fun putLists(value: List<TaskListItem>) {
        lists = value
    }

    fun cachedTasks(listHref: String): List<TaskItem>? = tasksByList[listHref]

    fun putTasks(listHref: String, value: List<TaskItem>) {
        tasksByList[listHref] = value
    }

    fun invalidateTasks(listHref: String) {
        tasksByList.remove(listHref)
    }
}
