|
16 | 16 |
|
17 | 17 | package im.vector.app.features.home.room.detail.timeline.factory |
18 | 18 |
|
| 19 | +import android.graphics.BitmapFactory |
| 20 | +import android.graphics.ImageDecoder |
| 21 | +import android.graphics.drawable.AnimatedImageDrawable |
19 | 22 | import android.net.Uri |
20 | 23 | import android.text.Spannable |
21 | 24 | import android.text.SpannableStringBuilder |
@@ -120,6 +123,7 @@ import org.matrix.android.sdk.api.session.room.timeline.getLastMessageContent |
120 | 123 | import org.matrix.android.sdk.api.settings.LightweightSettingsStorage |
121 | 124 | import org.matrix.android.sdk.api.util.MimeTypes |
122 | 125 | import timber.log.Timber |
| 126 | +import java.nio.file.Files |
123 | 127 | import javax.inject.Inject |
124 | 128 |
|
125 | 129 | class MessageItemFactory @Inject constructor( |
@@ -162,16 +166,29 @@ class MessageItemFactory @Inject constructor( |
162 | 166 | private val textRenderer by lazy { |
163 | 167 | textRendererFactory.create(roomId) |
164 | 168 | } |
| 169 | + |
165 | 170 | suspend fun decryptEmote(raw: Map<String, EncryptedFileInfo>): Map<String,String> { |
166 | 171 | val final = mutableMapOf<String, String>() |
167 | | - Timber.v("hell"+raw.toString()) |
| 172 | + //Timber.v("hell"+raw.toString()) |
168 | 173 | for ((key, value) in raw) { |
169 | | - val file=(session.fileService().downloadFile( |
| 174 | + var file=(session.fileService().downloadFile( |
170 | 175 | fileName = key, |
171 | 176 | mimeType = "image/*", |
172 | 177 | url = value.url, |
173 | 178 | elementToDecrypt = value.toElementToDecrypt() |
174 | 179 | )) |
| 180 | + val source=ImageDecoder.createSource(file) |
| 181 | + val drawable = ImageDecoder.decodeDrawable(source) |
| 182 | + if (drawable is AnimatedImageDrawable) { |
| 183 | + file=(session.fileService().downloadFile( |
| 184 | + fileName = key, |
| 185 | + mimeType = "image/gif", |
| 186 | + url = value.url, |
| 187 | + elementToDecrypt = value.toElementToDecrypt() |
| 188 | + )) |
| 189 | + } |
| 190 | + |
| 191 | + //Timber.v("hello "+MimeTypeMap.getFileExtensionFromUrl(file.toString())) |
175 | 192 | final[":" + key + ":"] = "<img style='height:80px;' src='file:///" + file.absolutePath + "'/>" |
176 | 193 | //Timber.v("emote:",final[":" + key + ":"]) |
177 | 194 | } |
|
0 commit comments