diff --git a/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostViewModel.kt b/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostViewModel.kt
index c107379d186332d0ec0a4e940fd09a0f14730857..e29a220bdf6d07900421d8d99e30fb235268e178 100644
--- a/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostViewModel.kt
+++ b/app/src/main/java/org/futo/circles/feature/timeline/post/create/CreatePostViewModel.kt
@@ -5,20 +5,21 @@ import androidx.lifecycle.SavedStateHandle
 import androidx.lifecycle.ViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
 import org.futo.circles.core.extensions.getOrThrow
-import org.futo.circles.core.provider.MatrixSessionProvider
-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.timeline.getTextEditableContent
+import org.futo.circles.core.model.PostContent
+import org.futo.circles.core.timeline.post.PostContentDataSource
 import javax.inject.Inject
 
 @HiltViewModel
-class CreatePostViewModel @Inject constructor(savedStateHandle: SavedStateHandle) : ViewModel() {
+class CreatePostViewModel @Inject constructor(
+    savedStateHandle: SavedStateHandle,
+    private val postContentDataSource: PostContentDataSource
+) : ViewModel() {
 
     private val roomId: String = savedStateHandle.getOrThrow("roomId")
     private val eventId: String? = savedStateHandle["eventId"]
     private val isEdit: Boolean = savedStateHandle.getOrThrow("isEdit")
 
-    val textToEditLiveData = MutableLiveData<String>()
+    val postToEditContentLiveData = MutableLiveData<PostContent>()
 
     init {
         if (isEdit) setEditPostInfo()
@@ -26,9 +27,7 @@ class CreatePostViewModel @Inject constructor(savedStateHandle: SavedStateHandle
 
     private fun setEditPostInfo() {
         eventId ?: return
-        val session = MatrixSessionProvider.currentSession
-        val room = session?.getRoom(roomId) ?: return
-        val event = room.getTimelineEvent(eventId) ?: return
-        textToEditLiveData.postValue(event.getTextEditableContent(false))
+        val content = postContentDataSource.getPostContent(roomId, eventId) ?: return
+        postToEditContentLiveData.value = content
     }
 }
\ No newline at end of file