Skip to content
Snippets Groups Projects
Commit 9a2250e7 authored by Taras's avatar Taras
Browse files

Implement send message

parent 21c0f62c
No related branches found
No related tags found
No related merge requests found
......@@ -19,6 +19,7 @@ import org.futo.circles.core.extensions.showSuccess
import org.futo.circles.core.extensions.withConfirmation
import org.futo.circles.core.feature.picker.helper.MediaPickerHelper
import org.futo.circles.core.feature.share.ShareProvider
import org.futo.circles.core.model.MediaType
import org.futo.circles.core.model.PostContent
import org.futo.circles.databinding.DialogFragmentDmTimelineBinding
import org.futo.circles.feature.direct.timeline.list.DMTimelineAdapter
......@@ -192,14 +193,13 @@ class DMTimelineDialogFragment :
}
override fun onSendTextMessageClicked(message: String) {
viewModel.sendTextMessageDm(message)
}
//TODO
override fun onSendMediaButtonClicked() {
mediaPickerHelper.showMediaPickerDialog(
onImageSelected = { _, uri -> },
onVideoSelected = { uri -> }
onImageSelected = { _, uri -> viewModel.sendMediaDm(uri, MediaType.Image) },
onVideoSelected = { uri -> viewModel.sendMediaDm(uri, MediaType.Video) }
)
}
}
\ No newline at end of file
package org.futo.circles.feature.direct.timeline
import android.content.Context
import android.net.Uri
import android.view.View
import androidx.lifecycle.SavedStateHandle
import dagger.hilt.android.lifecycle.HiltViewModel
......@@ -14,10 +15,15 @@ import org.futo.circles.core.feature.circles.filter.CircleFilterAccountDataManag
import org.futo.circles.core.feature.timeline.BaseTimelineViewModel
import org.futo.circles.core.feature.timeline.data_source.BaseTimelineDataSource
import org.futo.circles.core.feature.timeline.post.PostOptionsDataSource
import org.futo.circles.core.feature.timeline.post.SendMessageDataSource
import org.futo.circles.core.model.MediaType
import org.futo.circles.core.model.PostContent
import org.futo.circles.core.model.ShareableContent
import org.futo.circles.core.provider.MatrixSessionProvider
import org.futo.circles.feature.timeline.data_source.ReadMessageDataSource
import org.futo.circles.model.CreatePostContent
import org.futo.circles.model.MediaPostContent
import org.futo.circles.model.TextPostContent
import org.matrix.android.sdk.api.session.getRoom
import org.matrix.android.sdk.api.util.Cancelable
import javax.inject.Inject
......@@ -29,7 +35,8 @@ class DMTimelineViewModel @Inject constructor(
timelineDataSourceFactory: BaseTimelineDataSource.Factory,
private val postOptionsDataSource: PostOptionsDataSource,
private val readMessageDataSource: ReadMessageDataSource,
circleFilterAccountDataManager: CircleFilterAccountDataManager
circleFilterAccountDataManager: CircleFilterAccountDataManager,
private val sendMessageDataSource: SendMessageDataSource
) : BaseTimelineViewModel(
savedStateHandle,
context,
......@@ -79,4 +86,33 @@ class DMTimelineViewModel @Inject constructor(
}?.awaitAll()
}
}
fun sendTextMessageDm(message: String) {
launchBg { sendMessage(roomId, TextPostContent(message)) }
}
fun sendMediaDm(uri: Uri, mediaType: MediaType) {
launchBg { sendMessage(roomId, MediaPostContent(null, uri, mediaType)) }
}
private suspend fun sendMessage(
roomId: String,
postContent: CreatePostContent
): String = when (postContent) {
is MediaPostContent -> sendMessageDataSource.sendMedia(
roomId,
postContent.uri,
null,
null,
postContent.mediaType
).first
is TextPostContent -> sendMessageDataSource.sendTextMessage(
roomId, postContent.text, null
)
}
fun editTextMessage(eventId: String, roomId: String, message: String) {
sendMessageDataSource.editTextMessage(eventId, roomId, message)
}
}
\ No newline at end of file
......@@ -103,6 +103,7 @@ abstract class BaseTimelineViewModel(
)
}
@Suppress("DeferredResultUnused")
private fun prefetchVideo(context: Context, postId: String, data: MediaFileData) {
launchBg {
async {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment