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

View holders for video dm

parent 5c3775a9
No related branches found
No related tags found
No related merge requests found
......@@ -7,8 +7,10 @@ import org.futo.circles.core.model.PostContentType
import org.futo.circles.core.model.TimelineLoadingItem
import org.futo.circles.feature.direct.timeline.list.holder.DmMyImageMessageViewHolder
import org.futo.circles.feature.direct.timeline.list.holder.DmMyTextMessageViewHolder
import org.futo.circles.feature.direct.timeline.list.holder.DmMyVideoMessageViewHolder
import org.futo.circles.feature.direct.timeline.list.holder.DmOtherImageMessageViewHolder
import org.futo.circles.feature.direct.timeline.list.holder.DmOtherTextMessageViewHolder
import org.futo.circles.feature.direct.timeline.list.holder.DmOtherVideoMessageViewHolder
import org.futo.circles.feature.timeline.base.BaseTimelineAdapter
import org.futo.circles.feature.timeline.base.TimelineListItemViewHolder
import org.futo.circles.feature.timeline.list.PostOptionsListener
......@@ -24,7 +26,7 @@ private enum class DmTimelineViewType {
class DMTimelineAdapter(
private val postOptionsListener: PostOptionsListener,
videoPlayer: ExoPlayer
private val videoPlayer: ExoPlayer
) : BaseTimelineAdapter() {
......@@ -55,8 +57,18 @@ class DMTimelineAdapter(
DmTimelineViewType.OTHER_TEXT -> DmOtherTextMessageViewHolder(parent)
DmTimelineViewType.MY_IMAGE -> DmMyImageMessageViewHolder(parent)
DmTimelineViewType.OTHER_IMAGE -> DmOtherImageMessageViewHolder(parent)
DmTimelineViewType.MY_VIDEO -> TODO()
DmTimelineViewType.OTHER_VIDEO -> TODO()
DmTimelineViewType.MY_VIDEO -> DmMyVideoMessageViewHolder(
parent,
videoPlayer,
this
)
DmTimelineViewType.OTHER_VIDEO -> DmOtherVideoMessageViewHolder(
parent,
videoPlayer,
this
)
DmTimelineViewType.OTHER -> OtherEventPostViewHolder(parent, postOptionsListener)
DmTimelineViewType.LOADING -> TimelineLoadingViewHolder(parent)
}
......
package org.futo.circles.feature.direct.timeline.list.holder
import android.text.format.DateFormat
import android.view.ViewGroup
import androidx.media3.exoplayer.ExoPlayer
import org.futo.circles.core.base.list.ViewBindingHolder
import org.futo.circles.core.model.MediaContent
import org.futo.circles.core.model.Post
import org.futo.circles.core.model.PostListItem
import org.futo.circles.databinding.LayoutPostVideoPlaybackBinding
import org.futo.circles.databinding.ListItemMyVideoDmBinding
import org.futo.circles.feature.timeline.base.TimelineListItemViewHolder
import org.futo.circles.feature.timeline.list.OnVideoPlayBackStateListener
import org.futo.circles.feature.timeline.list.holder.VideoPlaybackViewHolder
import java.util.Date
class DmMyVideoMessageViewHolder(
parent: ViewGroup,
override val videoPlayer: ExoPlayer,
override val videoPlaybackListener: OnVideoPlayBackStateListener
) : TimelineListItemViewHolder(inflate(parent, ListItemMyVideoDmBinding::inflate)),
VideoPlaybackViewHolder {
private companion object : ViewBindingHolder
private val binding = baseBinding as ListItemMyVideoDmBinding
override val videoPlaybackLayout: LayoutPostVideoPlaybackBinding
get() = binding.videoPlaybackLayout
override fun bind(item: PostListItem) {
val post = (item as? Post) ?: return
val content = post.content as? MediaContent ?: return
with(binding) {
bindMediaCover(content, videoPlaybackLayout.ivMediaContent)
bindVideoView(content)
videoPlaybackLayout.tvDuration.text = content.mediaFileData.duration
tvTime.text =
DateFormat.format("MMM dd, h:mm a", Date(post.postInfo.getLastModifiedTimestamp()))
}
}
}
\ No newline at end of file
package org.futo.circles.feature.direct.timeline.list.holder
import android.text.format.DateFormat
import android.view.ViewGroup
import androidx.media3.exoplayer.ExoPlayer
import org.futo.circles.core.base.list.ViewBindingHolder
import org.futo.circles.core.model.MediaContent
import org.futo.circles.core.model.Post
import org.futo.circles.core.model.PostListItem
import org.futo.circles.databinding.LayoutPostVideoPlaybackBinding
import org.futo.circles.databinding.ListItemOtherVideoDmBinding
import org.futo.circles.feature.timeline.base.TimelineListItemViewHolder
import org.futo.circles.feature.timeline.list.OnVideoPlayBackStateListener
import org.futo.circles.feature.timeline.list.holder.VideoPlaybackViewHolder
import java.util.Date
class DmOtherVideoMessageViewHolder(
parent: ViewGroup,
override val videoPlayer: ExoPlayer,
override val videoPlaybackListener: OnVideoPlayBackStateListener
) : TimelineListItemViewHolder(inflate(parent, ListItemOtherVideoDmBinding::inflate)),
VideoPlaybackViewHolder {
private companion object : ViewBindingHolder
private val binding = baseBinding as ListItemOtherVideoDmBinding
override val videoPlaybackLayout: LayoutPostVideoPlaybackBinding
get() = binding.videoPlaybackLayout
override fun bind(item: PostListItem) {
val post = (item as? Post) ?: return
val content = post.content as? MediaContent ?: return
with(binding) {
bindMediaCover(content, videoPlaybackLayout.ivMediaContent)
bindVideoView(content)
videoPlaybackLayout.tvDuration.text = content.mediaFileData.duration
tvTime.text =
DateFormat.format("MMM dd, h:mm a", Date(post.postInfo.getLastModifiedTimestamp()))
}
}
}
\ No newline at end of file
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