Merge pull request #5405 from vector-im/cgizard/ISSUE-5402

[Create private room] Picture doesn't not displayed
This commit is contained in:
ClaireG 2022-03-03 22:40:26 +01:00 committed by GitHub
parent 1690a0b2cf
commit 2a9e582db5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 31 deletions

1
changelog.d/5402.bugfix Normal file
View file

@ -0,0 +1 @@
[Create room] Setting an avatar when creating a room had no effect

View file

@ -30,6 +30,7 @@ import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.RequestBody.Companion.toRequestBody
import okio.BufferedSink import okio.BufferedSink
import okio.source import okio.source
import org.matrix.android.sdk.api.MatrixCoroutineDispatchers
import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.extensions.tryOrNull
import org.matrix.android.sdk.api.failure.Failure import org.matrix.android.sdk.api.failure.Failure
import org.matrix.android.sdk.api.failure.MatrixError import org.matrix.android.sdk.api.failure.MatrixError
@ -53,6 +54,7 @@ internal class FileUploader @Inject constructor(
private val homeServerCapabilitiesService: HomeServerCapabilitiesService, private val homeServerCapabilitiesService: HomeServerCapabilitiesService,
private val context: Context, private val context: Context,
private val temporaryFileCreator: TemporaryFileCreator, private val temporaryFileCreator: TemporaryFileCreator,
private val coroutineDispatchers: MatrixCoroutineDispatchers,
contentUrlResolver: ContentUrlResolver, contentUrlResolver: ContentUrlResolver,
moshi: Moshi moshi: Moshi
) { ) {
@ -146,7 +148,8 @@ internal class FileUploader @Inject constructor(
.post(requestBody) .post(requestBody)
.build() .build()
return okHttpClient.newCall(request).awaitResponse().use { response -> return withContext(coroutineDispatchers.io) {
okHttpClient.newCall(request).awaitResponse().use { response ->
if (!response.isSuccessful) { if (!response.isSuccessful) {
throw response.toFailure(globalErrorReceiver) throw response.toFailure(globalErrorReceiver)
} else { } else {
@ -158,3 +161,4 @@ internal class FileUploader @Inject constructor(
} }
} }
} }
}

View file

@ -68,12 +68,10 @@ internal class DefaultProfileService @Inject constructor(private val taskExecuto
} }
override suspend fun updateAvatar(userId: String, newAvatarUri: Uri, fileName: String) { override suspend fun updateAvatar(userId: String, newAvatarUri: Uri, fileName: String) {
withContext(coroutineDispatchers.io) {
val response = fileUploader.uploadFromUri(newAvatarUri, fileName, MimeTypes.Jpeg) val response = fileUploader.uploadFromUri(newAvatarUri, fileName, MimeTypes.Jpeg)
setAvatarUrlTask.execute(SetAvatarUrlTask.Params(userId = userId, newAvatarUrl = response.contentUri)) setAvatarUrlTask.execute(SetAvatarUrlTask.Params(userId = userId, newAvatarUrl = response.contentUri))
userStore.updateAvatar(userId, response.contentUri) userStore.updateAvatar(userId, response.contentUri)
} }
}
override suspend fun getAvatarUrl(userId: String): Optional<String> { override suspend fun getAvatarUrl(userId: String): Optional<String> {
val params = GetProfileInfoTask.Params(userId) val params = GetProfileInfoTask.Params(userId)

View file

@ -112,13 +112,13 @@ internal class CreateRoomBodyBuilder @Inject constructor(
private suspend fun buildAvatarEvent(params: CreateRoomParams): Event? { private suspend fun buildAvatarEvent(params: CreateRoomParams): Event? {
return params.avatarUri?.let { avatarUri -> return params.avatarUri?.let { avatarUri ->
// First upload the image, ignoring any error // First upload the image, ignoring any error
tryOrNull { tryOrNull("Failed to upload image") {
fileUploader.uploadFromUri( fileUploader.uploadFromUri(
uri = avatarUri, uri = avatarUri,
filename = UUID.randomUUID().toString(), filename = UUID.randomUUID().toString(),
mimeType = MimeTypes.Jpeg) mimeType = MimeTypes.Jpeg)
} }
?.let { response -> }?.let { response ->
Event( Event(
type = EventType.STATE_ROOM_AVATAR, type = EventType.STATE_ROOM_AVATAR,
stateKey = "", stateKey = "",
@ -126,7 +126,6 @@ internal class CreateRoomBodyBuilder @Inject constructor(
) )
} }
} }
}
private fun buildHistoryVisibilityEvent(params: CreateRoomParams): Event? { private fun buildHistoryVisibilityEvent(params: CreateRoomParams): Event? {
return params.historyVisibility return params.historyVisibility