Skip to content

Commit 95e1bcb

Browse files
authored
Merge pull request #8868 from element-hq/feature/fga/authenticated_media
Feature/fga/authenticated media
2 parents fd1a949 + 59f3c6e commit 95e1bcb

35 files changed

+438
-108
lines changed

dependencies.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def markwon = "4.6.2"
1919
def moshi = "1.15.1"
2020
def lifecycle = "2.8.3"
2121
def flowBinding = "1.2.0"
22-
def flipper = "0.190.0"
22+
def flipper = "0.259.0"
2323
def epoxy = "5.0.0"
2424
def mavericks = "3.0.9"
2525
def glide = "4.16.0"

matrix-sdk-android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ buildscript {
1717
}
1818
}
1919
dependencies {
20-
classpath "io.realm:realm-gradle-plugin:10.16.0"
20+
classpath "io.realm:realm-gradle-plugin:10.18.0"
2121
}
2222
}
2323

matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/Session.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,11 @@ interface Session {
296296
*/
297297
fun getOkHttpClient(): OkHttpClient
298298

299+
/**
300+
* Same as [getOkHttpClient] but will add the access token to the request.
301+
*/
302+
fun getAuthenticatedOkHttpClient(): OkHttpClient
303+
299304
/**
300305
* A global session listener to get notified for some events.
301306
*/

matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/content/ContentUrlResolver.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ interface ContentUrlResolver {
6161
*/
6262
fun resolveThumbnail(contentUrl: String?, width: Int, height: Int, method: ThumbnailMethod): String?
6363

64+
fun requiresAuthentication(resolvedUrl: String): Boolean
65+
6466
sealed class ResolvedMethod {
6567
data class GET(val url: String) : ResolvedMethod()
6668
data class POST(val url: String, val jsonBody: String) : ResolvedMethod()

matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/homeserver/HomeServerCapabilities.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ data class HomeServerCapabilities(
9595
* If set to true, the SDK will not use the network constraint when configuring Worker for the WorkManager, provided in Wellknown.
9696
*/
9797
val disableNetworkConstraint: Boolean? = null,
98+
/**
99+
* True if the home server supports authenticated media.
100+
*/
101+
val canUseAuthenticatedMedia: Boolean = false,
98102
) {
99103

100104
enum class RoomCapabilitySupport {

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/login/DefaultLoginWizard.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import org.matrix.android.sdk.internal.auth.registration.RegisterAddThreePidTask
3535
import org.matrix.android.sdk.internal.network.executeRequest
3636
import org.matrix.android.sdk.internal.session.content.DefaultContentUrlResolver
3737
import org.matrix.android.sdk.internal.session.contentscanner.DisabledContentScannerService
38+
import org.matrix.android.sdk.internal.session.media.IsAuthenticatedMediaSupported
3839

3940
internal class DefaultLoginWizard(
4041
private val authAPI: AuthAPI,
@@ -45,8 +46,14 @@ internal class DefaultLoginWizard(
4546
private var pendingSessionData: PendingSessionData = pendingSessionStore.getPendingSessionData() ?: error("Pending session data should exist here")
4647

4748
private val getProfileTask: GetProfileTask = DefaultGetProfileTask(
48-
authAPI,
49-
DefaultContentUrlResolver(pendingSessionData.homeServerConnectionConfig, DisabledContentScannerService())
49+
authAPI = authAPI,
50+
contentUrlResolver = DefaultContentUrlResolver(
51+
homeServerConnectionConfig = pendingSessionData.homeServerConnectionConfig,
52+
scannerService = DisabledContentScannerService(),
53+
isAuthenticatedMediaSupported = object : IsAuthenticatedMediaSupported {
54+
override fun invoke() = false
55+
}
56+
)
5057
)
5158

5259
override suspend fun getProfileInfo(matrixId: String): LoginProfileInfo {

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/version/HomeServerVersion.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,6 @@ internal data class HomeServerVersion(
6161
val r0_6_1 = HomeServerVersion(major = 0, minor = 6, patch = 1)
6262
val v1_3_0 = HomeServerVersion(major = 1, minor = 3, patch = 0)
6363
val v1_4_0 = HomeServerVersion(major = 1, minor = 4, patch = 0)
64+
val v1_11_0 = HomeServerVersion(major = 1, minor = 11, patch = 0)
6465
}
6566
}

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/version/Versions.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ private const val FEATURE_ID_ACCESS_TOKEN = "m.id_access_token"
5454
private const val FEATURE_SEPARATE_ADD_AND_BIND = "m.separate_add_and_bind"
5555
private const val FEATURE_THREADS_MSC3440 = "org.matrix.msc3440"
5656
private const val FEATURE_THREADS_MSC3440_STABLE = "org.matrix.msc3440.stable"
57+
5758
@Deprecated("The availability of stable get_login_token is now exposed as a capability and part of login flow")
5859
private const val FEATURE_QR_CODE_LOGIN = "org.matrix.msc3882"
5960
private const val FEATURE_THREADS_MSC3771 = "org.matrix.msc3771"
@@ -142,6 +143,15 @@ internal fun Versions.doesServerSupportLogoutDevices(): Boolean {
142143
return getMaxVersion() >= HomeServerVersion.r0_6_1
143144
}
144145

146+
/**
147+
* Indicate if the server supports MSC3916 : https://github.com/matrix-org/matrix-spec-proposals/pull/3916
148+
*
149+
* @return true if authenticated media is supported
150+
*/
151+
internal fun Versions.doesServerSupportAuthenticatedMedia(): Boolean {
152+
return getMaxVersion() >= HomeServerVersion.v1_11_0
153+
}
154+
145155
private fun Versions.getMaxVersion(): HomeServerVersion {
146156
return supportedVersions
147157
?.mapNotNull { HomeServerVersion.parse(it) }

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/RealmSessionStoreMigration.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo052
7272
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo053
7373
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo054
7474
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo055
75+
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo056
7576
import org.matrix.android.sdk.internal.util.Normalizer
7677
import org.matrix.android.sdk.internal.util.database.MatrixRealmMigration
7778
import javax.inject.Inject
@@ -80,7 +81,7 @@ internal class RealmSessionStoreMigration @Inject constructor(
8081
private val normalizer: Normalizer
8182
) : MatrixRealmMigration(
8283
dbName = "Session",
83-
schemaVersion = 55L,
84+
schemaVersion = 56L,
8485
) {
8586
/**
8687
* Forces all RealmSessionStoreMigration instances to be equal.
@@ -145,5 +146,6 @@ internal class RealmSessionStoreMigration @Inject constructor(
145146
if (oldVersion < 53) MigrateSessionTo053(realm).perform()
146147
if (oldVersion < 54) MigrateSessionTo054(realm).perform()
147148
if (oldVersion < 55) MigrateSessionTo055(realm).perform()
149+
if (oldVersion < 56) MigrateSessionTo056(realm).perform()
148150
}
149151
}

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/mapper/HomeServerCapabilitiesMapper.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ internal object HomeServerCapabilitiesMapper {
5151
externalAccountManagementUrl = entity.externalAccountManagementUrl,
5252
authenticationIssuer = entity.authenticationIssuer,
5353
disableNetworkConstraint = entity.disableNetworkConstraint,
54+
canUseAuthenticatedMedia = entity.canUseAuthenticatedMedia,
5455
)
5556
}
5657

0 commit comments

Comments
 (0)