Fixed crash when downloading file once VFS is enabled

This commit is contained in:
Sylvain Berfini 2021-04-07 15:38:39 +02:00
parent 571349953b
commit d1cbff473b
3 changed files with 6 additions and 3 deletions

View file

@ -85,6 +85,8 @@ class ChatMessageContentData(
} }
} }
private val isEncrypted = content.isFileEncrypted
private val scope = CoroutineScope(Dispatchers.Main + SupervisorJob()) private val scope = CoroutineScope(Dispatchers.Main + SupervisorJob())
init { init {
@ -136,7 +138,7 @@ class ChatMessageContentData(
scope.cancel() scope.cancel()
val path = filePath.value.orEmpty() val path = filePath.value.orEmpty()
if (content.isFileEncrypted && path.isNotEmpty()) { if (path.isNotEmpty() && isEncrypted) {
Log.i("[Content] Deleting file used for preview: $path") Log.i("[Content] Deleting file used for preview: $path")
FileUtils.deleteFile(path) FileUtils.deleteFile(path)
filePath.value = "" filePath.value = ""

View file

@ -74,7 +74,6 @@ class ChatMessageData(
// TODO FIXME : find a way to refresh outgoing message downloaded // TODO FIXME : find a way to refresh outgoing message downloaded
if (state == ChatMessage.State.FileTransferDone && !message.isOutgoing) { if (state == ChatMessage.State.FileTransferDone && !message.isOutgoing) {
Log.i("[Chat Message] File transfer done") Log.i("[Chat Message] File transfer done")
contents.value.orEmpty().forEach(ChatMessageContentData::destroy)
updateContentsList() updateContentsList()
if (!message.isEphemeral && corePreferences.makePublicMediaFilesDownloaded) { if (!message.isEphemeral && corePreferences.makePublicMediaFilesDownloaded) {

View file

@ -682,6 +682,7 @@ class CoreContext(val context: Context, coreConfig: Config) {
private const val LINPHONE_VFS_ENCRYPTION_AES256GCM128_SHA256 = 2 private const val LINPHONE_VFS_ENCRYPTION_AES256GCM128_SHA256 = 2
private const val VFS_IV = "vfsiv" private const val VFS_IV = "vfsiv"
private const val VFS_KEY = "vfskey" private const val VFS_KEY = "vfskey"
@Throws(java.lang.Exception::class) @Throws(java.lang.Exception::class)
private fun generateSecretKey() { private fun generateSecretKey() {
val keyGenerator = val keyGenerator =
@ -761,6 +762,7 @@ class CoreContext(val context: Context, coreConfig: Config) {
Base64.decode(sharedPreferences.getString(VFS_IV, null), Base64.DEFAULT) Base64.decode(sharedPreferences.getString(VFS_IV, null), Base64.DEFAULT)
) )
} }
fun activateVFS() { fun activateVFS() {
try { try {
Log.i("[Context] Activating VFS") Log.i("[Context] Activating VFS")
@ -781,7 +783,7 @@ class CoreContext(val context: Context, coreConfig: Config) {
32 32
) )
Log.i("[Context] VFS activated.") Log.i("[Context] VFS activated")
} catch (e: Exception) { } catch (e: Exception) {
Log.f("[Context] Unable to activate VFS encryption: $e") Log.f("[Context] Unable to activate VFS encryption: $e")
} }