diff --git a/app/src/main/java/org/futo/circles/feature/timeline/TimelineViewModel.kt b/app/src/main/java/org/futo/circles/feature/timeline/TimelineViewModel.kt
index 6bd22369eb7934e1475fc7ae517b92a6fd298a94..9f75a896c98b095fef1f644d5e8982379e0129e3 100644
--- a/app/src/main/java/org/futo/circles/feature/timeline/TimelineViewModel.kt
+++ b/app/src/main/java/org/futo/circles/feature/timeline/TimelineViewModel.kt
@@ -66,7 +66,7 @@ class TimelineViewModel @Inject constructor(
     }
 
     fun removeMessage(roomId: String, eventId: String) {
-        postOptionsDataSource.removeMessage(roomId, eventId)
+        launchBg { postOptionsDataSource.removeMessage(roomId, eventId) }
     }
 
     fun ignoreSender(senderId: String) {
diff --git a/app/src/main/java/org/futo/circles/feature/timeline/preview/TimelineMediaPreviewViewModel.kt b/app/src/main/java/org/futo/circles/feature/timeline/preview/TimelineMediaPreviewViewModel.kt
index 45adc4e271b7429adeb11d8f5602db6884b37b9c..5a96f1da8cdb0da1c791fccc5339d9a52f0bc811 100644
--- a/app/src/main/java/org/futo/circles/feature/timeline/preview/TimelineMediaPreviewViewModel.kt
+++ b/app/src/main/java/org/futo/circles/feature/timeline/preview/TimelineMediaPreviewViewModel.kt
@@ -6,9 +6,9 @@ import dagger.hilt.android.lifecycle.HiltViewModel
 import org.futo.circles.core.base.SingleEventLiveData
 import org.futo.circles.core.extensions.getOrThrow
 import org.futo.circles.core.extensions.launchBg
-import org.futo.circles.core.model.ShareableContent
-import org.futo.circles.core.feature.timeline.post.PostOptionsDataSource
 import org.futo.circles.core.feature.timeline.post.PostContentDataSource
+import org.futo.circles.core.feature.timeline.post.PostOptionsDataSource
+import org.futo.circles.core.model.ShareableContent
 import javax.inject.Inject
 
 @HiltViewModel
@@ -35,7 +35,7 @@ class TimelineMediaPreviewViewModel @Inject constructor(
     }
 
     fun removeImage() {
-        postOptionsDataSource.removeMessage(roomId, eventId)
+        launchBg { postOptionsDataSource.removeMessage(roomId, eventId) }
     }
 
     fun save() {
diff --git a/core/build.gradle b/core/build.gradle
index d9ca5b19b72d3849e37969693540c6eb27489e04..302e0e1ead660fac2a2da95a75a45d1ab2b2d9d6 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -76,7 +76,7 @@ dependencies {
     kapt "com.google.dagger:hilt-compiler:$rootProject.ext.hilt_version"
 
     //Matrix
-    api('org.futo.gitlab.circles:matrix-android-sdk:v1.6.10.24@aar') {
+    api('org.futo.gitlab.circles:matrix-android-sdk:v1.6.10.27@aar') {
         transitive = true
     }
 
diff --git a/core/src/main/java/org/futo/circles/core/feature/timeline/post/PostOptionsDataSource.kt b/core/src/main/java/org/futo/circles/core/feature/timeline/post/PostOptionsDataSource.kt
index bae01ac4ff9df0f3008f1c5b4fd69a330a1c4bb0..d2ab6c0ed69e154e996b208e6d62e29916ebfbb3 100644
--- a/core/src/main/java/org/futo/circles/core/feature/timeline/post/PostOptionsDataSource.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/timeline/post/PostOptionsDataSource.kt
@@ -3,17 +3,23 @@ package org.futo.circles.core.feature.timeline.post
 import android.content.Context
 import dagger.hilt.android.qualifiers.ApplicationContext
 import org.futo.circles.core.extensions.createResult
+import org.futo.circles.core.extensions.getPostContentType
 import org.futo.circles.core.extensions.onBG
+import org.futo.circles.core.mapping.toMediaContent
 import org.futo.circles.core.model.MediaContent
 import org.futo.circles.core.model.MediaFileData
 import org.futo.circles.core.model.MediaShareable
+import org.futo.circles.core.model.MediaType
 import org.futo.circles.core.model.PostContent
+import org.futo.circles.core.model.PostContentType.IMAGE_CONTENT
+import org.futo.circles.core.model.PostContentType.VIDEO_CONTENT
 import org.futo.circles.core.model.ShareableContent
 import org.futo.circles.core.model.TextContent
 import org.futo.circles.core.model.TextShareable
 import org.futo.circles.core.provider.MatrixSessionProvider
 import org.futo.circles.core.utils.FileUtils.downloadEncryptedFileToContentUri
 import org.futo.circles.core.utils.FileUtils.saveMediaFileToDevice
+import org.matrix.android.sdk.api.extensions.tryOrNull
 import org.matrix.android.sdk.api.session.getRoom
 import org.matrix.android.sdk.api.session.room.getTimelineEvent
 import javax.inject.Inject
@@ -24,10 +30,18 @@ class PostOptionsDataSource @Inject constructor(
 
     private val session = MatrixSessionProvider.currentSession
 
-    fun removeMessage(roomId: String, eventId: String) {
-        val roomForMessage = session?.getRoom(roomId)
-        roomForMessage?.getTimelineEvent(eventId)
-            ?.let { roomForMessage.sendService().redactEvent(it.root, null) }
+    suspend fun removeMessage(roomId: String, eventId: String) {
+        val roomForMessage = session?.getRoom(roomId) ?: return
+        val event = roomForMessage.getTimelineEvent(eventId) ?: return
+        roomForMessage.sendService().redactEvent(event.root, null)
+
+        val eventType = event.getPostContentType()
+        val mediaEvent = when (eventType) {
+            IMAGE_CONTENT -> event.toMediaContent(MediaType.Image)
+            VIDEO_CONTENT -> event.toMediaContent(MediaType.Video)
+            else -> return
+        }
+        tryOrNull { session.mediaService().deleteMediaFile(mediaEvent.mediaFileData.fileUrl) }
     }
 
     fun sendReaction(roomId: String, eventId: String, emoji: String) {
@@ -44,7 +58,7 @@ class PostOptionsDataSource @Inject constructor(
     suspend fun getShareableContent(content: PostContent): ShareableContent? = onBG {
         when (content) {
             is MediaContent -> getShareableMediaContent(content.mediaFileData)
-            is TextContent -> TextShareable(content.message.toString())
+            is TextContent -> TextShareable(content.message)
             else -> throw IllegalArgumentException("Not shareable post content")
         }
     }
diff --git a/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/grid/GalleryViewModel.kt b/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/grid/GalleryViewModel.kt
index f557aa3fd097d73d20d4bb3d39df54a0614e41d0..179a0c1894c00c40772323dfe03bfd5bc0b7da54 100644
--- a/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/grid/GalleryViewModel.kt
+++ b/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/grid/GalleryViewModel.kt
@@ -61,7 +61,7 @@ class GalleryViewModel @Inject constructor(
 
     fun removeImage(position: Int) {
         val eventId = galleryItemsLiveData.value?.getOrNull(position)?.id ?: return
-        postOptionsDataSource.removeMessage(roomId, eventId)
+        launchBg { postOptionsDataSource.removeMessage(roomId, eventId) }
     }
 
     fun save(position: Int) {