Skip to content

Commit 50a123d

Browse files
committed
Clean up old PDF files at startup
1 parent efef662 commit 50a123d

File tree

3 files changed

+36
-4
lines changed

3 files changed

+36
-4
lines changed

app/src/main/java/org/mydomain/myscan/FileUtils.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,10 @@ fun getAvailableFilename(desiredFile: File): File {
2828
}
2929
return file
3030
}
31+
32+
fun cleanUpOldFiles(dir: File, thresholdInMillis: Int) {
33+
val now = System.currentTimeMillis()
34+
dir.listFiles { file -> now - file.lastModified() > thresholdInMillis }
35+
?.forEach { file -> file.delete() }
36+
}
37+

app/src/main/java/org/mydomain/myscan/MainActivity.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import androidx.core.content.FileProvider
3232
import androidx.core.net.toFile
3333
import androidx.core.net.toUri
3434
import androidx.lifecycle.compose.collectAsStateWithLifecycle
35+
import androidx.lifecycle.lifecycleScope
3536
import kotlinx.coroutines.CoroutineScope
3637
import kotlinx.coroutines.Dispatchers
3738
import kotlinx.coroutines.launch
@@ -52,6 +53,9 @@ class MainActivity : ComponentActivity() {
5253
override fun onCreate(savedInstanceState: Bundle?) {
5354
super.onCreate(savedInstanceState)
5455
initLibraries()
56+
lifecycleScope.launch(Dispatchers.IO) {
57+
cleanUpOldFiles(File(cacheDir, "pdfs"), 1000 * 3600)
58+
}
5559
val viewModel: MainViewModel by viewModels { MainViewModel.getFactory(this) }
5660
enableEdgeToEdge()
5761
setContent {

app/src/test/java/org/mydomain/myscan/FileUtilsTest.kt

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,38 @@ class FileUtilsTest {
2828
val f1 = File(dir, "f_1.pdf")
2929
val f2 = File(dir, "f_2.pdf")
3030

31-
assertThat(f.exists()).isFalse
32-
assertThat(f1.exists()).isFalse
31+
assertThat(f).doesNotExist()
32+
assertThat(f1).doesNotExist()
3333
assertThat(getAvailableFilename(f)).isEqualTo(f)
3434

3535
f.apply { writeText("dummy") }
36-
assertThat(f.exists()).isTrue
36+
assertThat(f).exists()
3737
assertThat(getAvailableFilename(f)).isEqualTo(f1)
3838

3939
f1.apply { writeText("dummy") }
40-
assertThat(f1.exists()).isTrue
40+
assertThat(f1).exists()
4141
assertThat(getAvailableFilename(f)).isEqualTo(f2)
4242
}
4343

44+
@Test
45+
fun cleanUpOldFiles() {
46+
val dir = createTempDirectory().toFile()
47+
val subDir = File(dir,"subDir")
48+
cleanUpOldFiles(subDir, 10)
49+
assertThat(subDir).doesNotExist()
50+
51+
subDir.mkdirs()
52+
assertThat(subDir).exists()
53+
val file1 = File(subDir, "file1")
54+
file1.createNewFile()
55+
val file2 = File(subDir, "file2")
56+
file2.createNewFile()
57+
58+
val now = System.currentTimeMillis()
59+
file1.setLastModified(now - 10_000)
60+
file2.setLastModified(now - 11_000)
61+
cleanUpOldFiles(subDir, 10_500)
62+
assertThat(file1).exists()
63+
assertThat(file2).doesNotExist()
64+
}
4465
}

0 commit comments

Comments
 (0)