Clean up old PDF files at startup
This commit is contained in:
@@ -28,3 +28,10 @@ fun getAvailableFilename(desiredFile: File): File {
|
|||||||
}
|
}
|
||||||
return file
|
return file
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun cleanUpOldFiles(dir: File, thresholdInMillis: Int) {
|
||||||
|
val now = System.currentTimeMillis()
|
||||||
|
dir.listFiles { file -> now - file.lastModified() > thresholdInMillis }
|
||||||
|
?.forEach { file -> file.delete() }
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import androidx.core.content.FileProvider
|
|||||||
import androidx.core.net.toFile
|
import androidx.core.net.toFile
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
|
import androidx.lifecycle.lifecycleScope
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@@ -52,6 +53,9 @@ class MainActivity : ComponentActivity() {
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
initLibraries()
|
initLibraries()
|
||||||
|
lifecycleScope.launch(Dispatchers.IO) {
|
||||||
|
cleanUpOldFiles(File(cacheDir, "pdfs"), 1000 * 3600)
|
||||||
|
}
|
||||||
val viewModel: MainViewModel by viewModels { MainViewModel.getFactory(this) }
|
val viewModel: MainViewModel by viewModels { MainViewModel.getFactory(this) }
|
||||||
enableEdgeToEdge()
|
enableEdgeToEdge()
|
||||||
setContent {
|
setContent {
|
||||||
|
|||||||
@@ -28,17 +28,38 @@ class FileUtilsTest {
|
|||||||
val f1 = File(dir, "f_1.pdf")
|
val f1 = File(dir, "f_1.pdf")
|
||||||
val f2 = File(dir, "f_2.pdf")
|
val f2 = File(dir, "f_2.pdf")
|
||||||
|
|
||||||
assertThat(f.exists()).isFalse
|
assertThat(f).doesNotExist()
|
||||||
assertThat(f1.exists()).isFalse
|
assertThat(f1).doesNotExist()
|
||||||
assertThat(getAvailableFilename(f)).isEqualTo(f)
|
assertThat(getAvailableFilename(f)).isEqualTo(f)
|
||||||
|
|
||||||
f.apply { writeText("dummy") }
|
f.apply { writeText("dummy") }
|
||||||
assertThat(f.exists()).isTrue
|
assertThat(f).exists()
|
||||||
assertThat(getAvailableFilename(f)).isEqualTo(f1)
|
assertThat(getAvailableFilename(f)).isEqualTo(f1)
|
||||||
|
|
||||||
f1.apply { writeText("dummy") }
|
f1.apply { writeText("dummy") }
|
||||||
assertThat(f1.exists()).isTrue
|
assertThat(f1).exists()
|
||||||
assertThat(getAvailableFilename(f)).isEqualTo(f2)
|
assertThat(getAvailableFilename(f)).isEqualTo(f2)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun cleanUpOldFiles() {
|
||||||
|
val dir = createTempDirectory().toFile()
|
||||||
|
val subDir = File(dir,"subDir")
|
||||||
|
cleanUpOldFiles(subDir, 10)
|
||||||
|
assertThat(subDir).doesNotExist()
|
||||||
|
|
||||||
|
subDir.mkdirs()
|
||||||
|
assertThat(subDir).exists()
|
||||||
|
val file1 = File(subDir, "file1")
|
||||||
|
file1.createNewFile()
|
||||||
|
val file2 = File(subDir, "file2")
|
||||||
|
file2.createNewFile()
|
||||||
|
|
||||||
|
val now = System.currentTimeMillis()
|
||||||
|
file1.setLastModified(now - 10_000)
|
||||||
|
file2.setLastModified(now - 11_000)
|
||||||
|
cleanUpOldFiles(subDir, 10_500)
|
||||||
|
assertThat(file1).exists()
|
||||||
|
assertThat(file2).doesNotExist()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user