package com.adlerosn.brasilfurfest.schedule.managers import android.content.Context import android.content.res.Resources import com.adlerosn.brasilfurfest.helper.joinFile import com.adlerosn.brasilfurfest.helper.lastPathPart import com.adlerosn.brasilfurfest.helper.nullFun import java.io.File import java.io.InputStream import java.lang.Exception class OfflineCacheManager(context: Context): CacheManager() { private val assets = context.assets private val cacheDir = context.cacheDir override val goesOnline = false override val preloaded = false override fun getStamp(file: String): String? = get(file)?.second override fun get(file: String): Pair? = try { Pair(assets.open("out/$file"), UNIX_TIMESTAMP_START) } catch (e: Exception) { null } override fun set(file: String, requestResult: Pair) = nullFun() override fun delete(file: String) = false override fun sanitize() = 0 override fun startMonitoringNeededFiles() = nullFun() override fun removeNotNeededFiles() = 0 override val files get() = (assets.list("out") ?: arrayOf()).toSet() override fun getFileFor(asset: String): File { val cachedFile = cacheDir.joinFile(asset.lastPathPart()) if(!cachedFile.exists()){ val assetDescriptor = get(asset.lastPathPart()) if (assetDescriptor == null) throw Resources.NotFoundException("Unavailable asset: $asset") else cachedFile.writeBytes(assetDescriptor.first.readBytes()) } return cachedFile } }