diff --git a/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostDialogFragment.kt b/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostDialogFragment.kt
index 5b0153fbd18ecb4c107dc40170586d6e93124316..faa446bfc4d0f550442b04445d19174983f81b8c 100644
--- a/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostDialogFragment.kt
+++ b/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostDialogFragment.kt
@@ -14,12 +14,14 @@ import org.futo.circles.core.extensions.navigateSafe
 import org.futo.circles.core.extensions.observeData
 import org.futo.circles.core.extensions.onBackPressed
 import org.futo.circles.core.fragment.BaseFullscreenDialogFragment
+import org.futo.circles.core.model.MediaContent
 import org.futo.circles.core.model.MediaType
+import org.futo.circles.core.model.PostContentType
+import org.futo.circles.core.model.TextContent
 import org.futo.circles.core.picker.helper.MediaPickerHelper
 import org.futo.circles.databinding.DialogFragmentCreatePostBinding
 import org.futo.circles.feature.timeline.post.emoji.EmojiPickerListener
 import org.futo.circles.feature.timeline.post.markdown.span.TextStyle
-import org.futo.circles.model.TextPostContent
 import org.futo.circles.view.PreviewPostListener
 import java.util.*
 
@@ -78,8 +80,13 @@ class CreatePostDialogFragment :
     }
 
     private fun setupObservers() {
-        viewModel.textToEditLiveData.observeData(this) {
-            binding.vPostPreview.setText(it)
+        viewModel.postToEditContentLiveData.observeData(this) {
+            when (it.type) {
+                PostContentType.IMAGE_CONTENT, PostContentType.VIDEO_CONTENT ->
+                    binding.vPostPreview.setMediaFromExistingPost(it as MediaContent)
+
+                else -> binding.vPostPreview.setText((it as TextContent).message)
+            }
         }
     }
 
@@ -102,9 +109,8 @@ class CreatePostDialogFragment :
     }
 
     private fun onEditPost() {
-        val newMessage = (binding.vPostPreview.getPostContent() as? TextPostContent)?.text ?: return
         val eventId = args.eventId ?: return
-        createPostListener?.onEditTextPost(args.roomId, newMessage, eventId)
+        createPostListener?.onEditPost(args.roomId, binding.vPostPreview.getPostContent(), eventId)
     }
 
     override fun onUploadMediaClicked() {
diff --git a/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostListener.kt b/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostListener.kt
index 06d3243779c175bb3f5c5ae0ec9c533c194da29a..23b6c3ffbbf7a36cedd487441870eb2c9f20cb3d 100644
--- a/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostListener.kt
+++ b/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostListener.kt
@@ -4,5 +4,5 @@ import org.futo.circles.model.CreatePostContent
 
 interface CreatePostListener {
     fun onSendPost(roomId: String, postContent: CreatePostContent, threadEventId: String?)
-    fun onEditTextPost(roomId: String, newMessage: String, eventId: String)
+    fun onEditPost(roomId: String, postContent: CreatePostContent, eventId: String)
 }
\ No newline at end of file
diff --git a/app/src/main/java/org/futo/circles/view/PreviewPostView.kt b/app/src/main/java/org/futo/circles/view/PreviewPostView.kt
index 50b64fd855b4dcc4c47de983294b4e108da8d369..1283add2ef0f577420721457e89be77b693287e2 100644
--- a/app/src/main/java/org/futo/circles/view/PreviewPostView.kt
+++ b/app/src/main/java/org/futo/circles/view/PreviewPostView.kt
@@ -10,9 +10,11 @@ import android.widget.TextView
 import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.core.view.updateLayoutParams
 import androidx.core.widget.doAfterTextChanged
+import org.futo.circles.core.extensions.loadEncryptedIntoWithAspect
 import org.futo.circles.core.extensions.loadImage
 import org.futo.circles.core.extensions.notEmptyDisplayName
 import org.futo.circles.core.extensions.setIsVisible
+import org.futo.circles.core.model.MediaContent
 import org.futo.circles.core.model.MediaType
 import org.futo.circles.core.provider.MatrixSessionProvider
 import org.futo.circles.core.utils.ImageUtils
@@ -43,6 +45,7 @@ class PreviewPostView(
 
     private var listener: PreviewPostListener? = null
     private var postContent: CreatePostContent? = null
+    private var canEditMedia: Boolean = true
 
     init {
         getMyUser()?.let {
@@ -98,6 +101,24 @@ class PreviewPostView(
         binding.etTextPost.addLinkSpan(title, link)
     }
 
+    fun setMediaFromExistingPost(mediaContent: MediaContent) {
+        canEditMedia = false
+        val caption = mediaContent.mediaContentInfo.caption ?: ""
+        setText(caption)
+        val uri = Uri.parse(mediaContent.mediaFileData.fileUrl)
+        val mediaType = mediaContent.getMediaType()
+        postContent = MediaPostContent(caption, uri, mediaType)
+        updateContentView()
+        loadMediaCover(mediaContent)
+        val isVideo = mediaType == MediaType.Video
+        binding.lMediaContent.videoGroup.setIsVisible(isVideo)
+        if (isVideo)
+            binding.lMediaContent.tvDuration.text = mediaContent.mediaContentInfo.duration
+
+        listener?.onPostContentAvailable(true)
+    }
+
+
     fun setMedia(contentUri: Uri, mediaType: MediaType) {
         val caption = binding.etTextPost.text.toString().trim()
         postContent = MediaPostContent(caption, contentUri, mediaType)
@@ -118,7 +139,8 @@ class PreviewPostView(
 
     private fun updateContentView() {
         val isTextContent = postContent is TextPostContent || postContent == null
-        binding.mediaContentGroup.setIsVisible(!isTextContent)
+        binding.lMediaContent.lMedia.setIsVisible(!isTextContent)
+        binding.ivRemoveImage.setIsVisible(!isTextContent && canEditMedia)
         if (isTextContent) requestFocusOnText()
         binding.etTextPost.setPadding(
             context.convertDpToPixel(12f).toInt(),
@@ -148,6 +170,22 @@ class PreviewPostView(
         binding.lMediaContent.ivCover.loadImage(uri.toString())
     }
 
+    private fun loadMediaCover(mediaContent: MediaContent) {
+        val image = binding.lMediaContent.ivCover
+        image.post {
+            val size = mediaContent.calculateSize(image.width)
+            image.updateLayoutParams {
+                width = size.width
+                height = size.height
+            }
+        }
+        mediaContent.mediaFileData.loadEncryptedIntoWithAspect(
+            image,
+            mediaContent.aspectRatio,
+            mediaContent.mediaContentInfo.thumbHash
+        )
+    }
+
     private fun requestFocusOnText() {
         binding.etTextPost.post {
             requestFocus()
diff --git a/app/src/main/res/layout/view_preview_post.xml b/app/src/main/res/layout/view_preview_post.xml
index 8e9fcf3a8389742b589ceb2596b6231aeba49682..13f7ae6b17bb69fbbd396196a4890d7049390cb1 100644
--- a/app/src/main/res/layout/view_preview_post.xml
+++ b/app/src/main/res/layout/view_preview_post.xml
@@ -91,13 +91,7 @@
                 app:layout_constraintEnd_toEndOf="@id/lMediaContent"
                 app:layout_constraintTop_toTopOf="@id/lMediaContent"
                 app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.CornerSize50Percent" />
-
-            <androidx.constraintlayout.widget.Group
-                android:id="@+id/mediaContentGroup"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                app:constraint_referenced_ids="ivRemoveImage, lMediaContent" />
-
+            
         </androidx.constraintlayout.widget.ConstraintLayout>
 
     </ScrollView>
diff --git a/core/src/main/java/org/futo/circles/core/timeline/post/PostContentDataSource.kt b/core/src/main/java/org/futo/circles/core/timeline/post/PostContentDataSource.kt
index bee31c28f3240ec1017a0d1f65bc401b48700a2c..0fbb00d6f699041c3a258a6a6195373419344e2e 100644
--- a/core/src/main/java/org/futo/circles/core/timeline/post/PostContentDataSource.kt
+++ b/core/src/main/java/org/futo/circles/core/timeline/post/PostContentDataSource.kt
@@ -6,10 +6,8 @@ import org.futo.circles.core.model.Post
 import org.futo.circles.core.model.PostContent
 import org.futo.circles.core.model.PostContentType
 import org.futo.circles.core.provider.MatrixSessionProvider
-import org.matrix.android.sdk.api.session.events.model.toModel
 import org.matrix.android.sdk.api.session.getRoom
 import org.matrix.android.sdk.api.session.room.getTimelineEvent
-import org.matrix.android.sdk.api.session.room.model.message.MessageContent
 import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
 import org.matrix.android.sdk.api.session.room.timeline.getLastMessageContent
 import javax.inject.Inject