diff --git a/app/src/main/java/org/futo/circles/feature/room/manage_members/change_role/ChangeAccessLevelBottomSheet.kt b/app/src/main/java/org/futo/circles/feature/room/manage_members/change_role/ChangeAccessLevelBottomSheet.kt index 6f0cf647fd08d5f1dc8d5d0f05dbaca48c89aaa4..b7c8a01f18e8905114c75bb7a9aec07c63ac2471 100644 --- a/app/src/main/java/org/futo/circles/feature/room/manage_members/change_role/ChangeAccessLevelBottomSheet.kt +++ b/app/src/main/java/org/futo/circles/feature/room/manage_members/change_role/ChangeAccessLevelBottomSheet.kt @@ -5,7 +5,6 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.view.WindowManager import androidx.fragment.app.viewModels import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.DividerItemDecoration 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 618d5c32a5588e4ac20fe9c60019d2fbe032c095..c0ff2376262aefe06c5f0a7e50293db8e0bbcf1f 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 @@ -8,13 +8,13 @@ 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.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 @HiltViewModel class TimelineMediaPreviewViewModel @Inject constructor( savedStateHandle: SavedStateHandle, - private val mediaDataSource: FullScreenMediaDataSource, + private val mediaDataSource: PostContentDataSource, private val postOptionsDataSource: PostOptionsDataSource ) : ViewModel() { diff --git a/app/src/main/java/org/futo/circles/feature/timeline/save/SavePostToGalleryViewModel.kt b/app/src/main/java/org/futo/circles/feature/timeline/save/SavePostToGalleryViewModel.kt index 62094275a121cd79242505bfb237ff5935a71feb..5cc31671617710717b3bf1cf65afb70831161b47 100644 --- a/app/src/main/java/org/futo/circles/feature/timeline/save/SavePostToGalleryViewModel.kt +++ b/app/src/main/java/org/futo/circles/feature/timeline/save/SavePostToGalleryViewModel.kt @@ -6,12 +6,12 @@ import org.futo.circles.core.SingleEventLiveData import org.futo.circles.core.extensions.Response import org.futo.circles.core.extensions.launchBg 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 @HiltViewModel class SavePostToGalleryViewModel @Inject constructor( - private val mediaPreviewDataSource: FullScreenMediaDataSource, + private val mediaPreviewDataSource: PostContentDataSource, private val savePostToGalleryDataSource: SavePostToGalleryDataSource ) : ViewModel() { diff --git a/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/full_screen/media_item/FullScreenMediaDataSource.kt b/core/src/main/java/org/futo/circles/core/timeline/post/PostContentDataSource.kt similarity index 77% rename from gallery/src/main/java/org/futo/circles/gallery/feature/gallery/full_screen/media_item/FullScreenMediaDataSource.kt rename to core/src/main/java/org/futo/circles/core/timeline/post/PostContentDataSource.kt index 3ae01daef03d64527e72ff6d60c2b536e5d236f8..f25196817e6226e4fa2844ed3f4334bf3aa78f0d 100644 --- a/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/full_screen/media_item/FullScreenMediaDataSource.kt +++ b/core/src/main/java/org/futo/circles/core/timeline/post/PostContentDataSource.kt @@ -1,7 +1,8 @@ -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 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.PostContentType import org.futo.circles.core.provider.MatrixSessionProvider @@ -14,18 +15,20 @@ import javax.inject.Inject @ViewModelScoped -class FullScreenMediaDataSource @Inject constructor() { +class PostContentDataSource @Inject constructor() { 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 timelineEvent = roomForMessage?.getTimelineEvent(eventId) ?: return null - val post = getPostContentTypeFor(timelineEvent)?.let { timelineEvent.toPost(it) } - ?: return null - return post.content + return getPostContentTypeFor(timelineEvent)?.let { timelineEvent.toPost(it) } } + fun getPostContent(roomId: String, eventId: String): PostContent? = + getPost(roomId, eventId)?.content + + private fun getPostContentTypeFor(event: TimelineEvent): PostContentType? { val messageType = event.root.getClearContent()?.toModel<MessageContent>()?.msgType return PostContentType.values().firstOrNull { it.typeKey == messageType } diff --git a/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/full_screen/media_item/FullScreenMediaViewModel.kt b/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/full_screen/media_item/FullScreenMediaViewModel.kt index e0ddf2decefa51820010090851db831f16ae6b9a..44b60485017bca1a5522fb46f40a6abb10609230 100644 --- a/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/full_screen/media_item/FullScreenMediaViewModel.kt +++ b/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/full_screen/media_item/FullScreenMediaViewModel.kt @@ -10,13 +10,14 @@ import org.futo.circles.core.extensions.getOrThrow import org.futo.circles.core.extensions.launchBg import org.futo.circles.core.model.MediaContent import org.futo.circles.core.model.PostContentType +import org.futo.circles.core.timeline.post.PostContentDataSource import org.futo.circles.core.utils.FileUtils import javax.inject.Inject @HiltViewModel class FullScreenMediaViewModel @Inject constructor( savedStateHandle: SavedStateHandle, - private val fullScreenMediaDataSource: FullScreenMediaDataSource + private val postContentDataSource: PostContentDataSource ) : ViewModel() { private val roomId: String = savedStateHandle.getOrThrow("roomId") @@ -27,7 +28,7 @@ class FullScreenMediaViewModel @Inject constructor( fun loadData(context: Context) { val content = - (fullScreenMediaDataSource.getPostContent(roomId, eventId) as? MediaContent) ?: return + (postContentDataSource.getPostContent(roomId, eventId) as? MediaContent) ?: return when (content.type) { PostContentType.IMAGE_CONTENT -> imageLiveData.postValue(content) PostContentType.VIDEO_CONTENT -> launchBg { 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 ab3a1797507d58e42d0a5971d400deb0e84da351..d5716bff6520487658a5a8c37ca9f500c81d89db 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 @@ -14,7 +14,7 @@ import org.futo.circles.core.timeline.BaseTimelineViewModel import org.futo.circles.core.timeline.TimelineDataSource import org.futo.circles.core.timeline.post.PostOptionsDataSource 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 javax.inject.Inject @@ -23,7 +23,7 @@ class GalleryViewModel @Inject constructor( savedStateHandle: SavedStateHandle, timelineDataSource: TimelineDataSource, private val sendMessageDataSource: SendMessageDataSource, - private val mediaDataSource: FullScreenMediaDataSource, + private val mediaDataSource: PostContentDataSource, private val postOptionsDataSource: PostOptionsDataSource ) : BaseTimelineViewModel(timelineDataSource) {