Merge pull request #2896 from vector-im/feature/bma/dependabot
Upgrade dependencies
This commit is contained in:
commit
b38ff46af4
|
@ -17,7 +17,7 @@ SDK API changes ⚠️:
|
||||||
-
|
-
|
||||||
|
|
||||||
Build 🧱:
|
Build 🧱:
|
||||||
-
|
- Update a lot of dependencies, with the help of dependabot.
|
||||||
|
|
||||||
Test:
|
Test:
|
||||||
-
|
-
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
// Ref: https://kotlinlang.org/releases.html
|
// Ref: https://kotlinlang.org/releases.html
|
||||||
ext.kotlin_version = '1.4.21'
|
ext.kotlin_version = '1.4.30'
|
||||||
ext.kotlin_coroutines_version = "1.4.1"
|
ext.kotlin_coroutines_version = "1.4.2"
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
jcenter()
|
jcenter()
|
||||||
|
|
|
@ -145,7 +145,7 @@ dependencies {
|
||||||
|
|
||||||
// Database
|
// Database
|
||||||
implementation 'com.github.Zhuinden:realm-monarchy:0.7.1'
|
implementation 'com.github.Zhuinden:realm-monarchy:0.7.1'
|
||||||
kapt 'dk.ilios:realmfieldnameshelper:1.1.1'
|
kapt 'dk.ilios:realmfieldnameshelper:2.0.0'
|
||||||
|
|
||||||
// Work
|
// Work
|
||||||
implementation "androidx.work:work-runtime-ktx:$work_version"
|
implementation "androidx.work:work-runtime-ktx:$work_version"
|
||||||
|
|
|
@ -18,7 +18,6 @@ package org.matrix.android.sdk.internal.database.query
|
||||||
|
|
||||||
import org.matrix.android.sdk.internal.database.model.ChunkEntity
|
import org.matrix.android.sdk.internal.database.model.ChunkEntity
|
||||||
import org.matrix.android.sdk.internal.database.model.ChunkEntityFields
|
import org.matrix.android.sdk.internal.database.model.ChunkEntityFields
|
||||||
import org.matrix.android.sdk.internal.database.model.RoomEntityFields
|
|
||||||
import io.realm.Realm
|
import io.realm.Realm
|
||||||
import io.realm.RealmQuery
|
import io.realm.RealmQuery
|
||||||
import io.realm.RealmResults
|
import io.realm.RealmResults
|
||||||
|
@ -27,7 +26,7 @@ import io.realm.kotlin.where
|
||||||
|
|
||||||
internal fun ChunkEntity.Companion.where(realm: Realm, roomId: String): RealmQuery<ChunkEntity> {
|
internal fun ChunkEntity.Companion.where(realm: Realm, roomId: String): RealmQuery<ChunkEntity> {
|
||||||
return realm.where<ChunkEntity>()
|
return realm.where<ChunkEntity>()
|
||||||
.equalTo("${ChunkEntityFields.ROOM}.${RoomEntityFields.ROOM_ID}", roomId)
|
.equalTo(ChunkEntityFields.ROOM.ROOM_ID, roomId)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun ChunkEntity.Companion.find(realm: Realm, roomId: String, prevToken: String? = null, nextToken: String? = null): ChunkEntity? {
|
internal fun ChunkEntity.Companion.find(realm: Realm, roomId: String, prevToken: String? = null, nextToken: String? = null): ChunkEntity? {
|
||||||
|
|
|
@ -48,6 +48,6 @@ internal fun PushRuleEntity.Companion.where(realm: Realm,
|
||||||
scope: String,
|
scope: String,
|
||||||
ruleId: String): RealmQuery<PushRuleEntity> {
|
ruleId: String): RealmQuery<PushRuleEntity> {
|
||||||
return realm.where<PushRuleEntity>()
|
return realm.where<PushRuleEntity>()
|
||||||
.equalTo("${PushRuleEntityFields.PARENT}.${PushRulesEntityFields.SCOPE}", scope)
|
.equalTo(PushRuleEntityFields.PARENT.SCOPE, scope)
|
||||||
.equalTo(PushRuleEntityFields.RULE_ID, ruleId)
|
.equalTo(PushRuleEntityFields.RULE_ID, ruleId)
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
package org.matrix.android.sdk.internal.database.query
|
package org.matrix.android.sdk.internal.database.query
|
||||||
|
|
||||||
import org.matrix.android.sdk.internal.database.model.RoomSummaryEntityFields
|
|
||||||
import org.matrix.android.sdk.internal.database.model.UserDraftsEntity
|
import org.matrix.android.sdk.internal.database.model.UserDraftsEntity
|
||||||
import org.matrix.android.sdk.internal.database.model.UserDraftsEntityFields
|
import org.matrix.android.sdk.internal.database.model.UserDraftsEntityFields
|
||||||
import io.realm.Realm
|
import io.realm.Realm
|
||||||
|
@ -26,7 +25,7 @@ import io.realm.kotlin.where
|
||||||
internal fun UserDraftsEntity.Companion.where(realm: Realm, roomId: String? = null): RealmQuery<UserDraftsEntity> {
|
internal fun UserDraftsEntity.Companion.where(realm: Realm, roomId: String? = null): RealmQuery<UserDraftsEntity> {
|
||||||
val query = realm.where<UserDraftsEntity>()
|
val query = realm.where<UserDraftsEntity>()
|
||||||
if (roomId != null) {
|
if (roomId != null) {
|
||||||
query.equalTo(UserDraftsEntityFields.ROOM_SUMMARY_ENTITY + "." + RoomSummaryEntityFields.ROOM_ID, roomId)
|
query.equalTo(UserDraftsEntityFields.ROOM_SUMMARY_ENTITY.ROOM_ID, roomId)
|
||||||
}
|
}
|
||||||
return query
|
return query
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,6 @@ import org.matrix.android.sdk.api.util.CancelableBag
|
||||||
import org.matrix.android.sdk.internal.database.RealmSessionProvider
|
import org.matrix.android.sdk.internal.database.RealmSessionProvider
|
||||||
import org.matrix.android.sdk.internal.database.mapper.TimelineEventMapper
|
import org.matrix.android.sdk.internal.database.mapper.TimelineEventMapper
|
||||||
import org.matrix.android.sdk.internal.database.model.ChunkEntity
|
import org.matrix.android.sdk.internal.database.model.ChunkEntity
|
||||||
import org.matrix.android.sdk.internal.database.model.ChunkEntityFields
|
|
||||||
import org.matrix.android.sdk.internal.database.model.RoomEntity
|
import org.matrix.android.sdk.internal.database.model.RoomEntity
|
||||||
import org.matrix.android.sdk.internal.database.model.TimelineEventEntity
|
import org.matrix.android.sdk.internal.database.model.TimelineEventEntity
|
||||||
import org.matrix.android.sdk.internal.database.model.TimelineEventEntityFields
|
import org.matrix.android.sdk.internal.database.model.TimelineEventEntityFields
|
||||||
|
@ -688,11 +687,11 @@ internal class DefaultTimeline(
|
||||||
return if (initialEventId == null) {
|
return if (initialEventId == null) {
|
||||||
TimelineEventEntity
|
TimelineEventEntity
|
||||||
.whereRoomId(realm, roomId = roomId)
|
.whereRoomId(realm, roomId = roomId)
|
||||||
.equalTo("${TimelineEventEntityFields.CHUNK}.${ChunkEntityFields.IS_LAST_FORWARD}", true)
|
.equalTo(TimelineEventEntityFields.CHUNK.IS_LAST_FORWARD, true)
|
||||||
} else {
|
} else {
|
||||||
TimelineEventEntity
|
TimelineEventEntity
|
||||||
.whereRoomId(realm, roomId = roomId)
|
.whereRoomId(realm, roomId = roomId)
|
||||||
.`in`("${TimelineEventEntityFields.CHUNK}.${ChunkEntityFields.TIMELINE_EVENTS.EVENT_ID}", arrayOf(initialEventId))
|
.`in`("${TimelineEventEntityFields.CHUNK.TIMELINE_EVENTS}.${TimelineEventEntityFields.EVENT_ID}", arrayOf(initialEventId))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ import io.realm.RealmResults
|
||||||
import org.matrix.android.sdk.api.session.room.model.ReadReceipt
|
import org.matrix.android.sdk.api.session.room.model.ReadReceipt
|
||||||
import org.matrix.android.sdk.api.session.room.timeline.TimelineSettings
|
import org.matrix.android.sdk.api.session.room.timeline.TimelineSettings
|
||||||
import org.matrix.android.sdk.internal.database.mapper.ReadReceiptsSummaryMapper
|
import org.matrix.android.sdk.internal.database.mapper.ReadReceiptsSummaryMapper
|
||||||
|
import org.matrix.android.sdk.internal.database.model.EventEntityFields
|
||||||
import org.matrix.android.sdk.internal.database.model.ReadReceiptsSummaryEntity
|
import org.matrix.android.sdk.internal.database.model.ReadReceiptsSummaryEntity
|
||||||
import org.matrix.android.sdk.internal.database.model.ReadReceiptsSummaryEntityFields
|
import org.matrix.android.sdk.internal.database.model.ReadReceiptsSummaryEntityFields
|
||||||
import org.matrix.android.sdk.internal.database.model.TimelineEventEntity
|
import org.matrix.android.sdk.internal.database.model.TimelineEventEntity
|
||||||
|
@ -121,7 +122,7 @@ internal class TimelineHiddenReadReceipts constructor(private val readReceiptsSu
|
||||||
// We are looking for read receipts set on hidden events.
|
// We are looking for read receipts set on hidden events.
|
||||||
// We only accept those with a timelineEvent (so coming from pagination/sync).
|
// We only accept those with a timelineEvent (so coming from pagination/sync).
|
||||||
this.hiddenReadReceipts = ReadReceiptsSummaryEntity.whereInRoom(realm, roomId)
|
this.hiddenReadReceipts = ReadReceiptsSummaryEntity.whereInRoom(realm, roomId)
|
||||||
.isNotEmpty(ReadReceiptsSummaryEntityFields.TIMELINE_EVENT)
|
.isNotEmpty(ReadReceiptsSummaryEntityFields.TIMELINE_EVENT.`$`)
|
||||||
.isNotEmpty(ReadReceiptsSummaryEntityFields.READ_RECEIPTS.`$`)
|
.isNotEmpty(ReadReceiptsSummaryEntityFields.READ_RECEIPTS.`$`)
|
||||||
.filterReceiptsWithSettings()
|
.filterReceiptsWithSettings()
|
||||||
.findAllAsync()
|
.findAllAsync()
|
||||||
|
@ -157,12 +158,12 @@ internal class TimelineHiddenReadReceipts constructor(private val readReceiptsSu
|
||||||
// Result: D, F, H, I
|
// Result: D, F, H, I
|
||||||
settings.filters.allowedTypes.forEachIndexed { index, filter ->
|
settings.filters.allowedTypes.forEachIndexed { index, filter ->
|
||||||
if (filter.stateKey == null) {
|
if (filter.stateKey == null) {
|
||||||
notEqualTo("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT}.${TimelineEventEntityFields.ROOT.TYPE}", filter.eventType)
|
notEqualTo("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT.ROOT}.${EventEntityFields.TYPE}", filter.eventType)
|
||||||
} else {
|
} else {
|
||||||
beginGroup()
|
beginGroup()
|
||||||
notEqualTo("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT}.${TimelineEventEntityFields.ROOT.TYPE}", filter.eventType)
|
notEqualTo("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT.ROOT}.${EventEntityFields.TYPE}", filter.eventType)
|
||||||
or()
|
or()
|
||||||
notEqualTo("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT}.${TimelineEventEntityFields.ROOT.STATE_KEY}", filter.stateKey)
|
notEqualTo("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT.ROOT}.${EventEntityFields.STATE_KEY}", filter.stateKey)
|
||||||
endGroup()
|
endGroup()
|
||||||
}
|
}
|
||||||
if (index != settings.filters.allowedTypes.size - 1) {
|
if (index != settings.filters.allowedTypes.size - 1) {
|
||||||
|
@ -174,19 +175,19 @@ internal class TimelineHiddenReadReceipts constructor(private val readReceiptsSu
|
||||||
}
|
}
|
||||||
if (settings.filters.filterUseless) {
|
if (settings.filters.filterUseless) {
|
||||||
if (needOr) or()
|
if (needOr) or()
|
||||||
equalTo("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT}.${TimelineEventEntityFields.ROOT.IS_USELESS}", true)
|
equalTo("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT.ROOT}.${EventEntityFields.IS_USELESS}", true)
|
||||||
needOr = true
|
needOr = true
|
||||||
}
|
}
|
||||||
if (settings.filters.filterEdits) {
|
if (settings.filters.filterEdits) {
|
||||||
if (needOr) or()
|
if (needOr) or()
|
||||||
like("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT}.${TimelineEventEntityFields.ROOT.CONTENT}", TimelineEventFilter.Content.EDIT)
|
like("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT.ROOT}.${EventEntityFields.CONTENT}", TimelineEventFilter.Content.EDIT)
|
||||||
or()
|
or()
|
||||||
like("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT}.${TimelineEventEntityFields.ROOT.CONTENT}", TimelineEventFilter.Content.RESPONSE)
|
like("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT.ROOT}.${EventEntityFields.CONTENT}", TimelineEventFilter.Content.RESPONSE)
|
||||||
needOr = true
|
needOr = true
|
||||||
}
|
}
|
||||||
if (settings.filters.filterRedacted) {
|
if (settings.filters.filterRedacted) {
|
||||||
if (needOr) or()
|
if (needOr) or()
|
||||||
like("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT}.${TimelineEventEntityFields.ROOT.UNSIGNED_DATA}", TimelineEventFilter.Unsigned.REDACTED)
|
like("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT.ROOT}.${EventEntityFields.UNSIGNED_DATA}", TimelineEventFilter.Unsigned.REDACTED)
|
||||||
}
|
}
|
||||||
endGroup()
|
endGroup()
|
||||||
return this
|
return this
|
||||||
|
|
|
@ -299,6 +299,7 @@ dependencies {
|
||||||
def work_version = '2.5.0'
|
def work_version = '2.5.0'
|
||||||
def arch_version = '2.1.0'
|
def arch_version = '2.1.0'
|
||||||
def lifecycle_version = '2.2.0'
|
def lifecycle_version = '2.2.0'
|
||||||
|
def rxbinding_version = '3.1.0'
|
||||||
|
|
||||||
// Tests
|
// Tests
|
||||||
def kluent_version = '1.65'
|
def kluent_version = '1.65'
|
||||||
|
@ -345,9 +346,9 @@ dependencies {
|
||||||
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
|
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
|
||||||
implementation 'com.jakewharton.rxrelay2:rxrelay:2.1.1'
|
implementation 'com.jakewharton.rxrelay2:rxrelay:2.1.1'
|
||||||
// RXBinding
|
// RXBinding
|
||||||
implementation 'com.jakewharton.rxbinding3:rxbinding:3.1.0'
|
implementation "com.jakewharton.rxbinding3:rxbinding:$rxbinding_version"
|
||||||
implementation 'com.jakewharton.rxbinding3:rxbinding-appcompat:3.1.0'
|
implementation "com.jakewharton.rxbinding3:rxbinding-appcompat:$rxbinding_version"
|
||||||
implementation 'com.jakewharton.rxbinding3:rxbinding-material:3.1.0'
|
implementation "com.jakewharton.rxbinding3:rxbinding-material:$rxbinding_version"
|
||||||
|
|
||||||
implementation("com.airbnb.android:epoxy:$epoxy_version")
|
implementation("com.airbnb.android:epoxy:$epoxy_version")
|
||||||
implementation "com.airbnb.android:epoxy-glide-preloading:$epoxy_version"
|
implementation "com.airbnb.android:epoxy-glide-preloading:$epoxy_version"
|
||||||
|
@ -381,13 +382,13 @@ dependencies {
|
||||||
implementation 'com.github.vector-im:PFLockScreen-Android:1.0.0-beta12'
|
implementation 'com.github.vector-im:PFLockScreen-Android:1.0.0-beta12'
|
||||||
|
|
||||||
// Custom Tab
|
// Custom Tab
|
||||||
implementation 'androidx.browser:browser:1.2.0'
|
implementation 'androidx.browser:browser:1.3.0'
|
||||||
|
|
||||||
// Passphrase strength helper
|
// Passphrase strength helper
|
||||||
implementation 'com.nulab-inc:zxcvbn:1.4.0'
|
implementation 'com.nulab-inc:zxcvbn:1.4.0'
|
||||||
|
|
||||||
//Alerter
|
//Alerter
|
||||||
implementation 'com.tapadoo.android:alerter:5.1.2'
|
implementation 'com.tapadoo.android:alerter:7.0.1'
|
||||||
|
|
||||||
implementation 'com.otaliastudios:autocomplete:1.1.0'
|
implementation 'com.otaliastudios:autocomplete:1.1.0'
|
||||||
|
|
||||||
|
|
|
@ -33,14 +33,15 @@ import android.provider.Settings
|
||||||
import android.webkit.MimeTypeMap
|
import android.webkit.MimeTypeMap
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.activity.result.ActivityResultLauncher
|
import androidx.activity.result.ActivityResultLauncher
|
||||||
|
import androidx.browser.customtabs.CustomTabColorSchemeParams
|
||||||
import androidx.browser.customtabs.CustomTabsIntent
|
import androidx.browser.customtabs.CustomTabsIntent
|
||||||
import androidx.browser.customtabs.CustomTabsSession
|
import androidx.browser.customtabs.CustomTabsSession
|
||||||
import androidx.core.content.ContextCompat
|
|
||||||
import androidx.core.content.FileProvider
|
import androidx.core.content.FileProvider
|
||||||
import androidx.core.content.getSystemService
|
import androidx.core.content.getSystemService
|
||||||
import im.vector.app.BuildConfig
|
import im.vector.app.BuildConfig
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import im.vector.app.features.notifications.NotificationUtils
|
import im.vector.app.features.notifications.NotificationUtils
|
||||||
|
import im.vector.app.features.themes.ThemeUtils
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -92,17 +93,24 @@ fun openUrlInExternalBrowser(context: Context, uri: Uri?) {
|
||||||
* If several compatible browsers are installed, the user will be proposed to choose one.
|
* If several compatible browsers are installed, the user will be proposed to choose one.
|
||||||
* Ref: https://developer.chrome.com/multidevice/android/customtabs
|
* Ref: https://developer.chrome.com/multidevice/android/customtabs
|
||||||
*/
|
*/
|
||||||
fun openUrlInChromeCustomTab(context: Context, session: CustomTabsSession?, url: String) {
|
fun openUrlInChromeCustomTab(context: Context,
|
||||||
|
session: CustomTabsSession?,
|
||||||
|
url: String) {
|
||||||
try {
|
try {
|
||||||
CustomTabsIntent.Builder()
|
CustomTabsIntent.Builder()
|
||||||
.setToolbarColor(ContextCompat.getColor(context, R.color.riotx_background_light))
|
.setDefaultColorSchemeParams(
|
||||||
.apply {
|
CustomTabColorSchemeParams.Builder()
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
.setToolbarColor(ThemeUtils.getColor(context, R.attr.riotx_background))
|
||||||
setNavigationBarColor(ContextCompat.getColor(context, R.color.riotx_header_panel_background_light))
|
.setNavigationBarColor(ThemeUtils.getColor(context, R.attr.riotx_background))
|
||||||
|
.build()
|
||||||
|
)
|
||||||
|
.setColorScheme(
|
||||||
|
when {
|
||||||
|
ThemeUtils.isSystemTheme(context) -> CustomTabsIntent.COLOR_SCHEME_SYSTEM
|
||||||
|
ThemeUtils.isLightTheme(context) -> CustomTabsIntent.COLOR_SCHEME_LIGHT
|
||||||
|
else -> CustomTabsIntent.COLOR_SCHEME_DARK
|
||||||
}
|
}
|
||||||
}
|
)
|
||||||
.setNavigationBarColor(ContextCompat.getColor(context, R.color.riotx_background_light))
|
|
||||||
.setColorScheme(CustomTabsIntent.COLOR_SCHEME_LIGHT)
|
|
||||||
// Note: setting close button icon does not work
|
// Note: setting close button icon does not work
|
||||||
.setCloseButtonIcon(BitmapFactory.decodeResource(context.resources, R.drawable.ic_back_24dp))
|
.setCloseButtonIcon(BitmapFactory.decodeResource(context.resources, R.drawable.ic_back_24dp))
|
||||||
.setStartAnimations(context, R.anim.enter_fade_in, R.anim.exit_fade_out)
|
.setStartAnimations(context, R.anim.enter_fade_in, R.anim.exit_fade_out)
|
||||||
|
|
|
@ -99,7 +99,7 @@ class PopupAlertManager @Inject constructor() {
|
||||||
// we want to remove existing popup on previous activity and display it on new one
|
// we want to remove existing popup on previous activity and display it on new one
|
||||||
if (currentAlerter != null) {
|
if (currentAlerter != null) {
|
||||||
weakCurrentActivity?.get()?.let {
|
weakCurrentActivity?.get()?.let {
|
||||||
Alerter.clearCurrent(it)
|
Alerter.clearCurrent(it, null)
|
||||||
if (currentAlerter?.isLight == false) {
|
if (currentAlerter?.isLight == false) {
|
||||||
setLightStatusBar()
|
setLightStatusBar()
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,14 @@ object ThemeUtils {
|
||||||
setApplicationTheme(context, theme)
|
setApplicationTheme(context, theme)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if current theme is System
|
||||||
|
*/
|
||||||
|
fun isSystemTheme(context: Context): Boolean {
|
||||||
|
val theme = getApplicationTheme(context)
|
||||||
|
return theme == SYSTEM_THEME_VALUE
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if current theme is Light or current theme is System and system theme is light
|
* @return true if current theme is Light or current theme is System and system theme is light
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue