Skip to content
Snippets Groups Projects
Commit 891f2461 authored by Taras's avatar Taras
Browse files

Rename to post content data source

parent 2b73bf56
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,6 @@ import android.os.Bundle ...@@ -5,7 +5,6 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.WindowManager
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.DividerItemDecoration
......
...@@ -8,13 +8,13 @@ import org.futo.circles.core.extensions.getOrThrow ...@@ -8,13 +8,13 @@ import org.futo.circles.core.extensions.getOrThrow
import org.futo.circles.core.extensions.launchBg import org.futo.circles.core.extensions.launchBg
import org.futo.circles.core.model.ShareableContent import org.futo.circles.core.model.ShareableContent
import org.futo.circles.core.timeline.post.PostOptionsDataSource import org.futo.circles.core.timeline.post.PostOptionsDataSource
import org.futo.circles.gallery.feature.gallery.full_screen.media_item.FullScreenMediaDataSource import org.futo.circles.core.timeline.post.PostContentDataSource
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
class TimelineMediaPreviewViewModel @Inject constructor( class TimelineMediaPreviewViewModel @Inject constructor(
savedStateHandle: SavedStateHandle, savedStateHandle: SavedStateHandle,
private val mediaDataSource: FullScreenMediaDataSource, private val mediaDataSource: PostContentDataSource,
private val postOptionsDataSource: PostOptionsDataSource private val postOptionsDataSource: PostOptionsDataSource
) : ViewModel() { ) : ViewModel() {
......
...@@ -6,12 +6,12 @@ import org.futo.circles.core.SingleEventLiveData ...@@ -6,12 +6,12 @@ import org.futo.circles.core.SingleEventLiveData
import org.futo.circles.core.extensions.Response import org.futo.circles.core.extensions.Response
import org.futo.circles.core.extensions.launchBg import org.futo.circles.core.extensions.launchBg
import org.futo.circles.core.model.SelectableRoomListItem import org.futo.circles.core.model.SelectableRoomListItem
import org.futo.circles.gallery.feature.gallery.full_screen.media_item.FullScreenMediaDataSource import org.futo.circles.core.timeline.post.PostContentDataSource
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
class SavePostToGalleryViewModel @Inject constructor( class SavePostToGalleryViewModel @Inject constructor(
private val mediaPreviewDataSource: FullScreenMediaDataSource, private val mediaPreviewDataSource: PostContentDataSource,
private val savePostToGalleryDataSource: SavePostToGalleryDataSource private val savePostToGalleryDataSource: SavePostToGalleryDataSource
) : ViewModel() { ) : ViewModel() {
......
package org.futo.circles.gallery.feature.gallery.full_screen.media_item package org.futo.circles.core.timeline.post
import dagger.hilt.android.scopes.ViewModelScoped import dagger.hilt.android.scopes.ViewModelScoped
import org.futo.circles.core.mapping.toPost import org.futo.circles.core.mapping.toPost
import org.futo.circles.core.model.Post
import org.futo.circles.core.model.PostContent import org.futo.circles.core.model.PostContent
import org.futo.circles.core.model.PostContentType import org.futo.circles.core.model.PostContentType
import org.futo.circles.core.provider.MatrixSessionProvider import org.futo.circles.core.provider.MatrixSessionProvider
...@@ -14,18 +15,20 @@ import javax.inject.Inject ...@@ -14,18 +15,20 @@ import javax.inject.Inject
@ViewModelScoped @ViewModelScoped
class FullScreenMediaDataSource @Inject constructor() { class PostContentDataSource @Inject constructor() {
private val session = MatrixSessionProvider.currentSession private val session = MatrixSessionProvider.currentSession
fun getPostContent(roomId: String, eventId: String): PostContent? { fun getPost(roomId: String, eventId: String): Post? {
val roomForMessage = session?.getRoom(roomId) val roomForMessage = session?.getRoom(roomId)
val timelineEvent = roomForMessage?.getTimelineEvent(eventId) ?: return null val timelineEvent = roomForMessage?.getTimelineEvent(eventId) ?: return null
val post = getPostContentTypeFor(timelineEvent)?.let { timelineEvent.toPost(it) } return getPostContentTypeFor(timelineEvent)?.let { timelineEvent.toPost(it) }
?: return null
return post.content
} }
fun getPostContent(roomId: String, eventId: String): PostContent? =
getPost(roomId, eventId)?.content
private fun getPostContentTypeFor(event: TimelineEvent): PostContentType? { private fun getPostContentTypeFor(event: TimelineEvent): PostContentType? {
val messageType = event.root.getClearContent()?.toModel<MessageContent>()?.msgType val messageType = event.root.getClearContent()?.toModel<MessageContent>()?.msgType
return PostContentType.values().firstOrNull { it.typeKey == messageType } return PostContentType.values().firstOrNull { it.typeKey == messageType }
......
...@@ -10,13 +10,14 @@ import org.futo.circles.core.extensions.getOrThrow ...@@ -10,13 +10,14 @@ import org.futo.circles.core.extensions.getOrThrow
import org.futo.circles.core.extensions.launchBg import org.futo.circles.core.extensions.launchBg
import org.futo.circles.core.model.MediaContent import org.futo.circles.core.model.MediaContent
import org.futo.circles.core.model.PostContentType import org.futo.circles.core.model.PostContentType
import org.futo.circles.core.timeline.post.PostContentDataSource
import org.futo.circles.core.utils.FileUtils import org.futo.circles.core.utils.FileUtils
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
class FullScreenMediaViewModel @Inject constructor( class FullScreenMediaViewModel @Inject constructor(
savedStateHandle: SavedStateHandle, savedStateHandle: SavedStateHandle,
private val fullScreenMediaDataSource: FullScreenMediaDataSource private val postContentDataSource: PostContentDataSource
) : ViewModel() { ) : ViewModel() {
private val roomId: String = savedStateHandle.getOrThrow("roomId") private val roomId: String = savedStateHandle.getOrThrow("roomId")
...@@ -27,7 +28,7 @@ class FullScreenMediaViewModel @Inject constructor( ...@@ -27,7 +28,7 @@ class FullScreenMediaViewModel @Inject constructor(
fun loadData(context: Context) { fun loadData(context: Context) {
val content = val content =
(fullScreenMediaDataSource.getPostContent(roomId, eventId) as? MediaContent) ?: return (postContentDataSource.getPostContent(roomId, eventId) as? MediaContent) ?: return
when (content.type) { when (content.type) {
PostContentType.IMAGE_CONTENT -> imageLiveData.postValue(content) PostContentType.IMAGE_CONTENT -> imageLiveData.postValue(content)
PostContentType.VIDEO_CONTENT -> launchBg { PostContentType.VIDEO_CONTENT -> launchBg {
......
...@@ -14,7 +14,7 @@ import org.futo.circles.core.timeline.BaseTimelineViewModel ...@@ -14,7 +14,7 @@ import org.futo.circles.core.timeline.BaseTimelineViewModel
import org.futo.circles.core.timeline.TimelineDataSource import org.futo.circles.core.timeline.TimelineDataSource
import org.futo.circles.core.timeline.post.PostOptionsDataSource import org.futo.circles.core.timeline.post.PostOptionsDataSource
import org.futo.circles.core.timeline.post.SendMessageDataSource import org.futo.circles.core.timeline.post.SendMessageDataSource
import org.futo.circles.gallery.feature.gallery.full_screen.media_item.FullScreenMediaDataSource import org.futo.circles.core.timeline.post.PostContentDataSource
import org.futo.circles.core.model.GalleryContentListItem import org.futo.circles.core.model.GalleryContentListItem
import javax.inject.Inject import javax.inject.Inject
...@@ -23,7 +23,7 @@ class GalleryViewModel @Inject constructor( ...@@ -23,7 +23,7 @@ class GalleryViewModel @Inject constructor(
savedStateHandle: SavedStateHandle, savedStateHandle: SavedStateHandle,
timelineDataSource: TimelineDataSource, timelineDataSource: TimelineDataSource,
private val sendMessageDataSource: SendMessageDataSource, private val sendMessageDataSource: SendMessageDataSource,
private val mediaDataSource: FullScreenMediaDataSource, private val mediaDataSource: PostContentDataSource,
private val postOptionsDataSource: PostOptionsDataSource private val postOptionsDataSource: PostOptionsDataSource
) : BaseTimelineViewModel(timelineDataSource) { ) : BaseTimelineViewModel(timelineDataSource) {
......
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