Skip to content

Commit fa0860a

Browse files
committed
Authenticated media : listen db.
1 parent 9e27705 commit fa0860a

File tree

2 files changed

+30
-9
lines changed

2 files changed

+30
-9
lines changed

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/SessionModule.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ import org.matrix.android.sdk.internal.session.events.DefaultEventService
8383
import org.matrix.android.sdk.internal.session.homeserver.DefaultHomeServerCapabilitiesService
8484
import org.matrix.android.sdk.internal.session.identity.DefaultIdentityService
8585
import org.matrix.android.sdk.internal.session.integrationmanager.IntegrationManager
86+
import org.matrix.android.sdk.internal.session.media.DefaultIsAuthenticatedMediaSupported
8687
import org.matrix.android.sdk.internal.session.openid.DefaultOpenIdService
8788
import org.matrix.android.sdk.internal.session.permalinks.DefaultPermalinkService
8889
import org.matrix.android.sdk.internal.session.room.EventRelationsAggregationProcessor
@@ -365,6 +366,10 @@ internal abstract class SessionModule {
365366
@IntoSet
366367
abstract fun bindEventInsertObserver(observer: EventInsertLiveObserver): SessionLifecycleObserver
367368

369+
@Binds
370+
@IntoSet
371+
abstract fun bindIsMediaAuthenticated(observer: DefaultIsAuthenticatedMediaSupported): SessionLifecycleObserver
372+
368373
@Binds
369374
@IntoSet
370375
abstract fun bindIntegrationManager(manager: IntegrationManager): SessionLifecycleObserver

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/media/DefaultIsAuthenticatedMediaSupported.kt

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,44 @@ package org.matrix.android.sdk.internal.session.media
1818

1919
import com.zhuinden.monarchy.Monarchy
2020
import io.realm.Realm
21+
import io.realm.RealmResults
22+
import org.matrix.android.sdk.internal.database.RealmLiveEntityObserver
2123
import org.matrix.android.sdk.internal.database.model.HomeServerCapabilitiesEntity
22-
import org.matrix.android.sdk.internal.database.query.get
2324
import org.matrix.android.sdk.internal.di.SessionDatabase
2425
import org.matrix.android.sdk.internal.session.SessionScope
26+
import timber.log.Timber
2527
import javax.inject.Inject
2628

2729
@SessionScope
28-
class DefaultIsAuthenticatedMediaSupported @Inject constructor(
30+
internal class DefaultIsAuthenticatedMediaSupported @Inject constructor(
2931
@SessionDatabase private val monarchy: Monarchy,
30-
) : IsAuthenticatedMediaSupported {
31-
32-
private val canUseAuthenticatedMedia: Boolean by lazy {
33-
canUseAuthenticatedMedia()
34-
}
32+
) :
33+
IsAuthenticatedMediaSupported,
34+
RealmLiveEntityObserver<HomeServerCapabilitiesEntity>(monarchy.realmConfiguration) {
3535

3636
override fun invoke(): Boolean {
3737
return canUseAuthenticatedMedia
3838
}
3939

40-
private fun canUseAuthenticatedMedia(): Boolean {
40+
override val query = Monarchy.Query {
41+
it.where(HomeServerCapabilitiesEntity::class.java)
42+
}
43+
44+
override fun onChange(results: RealmResults<HomeServerCapabilitiesEntity>) {
45+
Timber.d("HomeServerCapabilitiesEntity updated.")
46+
canUseAuthenticatedMedia = results.canUseAuthenticatedMedia()
47+
Timber.d("canUseAuthenticatedMedia: $canUseAuthenticatedMedia")
48+
}
49+
50+
private var canUseAuthenticatedMedia = getInitialValue()
51+
52+
private fun getInitialValue(): Boolean {
4153
return Realm.getInstance(monarchy.realmConfiguration).use { realm ->
42-
HomeServerCapabilitiesEntity.get(realm)?.canUseAuthenticatedMedia ?: false
54+
query.createQuery(realm).findAll().canUseAuthenticatedMedia()
4355
}
4456
}
57+
58+
private fun RealmResults<HomeServerCapabilitiesEntity>.canUseAuthenticatedMedia(): Boolean {
59+
return firstOrNull()?.canUseAuthenticatedMedia ?: false
60+
}
4561
}

0 commit comments

Comments
 (0)