Merge branch 'hotfix/1.1.4_fixes'

This commit is contained in:
Benoit Marty 2021-04-15 11:10:24 +02:00
commit 18cef243a1
9 changed files with 75 additions and 41 deletions

View File

@ -1,3 +1,10 @@
Changes in Element 1.1.5 (2021-XX-XX)
===================================================
Bugfix 🐛:
- Fix crash during Realm migration
- Fix crash when playing video (#3179)
Changes in Element 1.1.4 (2021-04-09) Changes in Element 1.1.4 (2021-04-09)
=================================================== ===================================================

View File

@ -0,0 +1,2 @@
Main changes in this version: hot fixes for 1.1.4
Full changelog: https://github.com/vector-im/element-android/releases/tag/v1.1.5

View File

@ -6,10 +6,13 @@ apply plugin: 'realm-android'
buildscript { buildscript {
repositories { repositories {
mavenCentral() // mavenCentral()
//noinspection GrDeprecatedAPIUsage
jcenter()
} }
dependencies { dependencies {
classpath "io.realm:realm-gradle-plugin:10.4.0" // Stick to this version until https://github.com/realm/realm-java/issues/7402 is fixed
classpath "io.realm:realm-gradle-plugin:10.3.1"
} }
} }

View File

@ -14,7 +14,7 @@ kapt {
// Note: 2 digits max for each value // Note: 2 digits max for each value
ext.versionMajor = 1 ext.versionMajor = 1
ext.versionMinor = 1 ext.versionMinor = 1
ext.versionPatch = 4 ext.versionPatch = 5
static def getGitTimestamp() { static def getGitTimestamp() {
def cmd = 'git show -s --format=%ct' def cmd = 'git show -s --format=%ct'

View File

@ -28,8 +28,10 @@ import com.bumptech.glide.signature.ObjectKey
import im.vector.app.core.extensions.vectorComponent import im.vector.app.core.extensions.vectorComponent
import im.vector.app.core.files.LocalFilesHelper import im.vector.app.core.files.LocalFilesHelper
import im.vector.app.features.media.ImageContentRenderer import im.vector.app.features.media.ImageContentRenderer
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import timber.log.Timber import timber.log.Timber
import java.io.IOException import java.io.IOException
@ -121,10 +123,12 @@ class VectorGlideDataFetcher(context: Context,
url = data.url, url = data.url,
elementToDecrypt = data.elementToDecrypt) elementToDecrypt = data.elementToDecrypt)
} }
result.fold( withContext(Dispatchers.Main) {
{ callback.onDataReady(it.inputStream()) }, result.fold(
{ callback.onLoadFailed(it as? Exception ?: IOException(it.localizedMessage)) } { callback.onDataReady(it.inputStream()) },
) { callback.onLoadFailed(it as? Exception ?: IOException(it.localizedMessage)) }
)
}
} }
// val url = contentUrlResolver.resolveFullSize(data.url) // val url = contentUrlResolver.resolveFullSize(data.url)
// ?: return // ?: return

View File

@ -31,8 +31,10 @@ import im.vector.lib.attachmentviewer.AttachmentInfo
import im.vector.lib.attachmentviewer.AttachmentSourceProvider import im.vector.lib.attachmentviewer.AttachmentSourceProvider
import im.vector.lib.attachmentviewer.ImageLoaderTarget import im.vector.lib.attachmentviewer.ImageLoaderTarget
import im.vector.lib.attachmentviewer.VideoLoaderTarget import im.vector.lib.attachmentviewer.VideoLoaderTarget
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.matrix.android.sdk.api.session.events.model.isVideoMessage import org.matrix.android.sdk.api.session.events.model.isVideoMessage
import org.matrix.android.sdk.api.session.file.FileService import org.matrix.android.sdk.api.session.file.FileService
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
@ -162,10 +164,12 @@ abstract class BaseAttachmentProvider<Type>(
elementToDecrypt = data.elementToDecrypt elementToDecrypt = data.elementToDecrypt
) )
} }
result.fold( withContext(Dispatchers.Main) {
{ target.onVideoFileReady(info.uid, it) }, result.fold(
{ target.onVideoFileLoadFailed(info.uid) } { target.onVideoFileReady(info.uid, it) },
) { target.onVideoFileLoadFailed(info.uid) }
)
}
} }
} }
} }

View File

@ -19,8 +19,10 @@ package im.vector.app.features.media
import im.vector.app.core.date.VectorDateFormatter import im.vector.app.core.date.VectorDateFormatter
import im.vector.app.core.resources.StringProvider import im.vector.app.core.resources.StringProvider
import im.vector.lib.attachmentviewer.AttachmentInfo import im.vector.lib.attachmentviewer.AttachmentInfo
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.matrix.android.sdk.api.session.file.FileService import org.matrix.android.sdk.api.session.file.FileService
import org.matrix.android.sdk.api.session.room.Room import org.matrix.android.sdk.api.session.room.Room
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
@ -87,7 +89,9 @@ class DataAttachmentRoomProvider(
elementToDecrypt = item.elementToDecrypt elementToDecrypt = item.elementToDecrypt
) )
} }
callback(result.getOrNull()) withContext(Dispatchers.Main) {
callback(result.getOrNull())
}
} }
} }
} }

View File

@ -19,8 +19,10 @@ package im.vector.app.features.media
import im.vector.app.core.date.VectorDateFormatter import im.vector.app.core.date.VectorDateFormatter
import im.vector.app.core.resources.StringProvider import im.vector.app.core.resources.StringProvider
import im.vector.lib.attachmentviewer.AttachmentInfo import im.vector.lib.attachmentviewer.AttachmentInfo
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.matrix.android.sdk.api.session.events.model.toModel import org.matrix.android.sdk.api.session.events.model.toModel
import org.matrix.android.sdk.api.session.file.FileService import org.matrix.android.sdk.api.session.file.FileService
import org.matrix.android.sdk.api.session.room.model.message.MessageContent import org.matrix.android.sdk.api.session.room.model.message.MessageContent
@ -134,7 +136,9 @@ class RoomEventsAttachmentProvider(
url = messageContent.getFileUrl(), url = messageContent.getFileUrl(),
elementToDecrypt = messageContent.encryptedFileInfo?.toElementToDecrypt()) elementToDecrypt = messageContent.encryptedFileInfo?.toElementToDecrypt())
} }
callback(result.getOrNull()) withContext(Dispatchers.Main) {
callback(result.getOrNull())
}
} }
} }
} }

View File

@ -25,8 +25,10 @@ import im.vector.app.R
import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.di.ActiveSessionHolder
import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.error.ErrorFormatter
import im.vector.app.core.files.LocalFilesHelper import im.vector.app.core.files.LocalFilesHelper
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlinx.parcelize.Parcelize import kotlinx.parcelize.Parcelize
import org.matrix.android.sdk.internal.crypto.attachments.ElementToDecrypt import org.matrix.android.sdk.internal.crypto.attachments.ElementToDecrypt
import timber.log.Timber import timber.log.Timber
@ -83,21 +85,23 @@ class VideoContentRenderer @Inject constructor(private val localFilesHelper: Loc
url = data.url, url = data.url,
elementToDecrypt = data.elementToDecrypt) elementToDecrypt = data.elementToDecrypt)
} }
result.fold( withContext(Dispatchers.Main) {
{ data -> result.fold(
thumbnailView.isVisible = false { data ->
loadingView.isVisible = false thumbnailView.isVisible = false
videoView.isVisible = true loadingView.isVisible = false
videoView.isVisible = true
videoView.setVideoPath(data.path) videoView.setVideoPath(data.path)
videoView.start() videoView.start()
}, },
{ {
loadingView.isVisible = false loadingView.isVisible = false
errorView.isVisible = true errorView.isVisible = true
errorView.text = errorFormatter.toHumanReadable(it) errorView.text = errorFormatter.toHumanReadable(it)
} }
) )
}
} }
} }
} else { } else {
@ -124,21 +128,23 @@ class VideoContentRenderer @Inject constructor(private val localFilesHelper: Loc
url = data.url, url = data.url,
elementToDecrypt = null) elementToDecrypt = null)
} }
result.fold( withContext(Dispatchers.Main) {
{ data -> result.fold(
thumbnailView.isVisible = false { data ->
loadingView.isVisible = false thumbnailView.isVisible = false
videoView.isVisible = true loadingView.isVisible = false
videoView.isVisible = true
videoView.setVideoPath(data.path) videoView.setVideoPath(data.path)
videoView.start() videoView.start()
}, },
{ {
loadingView.isVisible = false loadingView.isVisible = false
errorView.isVisible = true errorView.isVisible = true
errorView.text = errorFormatter.toHumanReadable(it) errorView.text = errorFormatter.toHumanReadable(it)
} }
) )
}
} }
} }
} }