Skip to content

Commit

Permalink
Merge branch 'develop' into yostyle/android_6_fix
Browse files Browse the repository at this point in the history
  • Loading branch information
yostyle authored Feb 28, 2025
2 parents 8696486 + c5f69f2 commit 06a6132
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 22 deletions.
1 change: 1 addition & 0 deletions changelog.d/1152.sdk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Support des API de medias authentifiés avec l'anti-virus.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import org.matrix.android.sdk.internal.di.UnauthenticatedWithCertificateWithProg
import org.matrix.android.sdk.internal.network.httpclient.addAuthenticationHeader
import org.matrix.android.sdk.internal.network.token.AccessTokenProvider
import org.matrix.android.sdk.internal.session.download.DownloadProgressInterceptor.Companion.DOWNLOAD_PROGRESS_INTERCEPTOR_HEADER
import org.matrix.android.sdk.internal.session.media.IsAuthenticatedMediaSupported
import org.matrix.android.sdk.internal.util.file.AtomicFileCreator
import org.matrix.android.sdk.internal.util.file.safeFileName
import org.matrix.android.sdk.internal.util.time.Clock
Expand All @@ -55,6 +56,7 @@ internal class DefaultFileService @Inject constructor(
private val contentUrlResolver: ContentUrlResolver,
@UnauthenticatedWithCertificateWithProgress
private val okHttpClient: OkHttpClient,
private val isAuthenticatedMediaSupported: IsAuthenticatedMediaSupported,
private val coroutineDispatchers: MatrixCoroutineDispatchers,
private val clock: Clock,
@Authenticated private val accessTokenProvider: AccessTokenProvider,
Expand Down Expand Up @@ -144,11 +146,15 @@ internal class DefaultFileService @Inject constructor(
}

is ContentUrlResolver.ResolvedMethod.POST -> {
Request.Builder()
val requestBuilder = Request.Builder()
.url(resolvedMethod.url)
.header(DOWNLOAD_PROGRESS_INTERCEPTOR_HEADER, url)
.post(resolvedMethod.jsonBody.toRequestBody("application/json".toMediaType()))
.build()

if (contentUrlResolver.requiresAuthentication(resolvedMethod.url)) {
val accessToken = accessTokenProvider.getToken()
requestBuilder.addAuthenticationHeader(accessToken)
}
requestBuilder.post(resolvedMethod.jsonBody.toRequestBody("application/json".toMediaType())).build()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,9 @@ internal class DefaultContentUrlResolver @Inject constructor(

override fun resolveForDownload(contentUrl: String?, elementToDecrypt: ElementToDecrypt?): ContentUrlResolver.ResolvedMethod? {
return if (scannerService.isScannerEnabled() && elementToDecrypt != null) {
val baseUrl = scannerService.getContentScannerServer()
val sep = if (baseUrl?.endsWith("/") == true) "" else "/"

val url = baseUrl + sep + NetworkConstants.URI_API_PREFIX_PATH_MEDIA_PROXY_UNSTABLE + "download_encrypted"

val baseUrl = scannerService.getContentScannerServer()!!.ensureTrailingSlash()
ContentUrlResolver.ResolvedMethod.POST(
url = url,
url = "$baseUrl${NetworkConstants.URI_API_PREFIX_PATH_MEDIA_PROXY_UNSTABLE}download_encrypted",
jsonBody = ScanEncryptorUtils
.getDownloadBodyAndEncryptIfNeeded(scannerService.serverPublicKey, contentUrl ?: "", elementToDecrypt)
.toJson()
Expand Down Expand Up @@ -82,9 +78,8 @@ internal class DefaultContentUrlResolver @Inject constructor(
}
}

override fun requiresAuthentication(resolvedUrl: String): Boolean {
return resolvedUrl.startsWith(authenticatedMediaApiPath)
}
override fun requiresAuthentication(resolvedUrl: String) =
scannerService.isScannerEnabled() && isAuthenticatedMediaSupported() || resolvedUrl.startsWith(authenticatedMediaApiPath)

private fun resolve(
contentUrl: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@ import org.matrix.android.sdk.api.session.contentscanner.ScanState
import org.matrix.android.sdk.api.session.contentscanner.ScanStatusInfo
import org.matrix.android.sdk.api.session.crypto.attachments.ElementToDecrypt
import org.matrix.android.sdk.api.util.Optional
import org.matrix.android.sdk.internal.di.Authenticated
import org.matrix.android.sdk.internal.di.Unauthenticated
import org.matrix.android.sdk.internal.network.RetrofitFactory
import org.matrix.android.sdk.internal.session.SessionScope
import org.matrix.android.sdk.internal.session.contentscanner.data.ContentScannerStore
import org.matrix.android.sdk.internal.session.contentscanner.tasks.GetServerPublicKeyTask
import org.matrix.android.sdk.internal.session.contentscanner.tasks.ScanEncryptedTask
import org.matrix.android.sdk.internal.session.contentscanner.tasks.ScanMediaTask
import org.matrix.android.sdk.internal.session.media.IsAuthenticatedMediaSupported
import org.matrix.android.sdk.internal.task.TaskExecutor
import org.matrix.android.sdk.internal.util.time.Clock
import timber.log.Timber
Expand All @@ -42,6 +44,9 @@ internal class DefaultContentScannerService @Inject constructor(
private val retrofitFactory: RetrofitFactory,
@Unauthenticated
private val okHttpClient: Lazy<OkHttpClient>,
@Authenticated
private val authenticatedOkHttpClient: Lazy<OkHttpClient>,
private val isAuthenticatedMediaSupported: IsAuthenticatedMediaSupported,
private val contentScannerApiProvider: ContentScannerApiProvider,
private val contentScannerStore: ContentScannerStore,
private val getServerPublicKeyTask: GetServerPublicKeyTask,
Expand Down Expand Up @@ -96,6 +101,7 @@ internal class DefaultContentScannerService @Inject constructor(
contentScannerApiProvider.contentScannerApi = null
serverPublicKey = null
} else {
val okHttpClient = if (isAuthenticatedMediaSupported()) authenticatedOkHttpClient else okHttpClient
val api = retrofitFactory
.create(okHttpClient, url)
.create(ContentScannerApi::class.java)
Expand Down
10 changes: 0 additions & 10 deletions vector/src/main/java/im/vector/app/features/home/AvatarRenderer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -284,16 +284,6 @@ class AvatarRenderer @Inject constructor(
}
}

@AnyThread
fun getSpacePlaceholderDrawable(matrixItem: MatrixItem): Drawable {
val avatarColor = matrixItemColorProvider.getColor(matrixItem)
return TextDrawable.builder()
.beginConfig()
.bold()
.endConfig()
.buildRoundRect(matrixItem.firstLetterOfDisplayName(), avatarColor, dimensionConverter.dpToPx(8))
}

// PRIVATE API *********************************************************************************

private fun GlideRequests.loadResolvedUrl(avatarUrl: String?): GlideRequest<Drawable> {
Expand Down

0 comments on commit 06a6132

Please sign in to comment.