diff --git a/changelog.d/1790.bugfix b/changelog.d/1790.bugfix new file mode 100644 index 0000000000..db8ea93406 --- /dev/null +++ b/changelog.d/1790.bugfix @@ -0,0 +1 @@ +Always ensure media temp dir exists diff --git a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/VectorFileLogger.kt b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/VectorFileLogger.kt index 6b5d7c9096..e848082e91 100644 --- a/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/VectorFileLogger.kt +++ b/features/rageshake/impl/src/main/kotlin/io/element/android/features/rageshake/impl/logs/VectorFileLogger.kt @@ -37,7 +37,7 @@ import java.util.logging.Logger * Will be planted in Timber. */ class VectorFileLogger( - context: Context, + private val context: Context, // private val vectorPreferences: VectorPreferences private val dispatcher: CoroutineDispatcher = Dispatchers.IO, ) : Timber.Tree() { @@ -66,7 +66,9 @@ class VectorFileLogger( } private val fileHandler: FileHandler? - private val cacheDirectory = File(context.cacheDir, "logs") + private val cacheDirectory get() = File(context.cacheDir, "logs").apply { + if (!exists()) mkdirs() + } private var fileNamePrefix = "logs" private val prioPrefixes = mapOf( @@ -79,10 +81,6 @@ class VectorFileLogger( ) init { - if (!cacheDirectory.exists()) { - cacheDirectory.mkdirs() - } - for (i in 0..15) { val file = File(cacheDirectory, "elementLogs.${i}.txt") file.safeDelete() diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt index 12a273f03c..fab0146f9d 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt @@ -30,18 +30,17 @@ import java.io.File import org.matrix.rustcomponents.sdk.MediaSource as RustMediaSource class RustMediaLoader( - baseCacheDirectory: File, + private val baseCacheDirectory: File, dispatchers: CoroutineDispatchers, private val innerClient: Client, ) : MatrixMediaLoader { @OptIn(ExperimentalCoroutinesApi::class) private val mediaDispatcher = dispatchers.io.limitedParallelism(32) - private val cacheDirectory = File(baseCacheDirectory, "temp/media").apply { - if (!exists()) { - mkdirs() + private val cacheDirectory + get() = File(baseCacheDirectory, "temp/media").apply { + if (!exists()) mkdirs() // Must always ensure that this directory exists because "Clear cache" does not restart an app's process. } - } @OptIn(ExperimentalUnsignedTypes::class) override suspend fun loadMediaContent(source: MediaSource): Result =