Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
AloqaIM-Android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
AloqaIM-Android
Commits
0e1d2b7b
Commit
0e1d2b7b
authored
Oct 31, 2018
by
Lucio Maciel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup
parent
823c6125
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
69 additions
and
815 deletions
+69
-815
ActionsAttachmentViewHolder.kt
...t/android/chatroom/adapter/ActionsAttachmentViewHolder.kt
+0
-44
AttachmentViewHolder.kt
...t/rocket/android/chatroom/adapter/AttachmentViewHolder.kt
+19
-11
AudioAttachmentViewHolder.kt
...ket/android/chatroom/adapter/AudioAttachmentViewHolder.kt
+0
-34
AuthorAttachmentViewHolder.kt
...et/android/chatroom/adapter/AuthorAttachmentViewHolder.kt
+0
-50
ChatRoomAdapter.kt
...a/chat/rocket/android/chatroom/adapter/ChatRoomAdapter.kt
+0
-48
ColorAttachmentViewHolder.kt
...ket/android/chatroom/adapter/ColorAttachmentViewHolder.kt
+0
-50
GenericFileAttachmentViewHolder.kt
...droid/chatroom/adapter/GenericFileAttachmentViewHolder.kt
+0
-32
ImageAttachmentViewHolder.kt
...ket/android/chatroom/adapter/ImageAttachmentViewHolder.kt
+0
-43
MessageAttachmentViewHolder.kt
...t/android/chatroom/adapter/MessageAttachmentViewHolder.kt
+0
-107
VideoAttachmentViewHolder.kt
...ket/android/chatroom/adapter/VideoAttachmentViewHolder.kt
+0
-34
ActionsAttachmentUiModel.kt
...cket/android/chatroom/uimodel/ActionsAttachmentUiModel.kt
+0
-28
AudioAttachmentUiModel.kt
...rocket/android/chatroom/uimodel/AudioAttachmentUiModel.kt
+0
-28
AuthorAttachmentUiModel.kt
...ocket/android/chatroom/uimodel/AuthorAttachmentUiModel.kt
+0
-30
BaseFileAttachmentUiModel.kt
...ket/android/chatroom/uimodel/BaseFileAttachmentUiModel.kt
+0
-6
BaseUiModel.kt
.../java/chat/rocket/android/chatroom/uimodel/BaseUiModel.kt
+2
-10
ColorAttachmentUiModel.kt
...rocket/android/chatroom/uimodel/ColorAttachmentUiModel.kt
+0
-30
GenericFileAttachmentUiModel.kt
.../android/chatroom/uimodel/GenericFileAttachmentUiModel.kt
+0
-28
ImageAttachmentUiModel.kt
...rocket/android/chatroom/uimodel/ImageAttachmentUiModel.kt
+0
-30
MessageAttachmentUiModel.kt
...cket/android/chatroom/uimodel/MessageAttachmentUiModel.kt
+0
-30
UiModelMapper.kt
...ava/chat/rocket/android/chatroom/uimodel/UiModelMapper.kt
+17
-108
VideoAttachmentUiModel.kt
...rocket/android/chatroom/uimodel/VideoAttachmentUiModel.kt
+0
-28
DatabaseManager.kt
app/src/main/java/chat/rocket/android/db/DatabaseManager.kt
+1
-1
Attachments.kt
...src/main/java/chat/rocket/android/db/model/Attachments.kt
+23
-2
CharSequence.kt
.../java/chat/rocket/android/util/extensions/CharSequence.kt
+4
-2
String.kt
...c/main/java/chat/rocket/android/util/extensions/String.kt
+3
-1
No files found.
app/src/main/java/chat/rocket/android/chatroom/adapter/ActionsAttachmentViewHolder.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.adapter
/*
import android.view.View
import chat.rocket.android.chatroom.uimodel.ActionsAttachmentUiModel
import chat.rocket.android.emoji.EmojiReactionListener
import chat.rocket.core.model.attachment.actions.Action
import chat.rocket.core.model.attachment.actions.ButtonAction
import kotlinx.android.synthetic.main.item_actions_attachment.view.*
import androidx.recyclerview.widget.LinearLayoutManager
import timber.log.Timber
class ActionsAttachmentViewHolder(
itemView: View,
listener: ActionsListener,
reactionListener: EmojiReactionListener? = null,
var actionAttachmentOnClickListener: ActionAttachmentOnClickListener
) : BaseViewHolder<ActionsAttachmentUiModel>(itemView, listener, reactionListener) {
init {
with(itemView) {
setupActionMenu(actions_attachment_container)
}
}
override fun bindViews(data: ActionsAttachmentUiModel) {
val actions = data.actions
val alignment = data.buttonAlignment
Timber.d("no of actions : ${actions.size} : $actions")
with(itemView) {
title.text = data.title ?: ""
actions_list.layoutManager = LinearLayoutManager(itemView.context,
when (alignment) {
"horizontal" -> LinearLayoutManager.HORIZONTAL
else -> LinearLayoutManager.VERTICAL //Default
}, false)
actions_list.adapter = ActionsListAdapter(actions, actionAttachmentOnClickListener)
}
}
}
interface ActionAttachmentOnClickListener {
fun onActionClicked(view: View, action: Action)
}*/
app/src/main/java/chat/rocket/android/chatroom/adapter/AttachmentViewHolder.kt
View file @
0e1d2b7b
...
@@ -53,63 +53,71 @@ class AttachmentViewHolder(
...
@@ -53,63 +53,71 @@ class AttachmentViewHolder(
override
fun
bindViews
(
data
:
AttachmentUiModel
)
{
override
fun
bindViews
(
data
:
AttachmentUiModel
)
{
with
(
itemView
)
{
with
(
itemView
)
{
val
showQuoteBar
=
shouldShowQuoteBar
(
data
)
file_name
.
isVisible
=
false
file_name
.
isVisible
=
false
image_attachment
.
isVisible
=
data
.
hasImage
audio_video_attachment
.
isVisible
=
data
.
hasAudioOrVideo
text_file_name
.
isVisible
=
false
text_file_name
.
isVisible
=
false
// Media attachments
// Media attachments
image_attachment
.
isVisible
=
data
.
hasImage
audio_video_attachment
.
isVisible
=
data
.
hasAudioOrVideo
when
{
when
{
data
.
hasImage
->
bindImage
(
data
)
data
.
hasImage
->
bindImage
(
data
)
data
.
hasAudioOrVideo
->
bindAudioOrVideo
(
data
)
data
.
hasAudioOrVideo
->
bindAudioOrVideo
(
data
)
data
.
hasFile
->
bindFile
(
data
)
data
.
hasFile
->
bindFile
(
data
)
}
}
// File description - self describing
file_description
.
isVisible
=
data
.
hasDescription
file_description
.
isVisible
=
data
.
hasDescription
file_description
.
text
=
data
.
description
file_description
.
text
=
data
.
description
// Message attachment
messageViews
.
isVisible
=
data
.
hasMessage
messageViews
.
isVisible
=
data
.
hasMessage
if
(
data
.
hasMessage
)
{
if
(
data
.
hasMessage
)
{
bindMessage
(
data
)
bindMessage
(
data
)
}
}
// Author
author_icon
.
isInvisible
=
!(
data
.
hasAuthorIcon
&&
data
.
hasAuthorLink
&&
data
.
hasAuthorName
)
author_icon
.
isInvisible
=
!(
data
.
hasAuthorIcon
&&
data
.
hasAuthorLink
&&
data
.
hasAuthorName
)
text_author_name
.
isVisible
=
data
.
hasAuthorLink
&&
data
.
hasAuthorName
text_author_name
.
isVisible
=
data
.
hasAuthorLink
&&
data
.
hasAuthorName
if
(
data
.
hasAuthorLink
&&
data
.
hasAuthorName
)
{
if
(
data
.
hasAuthorLink
&&
data
.
hasAuthorName
)
{
bindAuthorLink
(
data
)
bindAuthorLink
(
data
)
}
}
// If not media or message, show the text with quote bar
attachment_text
.
isVisible
=
!
data
.
hasMedia
&&
!
data
.
hasMessage
&&
data
.
hasText
attachment_text
.
isVisible
=
!
data
.
hasMedia
&&
!
data
.
hasMessage
&&
data
.
hasText
attachment_text
.
text
=
data
.
text
attachment_text
.
text
=
data
.
text
// If it has titleLink and is not "type = file" show the title/titleLink on this field.
file_name_not_file_type
.
isVisible
=
!
data
.
hasFile
&&
data
.
hasTitleLink
file_name_not_file_type
.
isVisible
=
!
data
.
hasFile
&&
data
.
hasTitleLink
if
(!
data
.
hasFile
&&
data
.
hasTitleLink
)
{
if
(!
data
.
hasFile
&&
data
.
hasTitleLink
)
{
bindTitleLink
(
data
)
bindTitleLink
(
data
)
}
}
// Fields
text_fields
.
isVisible
=
data
.
hasFields
text_fields
.
isVisible
=
data
.
hasFields
if
(
data
.
hasFields
)
{
if
(
data
.
hasFields
)
{
bindFields
(
data
)
bindFields
(
data
)
}
}
quote_bar
.
isVisible
=
showQuoteBar
// Actions
actions_list
.
isVisible
=
data
.
hasActions
if
(
data
.
hasActions
)
{
bindActions
(
data
)
}
// Quote bar
quote_bar
.
isVisible
=
shouldShowQuoteBar
(
data
)
if
(
data
.
color
!=
null
)
{
if
(
data
.
color
!=
null
)
{
quote_bar
.
setColorFilter
(
data
.
color
)
quote_bar
.
setColorFilter
(
data
.
color
)
}
else
{
}
else
{
quote_bar
.
setColorFilter
(
quoteBarColor
)
quote_bar
.
setColorFilter
(
quoteBarColor
)
}
}
actions_list
.
isVisible
=
data
.
hasActions
if
(
data
.
hasActions
)
{
bindActions
(
data
)
}
}
}
}
}
private
fun
shouldShowQuoteBar
(
data
:
AttachmentUiModel
):
Boolean
{
private
fun
shouldShowQuoteBar
(
data
:
AttachmentUiModel
):
Boolean
{
return
data
.
hasFields
||
(
data
.
hasAuthorLink
&&
data
.
hasAuthorName
)
||
data
.
hasMessage
||
(!
data
.
hasFile
&&
data
.
hasTitleLink
)
return
data
.
hasFields
||
data
.
hasActions
||
(
data
.
hasAuthorLink
&&
data
.
hasAuthorName
)
||
data
.
hasMessage
||
(!
data
.
hasFile
&&
data
.
hasTitleLink
)
||
(!
data
.
hasMedia
&&
!
data
.
hasMessage
&&
data
.
hasText
)
}
}
private
fun
bindImage
(
data
:
AttachmentUiModel
)
{
private
fun
bindImage
(
data
:
AttachmentUiModel
)
{
...
...
app/src/main/java/chat/rocket/android/chatroom/adapter/AudioAttachmentViewHolder.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.adapter
/*
import android.view.View
import androidx.core.view.isVisible
import chat.rocket.android.chatroom.uimodel.AudioAttachmentUiModel
import chat.rocket.android.player.PlayerActivity
import chat.rocket.android.emoji.EmojiReactionListener
import kotlinx.android.synthetic.main.message_attachment.view.*
class AudioAttachmentViewHolder(itemView: View,
listener: ActionsListener,
reactionListener: EmojiReactionListener? = null)
: BaseViewHolder<AudioAttachmentUiModel>(itemView, listener, reactionListener) {
init {
with(itemView) {
setupActionMenu(attachment_container)
image_attachment.isVisible = false
audio_video_attachment.isVisible = true
}
}
override fun bindViews(data: AudioAttachmentUiModel) {
with(itemView) {
file_name.text = data.attachmentTitle
audio_video_attachment.setOnClickListener { view ->
data.attachmentUrl.let { url ->
PlayerActivity.play(view.context, url)
}
}
}
}
}*/
app/src/main/java/chat/rocket/android/chatroom/adapter/AuthorAttachmentViewHolder.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.adapter
/*
import android.content.Intent
import android.net.Uri
import android.view.View
import androidx.core.view.isGone
import androidx.core.view.isVisible
import chat.rocket.android.chatroom.uimodel.AuthorAttachmentUiModel
import chat.rocket.android.emoji.EmojiReactionListener
import chat.rocket.android.util.extensions.content
import chat.rocket.common.util.ifNull
import kotlinx.android.synthetic.main.item_author_attachment.view.*
class AuthorAttachmentViewHolder(itemView: View,
listener: ActionsListener,
reactionListener: EmojiReactionListener? = null)
: BaseViewHolder<AuthorAttachmentUiModel>(itemView, listener, reactionListener) {
init {
with(itemView) {
setupActionMenu(author_attachment_container)
}
}
override fun bindViews(data: AuthorAttachmentUiModel) {
with(itemView) {
data.icon?.let { icon ->
author_icon.isVisible = true
author_icon.setImageURI(icon)
}.ifNull {
author_icon.isGone = true
}
author_icon.setImageURI(data.icon)
text_author_name.content = data.name
data.fields?.let { fields ->
text_fields.content = fields
text_fields.isVisible = true
}.ifNull {
text_fields.isGone = true
}
text_author_name.setOnClickListener {
it.context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(data.attachmentUrl)))
}
}
}
}*/
app/src/main/java/chat/rocket/android/chatroom/adapter/ChatRoomAdapter.kt
View file @
0e1d2b7b
...
@@ -36,38 +36,10 @@ class ChatRoomAdapter(
...
@@ -36,38 +36,10 @@ class ChatRoomAdapter(
val
view
=
parent
.
inflate
(
R
.
layout
.
item_message
)
val
view
=
parent
.
inflate
(
R
.
layout
.
item_message
)
MessageViewHolder
(
view
,
actionsListener
,
reactionListener
)
MessageViewHolder
(
view
,
actionsListener
,
reactionListener
)
}
}
/*BaseUiModel.ViewType.IMAGE_ATTACHMENT -> {
val view = parent.inflate(R.layout.message_attachment)
ImageAttachmentViewHolder(view, actionsListener, reactionListener)
}
BaseUiModel.ViewType.AUDIO_ATTACHMENT -> {
val view = parent.inflate(R.layout.message_attachment)
AudioAttachmentViewHolder(view, actionsListener, reactionListener)
}
BaseUiModel.ViewType.VIDEO_ATTACHMENT -> {
val view = parent.inflate(R.layout.message_attachment)
VideoAttachmentViewHolder(view, actionsListener, reactionListener)
}*/
BaseUiModel
.
ViewType
.
URL_PREVIEW
->
{
BaseUiModel
.
ViewType
.
URL_PREVIEW
->
{
val
view
=
parent
.
inflate
(
R
.
layout
.
message_url_preview
)
val
view
=
parent
.
inflate
(
R
.
layout
.
message_url_preview
)
UrlPreviewViewHolder
(
view
,
actionsListener
,
reactionListener
)
UrlPreviewViewHolder
(
view
,
actionsListener
,
reactionListener
)
}
}
/*BaseUiModel.ViewType.MESSAGE_ATTACHMENT -> {
val view = parent.inflate(R.layout.item_message_attachment)
MessageAttachmentViewHolder(view, actionsListener, reactionListener)
}
BaseUiModel.ViewType.AUTHOR_ATTACHMENT -> {
val view = parent.inflate(R.layout.item_author_attachment)
AuthorAttachmentViewHolder(view, actionsListener, reactionListener)
}
BaseUiModel.ViewType.COLOR_ATTACHMENT -> {
val view = parent.inflate(R.layout.item_color_attachment)
ColorAttachmentViewHolder(view, actionsListener, reactionListener)
}
BaseUiModel.ViewType.GENERIC_FILE_ATTACHMENT -> {
val view = parent.inflate(R.layout.item_file_attachment)
GenericFileAttachmentViewHolder(view, actionsListener, reactionListener)
}*/
BaseUiModel
.
ViewType
.
ATTACHMENT
->
{
BaseUiModel
.
ViewType
.
ATTACHMENT
->
{
val
view
=
parent
.
inflate
(
R
.
layout
.
item_message_attachment
)
val
view
=
parent
.
inflate
(
R
.
layout
.
item_message_attachment
)
AttachmentViewHolder
(
view
,
actionsListener
,
reactionListener
,
actionAttachmentOnClickListener
)
AttachmentViewHolder
(
view
,
actionsListener
,
reactionListener
,
actionAttachmentOnClickListener
)
...
@@ -78,10 +50,6 @@ class ChatRoomAdapter(
...
@@ -78,10 +50,6 @@ class ChatRoomAdapter(
actionSelectListener
?.
openDirectMessage
(
roomName
,
permalink
)
actionSelectListener
?.
openDirectMessage
(
roomName
,
permalink
)
}
}
}
}
/*BaseUiModel.ViewType.ACTIONS_ATTACHMENT -> {
val view = parent.inflate(R.layout.item_actions_attachment)
ActionsAttachmentViewHolder(view, actionsListener, reactionListener, actionAttachmentOnClickListener)
}*/
else
->
{
else
->
{
throw
InvalidParameterException
(
"TODO - implement for ${viewType.toViewType()}"
)
throw
InvalidParameterException
(
"TODO - implement for ${viewType.toViewType()}"
)
}
}
...
@@ -117,26 +85,10 @@ class ChatRoomAdapter(
...
@@ -117,26 +85,10 @@ class ChatRoomAdapter(
when
(
holder
)
{
when
(
holder
)
{
is
MessageViewHolder
->
is
MessageViewHolder
->
holder
.
bind
(
dataSet
[
position
]
as
MessageUiModel
)
holder
.
bind
(
dataSet
[
position
]
as
MessageUiModel
)
/*is ImageAttachmentViewHolder ->
holder.bind(dataSet[position] as ImageAttachmentUiModel)
is AudioAttachmentViewHolder ->
holder.bind(dataSet[position] as AudioAttachmentUiModel)
is VideoAttachmentViewHolder ->
holder.bind(dataSet[position] as VideoAttachmentUiModel)*/
is
UrlPreviewViewHolder
->
is
UrlPreviewViewHolder
->
holder
.
bind
(
dataSet
[
position
]
as
UrlPreviewUiModel
)
holder
.
bind
(
dataSet
[
position
]
as
UrlPreviewUiModel
)
/*is MessageAttachmentViewHolder ->
holder.bind(dataSet[position] as MessageAttachmentUiModel)
is AuthorAttachmentViewHolder ->
holder.bind(dataSet[position] as AuthorAttachmentUiModel)
is ColorAttachmentViewHolder ->
holder.bind(dataSet[position] as ColorAttachmentUiModel)
is GenericFileAttachmentViewHolder ->
holder.bind(dataSet[position] as GenericFileAttachmentUiModel)*/
is
MessageReplyViewHolder
->
is
MessageReplyViewHolder
->
holder
.
bind
(
dataSet
[
position
]
as
MessageReplyUiModel
)
holder
.
bind
(
dataSet
[
position
]
as
MessageReplyUiModel
)
/*is ActionsAttachmentViewHolder ->
holder.bind(dataSet[position] as ActionsAttachmentUiModel)*/
is
AttachmentViewHolder
->
is
AttachmentViewHolder
->
holder
.
bind
(
dataSet
[
position
]
as
AttachmentUiModel
)
holder
.
bind
(
dataSet
[
position
]
as
AttachmentUiModel
)
}
}
...
...
app/src/main/java/chat/rocket/android/chatroom/adapter/ColorAttachmentViewHolder.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.adapter
/*
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import androidx.core.content.ContextCompat
import android.text.method.LinkMovementMethod
import android.view.View
import androidx.core.view.isVisible
import androidx.core.widget.ImageViewCompat
import chat.rocket.android.R
import chat.rocket.android.chatroom.uimodel.ColorAttachmentUiModel
import chat.rocket.android.emoji.EmojiReactionListener
import kotlinx.android.synthetic.main.item_color_attachment.view.*
class ColorAttachmentViewHolder(itemView: View,
listener: BaseViewHolder.ActionsListener,
reactionListener: EmojiReactionListener? = null)
: BaseViewHolder<ColorAttachmentUiModel>(itemView, listener, reactionListener) {
val drawable: Drawable = ColorDrawable(ContextCompat.getColor(itemView.context, R.color.quoteBar))
init {
with(itemView) {
setupActionMenu(color_attachment_container)
attachment_text.movementMethod = LinkMovementMethod()
}
}
override fun bindViews(data: ColorAttachmentUiModel) {
with(itemView) {
quote_bar.setColorFilter(data.color)
if (data.text.isNullOrEmpty()) {
attachment_text.isVisible = false
} else {
attachment_text.isVisible = true
attachment_text.text = data.text
}
if (data.fields.isNullOrEmpty()) {
text_fields.isVisible = false
} else {
text_fields.isVisible = true
text_fields.text = data.fields
}
}
}
}*/
app/src/main/java/chat/rocket/android/chatroom/adapter/GenericFileAttachmentViewHolder.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.adapter
/*
import android.content.Intent
import android.view.View
import androidx.core.net.toUri
import chat.rocket.android.chatroom.uimodel.GenericFileAttachmentUiModel
import chat.rocket.android.emoji.EmojiReactionListener
import chat.rocket.android.util.extensions.content
import kotlinx.android.synthetic.main.item_file_attachment.view.*
class GenericFileAttachmentViewHolder(itemView: View,
listener: ActionsListener,
reactionListener: EmojiReactionListener? = null)
: BaseViewHolder<GenericFileAttachmentUiModel>(itemView, listener, reactionListener) {
init {
with(itemView) {
setupActionMenu(file_attachment_container)
}
}
override fun bindViews(data: GenericFileAttachmentUiModel) {
with(itemView) {
text_file_name.content = data.attachmentTitle
text_file_name.setOnClickListener {
it.context.startActivity(Intent(Intent.ACTION_VIEW, data.attachmentUrl.toUri()))
}
}
}
}*/
app/src/main/java/chat/rocket/android/chatroom/adapter/ImageAttachmentViewHolder.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.adapter
/*
import android.view.View
import chat.rocket.android.chatroom.uimodel.ImageAttachmentUiModel
import chat.rocket.android.helper.ImageHelper
import chat.rocket.android.emoji.EmojiReactionListener
import com.facebook.drawee.backends.pipeline.Fresco
import kotlinx.android.synthetic.main.message_attachment.view.*
class ImageAttachmentViewHolder(
itemView: View,
listener: ActionsListener,
reactionListener: EmojiReactionListener? = null
) : BaseViewHolder<ImageAttachmentUiModel>(itemView, listener, reactionListener) {
init {
with(itemView) {
setupActionMenu(attachment_container)
}
}
override fun bindViews(data: ImageAttachmentUiModel) {
with(itemView) {
val controller = Fresco.newDraweeControllerBuilder().apply {
setUri(data.attachmentUrl)
autoPlayAnimations = true
oldController = image_attachment.controller
}.build()
image_attachment.controller = controller
file_name.text = data.attachmentTitle
file_description.text = data.attachmentDescription
file_text.text = data.attachmentText
image_attachment.setOnClickListener {
ImageHelper.openImage(
context,
data.attachmentUrl,
data.attachmentTitle.toString()
)
}
}
}
}*/
app/src/main/java/chat/rocket/android/chatroom/adapter/MessageAttachmentViewHolder.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.adapter
/*import android.animation.ValueAnimator
import android.text.method.LinkMovementMethod
import android.view.View
import android.view.ViewGroup
import android.view.animation.LinearInterpolator
import androidx.core.view.isVisible
import chat.rocket.android.R
import chat.rocket.android.chatroom.uimodel.MessageAttachmentUiModel
import chat.rocket.android.emoji.EmojiReactionListener
import kotlinx.android.synthetic.main.item_message_attachment_old.view.*
class MessageAttachmentViewHolder(
itemView: View,
listener: ActionsListener,
reactionListener: EmojiReactionListener? = null
) : BaseViewHolder<MessageAttachmentUiModel>(itemView, listener, reactionListener) {
init {
with(itemView) {
setupActionMenu(attachment_container)
text_content.movementMethod = LinkMovementMethod()
}
}
override fun bindViews(data: MessageAttachmentUiModel) {
with(itemView) {
val collapsedHeight = context.resources.getDimensionPixelSize(R.dimen.quote_collapsed_height)
val viewMore = context.getString(R.string.msg_view_more)
val viewLess = context.getString(R.string.msg_view_less)
text_message_time.text = data.time
text_sender.text = data.senderName
text_content.text = data.content
text_view_more.isVisible = true
text_view_more.text = if (isExpanded())viewLess else viewMore
val lp = text_content.layoutParams
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT
text_content.layoutParams = lp
text_content.addOnLayoutChangeListener(object : View.OnLayoutChangeListener {
override fun onLayoutChange(v: View, left: Int, top: Int, right: Int, bottom: Int,
oldLeft: Int, oldTop: Int, oldRight: Int, oldBottom: Int) {
val textMeasuredHeight = bottom - top
if (collapsedHeight >= textMeasuredHeight) {
text_view_more.isVisible = false
text_content.removeOnLayoutChangeListener(this)
return
}
val expandAnimation = ValueAnimator
.ofInt(collapsedHeight, textMeasuredHeight)
.setDuration(300)
expandAnimation.interpolator = LinearInterpolator()
val collapseAnimation = ValueAnimator
.ofInt(textMeasuredHeight, collapsedHeight)
.setDuration(300)
collapseAnimation.interpolator = LinearInterpolator()
expandAnimation.addUpdateListener {
val value = it.animatedValue as Int
lp.height = value
text_content.layoutParams = lp
if (value == textMeasuredHeight) {
text_view_more.text = viewLess
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT
} else {
text_view_more.text = viewMore
}
}
collapseAnimation.addUpdateListener {
val value = it.animatedValue as Int
lp.height = value
text_content.layoutParams = lp
if (value == textMeasuredHeight) {
text_view_more.text = viewLess
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT
} else {
text_view_more.text = viewMore
}
}
text_view_more.setOnClickListener {
if (expandAnimation.isRunning) return@setOnClickListener
if (isExpanded()) {
collapseAnimation.start()
} else {
expandAnimation.start()
}
}
text_content.removeOnLayoutChangeListener(this)
}
})
}
}
private fun isExpanded(): Boolean {
with(itemView) {
val lp = text_content.layoutParams
return lp.height == ViewGroup.LayoutParams.WRAP_CONTENT
}
}
}*/
app/src/main/java/chat/rocket/android/chatroom/adapter/VideoAttachmentViewHolder.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.adapter
/*
import android.view.View
import androidx.core.view.isVisible
import chat.rocket.android.chatroom.uimodel.VideoAttachmentUiModel
import chat.rocket.android.player.PlayerActivity
import chat.rocket.android.emoji.EmojiReactionListener
import kotlinx.android.synthetic.main.message_attachment.view.*
class VideoAttachmentViewHolder(itemView: View,
listener: ActionsListener,
reactionListener: EmojiReactionListener? = null)
: BaseViewHolder<VideoAttachmentUiModel>(itemView, listener, reactionListener) {
init {
with(itemView) {
setupActionMenu(attachment_container)
image_attachment.isVisible = false
audio_video_attachment.isVisible = true
}
}
override fun bindViews(data: VideoAttachmentUiModel) {
with(itemView) {
file_name.text = data.attachmentTitle
audio_video_attachment.setOnClickListener { view ->
data.attachmentUrl.let { url ->
PlayerActivity.play(view.context, url)
}
}
}
}
}*/
app/src/main/java/chat/rocket/android/chatroom/uimodel/ActionsAttachmentUiModel.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.uimodel
/*import chat.rocket.android.R
import chat.rocket.core.model.Message
import chat.rocket.core.model.attachment.actions.Action
data class ActionsAttachmentUiModel(
override val attachmentUrl: String,
val title: String?,
val actions: List<Action>,
val buttonAlignment: String,
override val message: Message,
override val rawData: ActionsAttachment,
override val messageId: String,
override var reactions: List<ReactionUiModel>,
override var nextDownStreamMessage: BaseUiModel<*>? = null,
override var preview: Message? = null,
override var isTemporary: Boolean = false,
override var unread: Boolean? = null,
override var menuItemsToHide: MutableList<Int> = mutableListOf(),
override var currentDayMarkerText: String,
override var showDayMarker: Boolean
) : BaseAttachmentUiModel<ActionsAttachment> {
override val viewType: Int
get() = BaseUiModel.ViewType.ACTIONS_ATTACHMENT.viewType
override val layoutId: Int
get() = R.layout.item_actions_attachment
}*/
app/src/main/java/chat/rocket/android/chatroom/uimodel/AudioAttachmentUiModel.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.uimodel
/*
import chat.rocket.android.R
import chat.rocket.core.model.Message
import chat.rocket.core.model.attachment.AudioAttachment
data class AudioAttachmentUiModel(
override val message: Message,
override val rawData: AudioAttachment,
override val messageId: String,
override val attachmentUrl: String,
override val attachmentTitle: CharSequence,
override val id: Long,
override var reactions: List<ReactionUiModel>,
override var nextDownStreamMessage: BaseUiModel<*>? = null,
override var preview: Message? = null,
override var isTemporary: Boolean = false,
override var unread: Boolean? = null,
override var menuItemsToHide: MutableList<Int> = mutableListOf(),
override var currentDayMarkerText: String,
override var showDayMarker: Boolean
) : BaseFileAttachmentUiModel<AudioAttachment> {
override val viewType: Int
get() = BaseUiModel.ViewType.AUDIO_ATTACHMENT.viewType
override val layoutId: Int
get() = R.layout.message_attachment
}*/
app/src/main/java/chat/rocket/android/chatroom/uimodel/AuthorAttachmentUiModel.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.uimodel
/*
import chat.rocket.android.R
import chat.rocket.core.model.Message
import chat.rocket.core.model.attachment.AuthorAttachment
data class AuthorAttachmentUiModel(
override val attachmentUrl: String,
val id: Long,
val name: CharSequence?,
val icon: String?,
val fields: CharSequence?,
override val message: Message,
override val rawData: AuthorAttachment,
override val messageId: String,
override var reactions: List<ReactionUiModel>,
override var nextDownStreamMessage: BaseUiModel<*>? = null,
override var preview: Message? = null,
override var isTemporary: Boolean = false,
override var unread: Boolean? = null,
override var menuItemsToHide: MutableList<Int> = mutableListOf(),
override var currentDayMarkerText: String,
override var showDayMarker: Boolean
) : BaseAttachmentUiModel<AuthorAttachment> {
override val viewType: Int
get() = BaseUiModel.ViewType.AUTHOR_ATTACHMENT.viewType
override val layoutId: Int
get() = R.layout.item_author_attachment
}*/
app/src/main/java/chat/rocket/android/chatroom/uimodel/BaseFileAttachmentUiModel.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.uimodel
interface
BaseFileAttachmentUiModel
<
out
T
>
:
BaseAttachmentUiModel
<
T
>
{
val
attachmentTitle
:
CharSequence
val
id
:
Long
}
\ No newline at end of file
app/src/main/java/chat/rocket/android/chatroom/uimodel/BaseUiModel.kt
View file @
0e1d2b7b
...
@@ -22,16 +22,8 @@ interface BaseUiModel<out T> {
...
@@ -22,16 +22,8 @@ interface BaseUiModel<out T> {
MESSAGE
(
0
),
MESSAGE
(
0
),
SYSTEM_MESSAGE
(
1
),
SYSTEM_MESSAGE
(
1
),
URL_PREVIEW
(
2
),
URL_PREVIEW
(
2
),
ATTACHMENT
(
3
),
/*
ATTACHMENT
(
3
),
IMAGE_ATTACHMENT(3),
MESSAGE_REPLY
(
4
)
VIDEO_ATTACHMENT(4),
AUDIO_ATTACHMENT(5),
MESSAGE_ATTACHMENT(6),
AUTHOR_ATTACHMENT(7),
COLOR_ATTACHMENT(8),
GENERIC_FILE_ATTACHMENT(9),*/
MESSAGE_REPLY
(
10
)
//ACTIONS_ATTACHMENT(11)
}
}
}
}
...
...
app/src/main/java/chat/rocket/android/chatroom/uimodel/ColorAttachmentUiModel.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.uimodel
/*
import chat.rocket.android.R
import chat.rocket.core.model.Message
import chat.rocket.core.model.attachment.ColorAttachment
data class ColorAttachmentUiModel(
override val attachmentUrl: String,
val id: Long,
val color: Int,
val text: CharSequence?,
val fields: CharSequence? = null,
override val message: Message,
override val rawData: ColorAttachment,
override val messageId: String,
override var reactions: List<ReactionUiModel>,
override var nextDownStreamMessage: BaseUiModel<*>? = null,
override var preview: Message? = null,
override var isTemporary: Boolean = false,
override var unread: Boolean?,
override var menuItemsToHide: MutableList<Int> = mutableListOf(),
override var currentDayMarkerText: String,
override var showDayMarker: Boolean
) : BaseAttachmentUiModel<ColorAttachment> {
override val viewType: Int
get() = BaseUiModel.ViewType.COLOR_ATTACHMENT.viewType
override val layoutId: Int
get() = R.layout.item_color_attachment
}*/
app/src/main/java/chat/rocket/android/chatroom/uimodel/GenericFileAttachmentUiModel.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.uimodel
/*
import chat.rocket.android.R
import chat.rocket.core.model.Message
import chat.rocket.core.model.attachment.GenericFileAttachment
data class GenericFileAttachmentUiModel(
override val message: Message,
override val rawData: GenericFileAttachment,
override val messageId: String,
override val attachmentUrl: String,
override val attachmentTitle: CharSequence,
override val id: Long,
override var reactions: List<ReactionUiModel>,
override var nextDownStreamMessage: BaseUiModel<*>? = null,
override var preview: Message? = null,
override var isTemporary: Boolean = false,
override var unread: Boolean? = null,
override var menuItemsToHide: MutableList<Int> = mutableListOf(),
override var currentDayMarkerText: String,
override var showDayMarker: Boolean
) : BaseFileAttachmentUiModel<GenericFileAttachment> {
override val viewType: Int
get() = BaseUiModel.ViewType.GENERIC_FILE_ATTACHMENT.viewType
override val layoutId: Int
get() = R.layout.item_file_attachment
}*/
app/src/main/java/chat/rocket/android/chatroom/uimodel/ImageAttachmentUiModel.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.uimodel
/*
import chat.rocket.android.R
import chat.rocket.core.model.Message
import chat.rocket.core.model.attachment.ImageAttachment
data class ImageAttachmentUiModel(
override val message: Message,
override val rawData: ImageAttachment,
override val messageId: String,
override val attachmentUrl: String,
override val attachmentTitle: CharSequence,
val attachmentText: String?,
val attachmentDescription: String?,
override val id: Long,
override var reactions: List<ReactionUiModel>,
override var nextDownStreamMessage: BaseUiModel<*>? = null,
override var preview: Message? = null,
override var isTemporary: Boolean = false,
override var unread: Boolean? = null,
override var menuItemsToHide: MutableList<Int> = mutableListOf(),
override var currentDayMarkerText: String,
override var showDayMarker: Boolean
) : BaseFileAttachmentUiModel<ImageAttachment> {
override val viewType: Int
get() = BaseUiModel.ViewType.IMAGE_ATTACHMENT.viewType
override val layoutId: Int
get() = R.layout.message_attachment
}*/
app/src/main/java/chat/rocket/android/chatroom/uimodel/MessageAttachmentUiModel.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.uimodel
/*
import chat.rocket.android.R
import chat.rocket.core.model.Message
data class MessageAttachmentUiModel(
override val message: Message,
override val rawData: Message,
override val messageId: String,
var senderName: String?,
val time: CharSequence?,
val content: CharSequence,
val isPinned: Boolean,
override var reactions: List<ReactionUiModel>,
override var nextDownStreamMessage: BaseUiModel<*>? = null,
var messageLink: String? = null,
override var preview: Message? = null,
override var isTemporary: Boolean = false,
override var unread: Boolean? = null,
override var menuItemsToHide: MutableList<Int> = mutableListOf(),
override var currentDayMarkerText: String,
override var showDayMarker: Boolean
) : BaseUiModel<Message> {
override val viewType: Int
get() = BaseUiModel.ViewType.MESSAGE_ATTACHMENT.viewType
override val layoutId: Int
get() = R.layout.item_message_attachment
}*/
app/src/main/java/chat/rocket/android/chatroom/uimodel/UiModelMapper.kt
View file @
0e1d2b7b
...
@@ -32,6 +32,7 @@ import chat.rocket.android.server.domain.messageReadReceiptStoreUsers
...
@@ -32,6 +32,7 @@ import chat.rocket.android.server.domain.messageReadReceiptStoreUsers
import
chat.rocket.android.server.domain.useRealName
import
chat.rocket.android.server.domain.useRealName
import
chat.rocket.android.server.infraestructure.ConnectionManagerFactory
import
chat.rocket.android.server.infraestructure.ConnectionManagerFactory
import
chat.rocket.android.util.extensions.avatarUrl
import
chat.rocket.android.util.extensions.avatarUrl
import
chat.rocket.android.util.extensions.ifNotNullNorEmpty
import
chat.rocket.android.util.extensions.isNotNullNorEmpty
import
chat.rocket.android.util.extensions.isNotNullNorEmpty
import
chat.rocket.common.model.roomTypeOf
import
chat.rocket.common.model.roomTypeOf
import
chat.rocket.core.model.ChatRoom
import
chat.rocket.core.model.ChatRoom
...
@@ -313,7 +314,7 @@ class UiModelMapper @Inject constructor(
...
@@ -313,7 +314,7 @@ class UiModelMapper @Inject constructor(
val
attachmentTitle
=
attachmentTitle
(
attachment
.
title
,
imageUrl
,
videoUrl
,
audioUrl
,
titleLink
)
val
attachmentTitle
=
attachmentTitle
(
attachment
.
title
,
imageUrl
,
videoUrl
,
audioUrl
,
titleLink
)
val
attachmentText
=
attachmentText
(
attachment
)
val
attachmentText
=
attachmentText
(
attachment
.
text
,
attachment
.
attachments
?.
firstOrNull
(),
context
)
val
attachmentDescription
=
attachmentDescription
(
attachment
)
val
attachmentDescription
=
attachmentDescription
(
attachment
)
AttachmentUiModel
(
AttachmentUiModel
(
...
@@ -348,38 +349,6 @@ class UiModelMapper @Inject constructor(
...
@@ -348,38 +349,6 @@ class UiModelMapper @Inject constructor(
}
}
}
}
/*private fun mapActionsAttachment(message: Message, attachment: ActionsAttachment): BaseUiModel<*>? {
return with(attachment) {
val content = stripMessageQuotes(message)
val localDateTime = DateTimeHelper.getLocalDateTime(message.timestamp)
val dayMarkerText = DateTimeHelper.getFormattedDateForMessages(localDateTime, context)
ActionsAttachmentUiModel(attachmentUrl = url, title = title,
actions = actions, buttonAlignment = buttonAlignment, message = message, rawData = attachment,
messageId = message.id, reactions = getReactions(message),
preview = message.copy(message = content.message), unread = message.unread,
showDayMarker = false, currentDayMarkerText = dayMarkerText)
}
}
private fun mapColorAttachment(message: Message, attachment: ColorAttachment): BaseUiModel<*>? {
return with(attachment) {
val content = stripMessageQuotes(message)
val id = attachmentId(message, attachment)
val localDateTime = DateTimeHelper.getLocalDateTime(message.timestamp)
val dayMarkerText = DateTimeHelper.getFormattedDateForMessages(localDateTime, context)
val fieldsText = mapFields(fields)
ColorAttachmentUiModel(attachmentUrl = url, id = id, color = color.color,
text = text, fields = fieldsText, message = message, rawData = attachment,
messageId = message.id, reactions = getReactions(message),
preview = message.copy(message = content.message), unread = message.unread,
showDayMarker = false, currentDayMarkerText = dayMarkerText)
}
}*/
private
fun
mapFields
(
fields
:
List
<
Field
>?):
CharSequence
?
{
private
fun
mapFields
(
fields
:
List
<
Field
>?):
CharSequence
?
{
return
fields
?.
let
{
return
fields
?.
let
{
buildSpannedString
{
buildSpannedString
{
...
@@ -398,78 +367,6 @@ class UiModelMapper @Inject constructor(
...
@@ -398,78 +367,6 @@ class UiModelMapper @Inject constructor(
}
}
}
}
/*private fun mapAuthorAttachment(message: Message, attachment: AuthorAttachment): AuthorAttachmentUiModel {
return with(attachment) {
val content = stripMessageQuotes(message)
val fieldsText = mapFields(fields)
val id = attachmentId(message, attachment)
val localDateTime = DateTimeHelper.getLocalDateTime(message.timestamp)
val dayMarkerText = DateTimeHelper.getFormattedDateForMessages(localDateTime, context)
AuthorAttachmentUiModel(attachmentUrl = url, id = id, name = authorName,
icon = authorIcon, fields = fieldsText, message = message, rawData = attachment,
messageId = message.id, reactions = getReactions(message),
preview = message.copy(message = content.message), unread = message.unread,
showDayMarker = false, currentDayMarkerText = dayMarkerText)
}
}
private fun mapMessageAttachment(message: Message, attachment: MessageAttachment): MessageAttachmentUiModel {
val attachmentAuthor = attachment.author
val time = attachment.timestamp?.let { getTime(it) }
val attachmentText = when (attachment.attachments.orEmpty().firstOrNull()) {
is ImageAttachment -> context.getString(R.string.msg_preview_photo)
is VideoAttachment -> context.getString(R.string.msg_preview_video)
is AudioAttachment -> context.getString(R.string.msg_preview_audio)
is GenericFileAttachment -> context.getString(R.string.msg_preview_file)
else -> attachment.text ?: ""
}
val localDateTime = DateTimeHelper.getLocalDateTime(message.timestamp)
val dayMarkerText = DateTimeHelper.getFormattedDateForMessages(localDateTime, context)
val content = stripMessageQuotes(message)
return MessageAttachmentUiModel(message = content, rawData = message,
messageId = message.id, time = time, senderName = attachmentAuthor,
content = attachmentText, isPinned = message.pinned, reactions = getReactions(message),
preview = message.copy(message = content.message), unread = message.unread,
currentDayMarkerText = dayMarkerText, showDayMarker = false)
}
private fun mapFileAttachment(message: Message, attachment: FileAttachment): BaseUiModel<*>? {
val attachmentUrl = attachmentUrl(attachment)
val attachmentTitle = attachmentTitle(attachment)
val attachmentText = attachmentText(attachment)
val attachmentDescription = attachmentDescription(attachment)
val id = attachmentId(message, attachment)
val localDateTime = DateTimeHelper.getLocalDateTime(message.timestamp)
val dayMarkerText = DateTimeHelper.getFormattedDateForMessages(localDateTime, context)
return when (attachment) {
is ImageAttachment -> ImageAttachmentUiModel(message, attachment, message.id,
attachmentUrl, attachmentTitle, attachmentText, attachmentDescription, id, getReactions(message),
preview = message.copy(message = context.getString(R.string.msg_preview_photo)), unread = message.unread,
showDayMarker = false, currentDayMarkerText = dayMarkerText)
is VideoAttachment -> VideoAttachmentUiModel(message, attachment, message.id,
attachmentUrl, attachmentTitle, id, getReactions(message),
preview = message.copy(message = context.getString(R.string.msg_preview_video)), unread = message.unread,
showDayMarker = false, currentDayMarkerText = dayMarkerText)
is AudioAttachment -> AudioAttachmentUiModel(message, attachment, message.id,
attachmentUrl, attachmentTitle, id, getReactions(message),
preview = message.copy(message = context.getString(R.string.msg_preview_audio)), unread = message.unread,
showDayMarker = false, currentDayMarkerText = dayMarkerText)
is GenericFileAttachment -> GenericFileAttachmentUiModel(message, attachment,
message.id, attachmentUrl, attachmentTitle, id, getReactions(message),
preview = message.copy(message = context.getString(R.string.msg_preview_file)), unread = message.unread,
showDayMarker = false, currentDayMarkerText = dayMarkerText)
else -> null
}
}*/
private
fun
attachmentId
(
message
:
Message
,
attachment
:
Attachment
):
Long
{
private
fun
attachmentId
(
message
:
Message
,
attachment
:
Attachment
):
Long
{
return
"${message.id}_${attachment.hashCode()}"
.
hashCode
().
toLong
()
return
"${message.id}_${attachment.hashCode()}"
.
hashCode
().
toLong
()
}
}
...
@@ -504,8 +401,20 @@ class UiModelMapper @Inject constructor(
...
@@ -504,8 +401,20 @@ class UiModelMapper @Inject constructor(
return
fullUrl
return
fullUrl
}
}
private
fun
attachmentText
(
attachment
:
Attachment
):
String
?
{
private
fun
attachmentText
(
text
:
String
?,
attachment
:
Attachment
?,
context
:
Context
):
String
?
{
return
attachment
.
text
return
if
(
attachment
!=
null
)
{
when
{
attachment
.
imageUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_photo
)
attachment
.
videoUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_video
)
attachment
.
audioUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_audio
)
attachment
.
titleLink
.
isNotNullNorEmpty
()
&&
attachment
.
type
?.
contentEquals
(
"file"
)
==
true
->
context
.
getString
(
R
.
string
.
msg_preview_file
)
else
->
text
}
}
else
{
text
}
}
}
private
fun
attachmentDescription
(
attachment
:
Attachment
):
String
?
{
private
fun
attachmentDescription
(
attachment
:
Attachment
):
String
?
{
...
@@ -573,7 +482,7 @@ class UiModelMapper @Inject constructor(
...
@@ -573,7 +482,7 @@ class UiModelMapper @Inject constructor(
private
fun
getSenderName
(
message
:
Message
):
CharSequence
{
private
fun
getSenderName
(
message
:
Message
):
CharSequence
{
val
username
=
message
.
sender
?.
username
val
username
=
message
.
sender
?.
username
message
.
senderAlias
.
i
s
NotNullNorEmpty
{
alias
->
message
.
senderAlias
.
i
f
NotNullNorEmpty
{
alias
->
return
buildSpannedString
{
return
buildSpannedString
{
append
(
alias
)
append
(
alias
)
username
?.
let
{
username
?.
let
{
...
...
app/src/main/java/chat/rocket/android/chatroom/uimodel/VideoAttachmentUiModel.kt
deleted
100644 → 0
View file @
823c6125
package
chat.rocket.android.chatroom.uimodel
/*
import chat.rocket.android.R
import chat.rocket.core.model.Message
import chat.rocket.core.model.attachment.VideoAttachment
data class VideoAttachmentUiModel(
override val message: Message,
override val rawData: VideoAttachment,
override val messageId: String,
override val attachmentUrl: String,
override val attachmentTitle: CharSequence,
override val id: Long,
override var reactions: List<ReactionUiModel>,
override var nextDownStreamMessage: BaseUiModel<*>? = null,
override var preview: Message? = null,
override var isTemporary: Boolean = false,
override var unread: Boolean? = null,
override var menuItemsToHide: MutableList<Int> = mutableListOf(),
override var currentDayMarkerText: String,
override var showDayMarker: Boolean
) : BaseFileAttachmentUiModel<VideoAttachment> {
override val viewType: Int
get() = BaseUiModel.ViewType.VIDEO_ATTACHMENT.viewType
override val layoutId: Int
get() = R.layout.message_attachment
}*/
app/src/main/java/chat/rocket/android/db/DatabaseManager.kt
View file @
0e1d2b7b
...
@@ -267,7 +267,7 @@ class DatabaseManager(val context: Application,
...
@@ -267,7 +267,7 @@ class DatabaseManager(val context: Application,
val
list
=
ArrayList
<
BaseMessageEntity
>(
message
.
attachments
!!
.
size
)
val
list
=
ArrayList
<
BaseMessageEntity
>(
message
.
attachments
!!
.
size
)
message
.
attachments
!!
.
forEach
{
attachment
->
message
.
attachments
!!
.
forEach
{
attachment
->
list
.
addAll
(
attachment
.
asEntity
(
message
.
id
))
list
.
addAll
(
attachment
.
asEntity
(
message
.
id
,
context
))
}
}
return
list
return
list
...
...
app/src/main/java/chat/rocket/android/db/model/Attachments.kt
View file @
0e1d2b7b
package
chat.rocket.android.db.model
package
chat.rocket.android.db.model
import
android.content.Context
import
androidx.room.ColumnInfo
import
androidx.room.ColumnInfo
import
androidx.room.Entity
import
androidx.room.Entity
import
androidx.room.ForeignKey
import
androidx.room.ForeignKey
import
androidx.room.Index
import
androidx.room.Index
import
androidx.room.PrimaryKey
import
androidx.room.PrimaryKey
import
chat.rocket.android.R
import
chat.rocket.android.util.extension.orFalse
import
chat.rocket.android.util.extension.orFalse
import
chat.rocket.android.util.extensions.isNotNullNorEmpty
import
chat.rocket.core.model.attachment.Attachment
import
chat.rocket.core.model.attachment.Attachment
import
chat.rocket.core.model.attachment.actions.ButtonAction
import
chat.rocket.core.model.attachment.actions.ButtonAction
...
@@ -106,10 +109,12 @@ data class AttachmentActionEntity(
...
@@ -106,10 +109,12 @@ data class AttachmentActionEntity(
var
id
:
Long
?
=
null
var
id
:
Long
?
=
null
}
}
fun
Attachment
.
asEntity
(
msgId
:
String
):
List
<
BaseMessageEntity
>
{
fun
Attachment
.
asEntity
(
msgId
:
String
,
context
:
Context
):
List
<
BaseMessageEntity
>
{
val
attachmentId
=
"${msgId}_${hashCode()}"
val
attachmentId
=
"${msgId}_${hashCode()}"
val
list
=
mutableListOf
<
BaseMessageEntity
>()
val
list
=
mutableListOf
<
BaseMessageEntity
>()
val
text
=
mapAttachmentText
(
text
,
attachments
?.
firstOrNull
(),
context
)
val
entity
=
AttachmentEntity
(
val
entity
=
AttachmentEntity
(
_id
=
attachmentId
,
_id
=
attachmentId
,
messageId
=
msgId
,
messageId
=
msgId
,
...
@@ -168,4 +173,20 @@ fun Attachment.asEntity(msgId: String): List<BaseMessageEntity> {
...
@@ -168,4 +173,20 @@ fun Attachment.asEntity(msgId: String): List<BaseMessageEntity> {
}
?.
let
{
list
.
add
(
it
)
}
}
?.
let
{
list
.
add
(
it
)
}
}
}
return
list
return
list
}
}
\ No newline at end of file
fun
mapAttachmentText
(
text
:
String
?,
attachment
:
Attachment
?,
context
:
Context
):
String
?
{
return
if
(
attachment
!=
null
)
{
when
{
attachment
.
imageUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_photo
)
attachment
.
videoUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_video
)
attachment
.
audioUrl
.
isNotNullNorEmpty
()
->
context
.
getString
(
R
.
string
.
msg_preview_audio
)
attachment
.
titleLink
.
isNotNullNorEmpty
()
&&
attachment
.
type
?.
contentEquals
(
"file"
)
==
true
->
context
.
getString
(
R
.
string
.
msg_preview_file
)
else
->
text
}
}
else
{
text
}
}
app/src/main/java/chat/rocket/android/util/extensions/CharSequence.kt
View file @
0e1d2b7b
package
chat.rocket.android.util.extensions
package
chat.rocket.android.util.extensions
inline
fun
CharSequence
?.
i
s
NotNullNorEmpty
(
block
:
(
CharSequence
)
->
Unit
)
{
inline
fun
CharSequence
?.
i
f
NotNullNorEmpty
(
block
:
(
CharSequence
)
->
Unit
)
{
if
(
this
!=
null
&&
this
.
isNotEmpty
())
{
if
(
this
!=
null
&&
this
.
isNotEmpty
())
{
block
(
this
)
block
(
this
)
}
}
}
}
\ No newline at end of file
fun
CharSequence
?.
isNotNullNorEmpty
():
Boolean
=
this
!=
null
&&
this
.
isNotEmpty
()
\ No newline at end of file
app/src/main/java/chat/rocket/android/util/extensions/String.kt
View file @
0e1d2b7b
...
@@ -74,4 +74,6 @@ fun String.lowercaseUrl(): String? {
...
@@ -74,4 +74,6 @@ fun String.lowercaseUrl(): String? {
val
newScheme
=
httpUrl
?.
scheme
()
?.
toLowerCase
()
val
newScheme
=
httpUrl
?.
scheme
()
?.
toLowerCase
()
return
httpUrl
?.
newBuilder
()
?.
scheme
(
newScheme
)
?.
build
()
?.
toString
()
return
httpUrl
?.
newBuilder
()
?.
scheme
(
newScheme
)
?.
build
()
?.
toString
()
}
}
\ No newline at end of file
fun
String
?.
isNotNullNorEmpty
():
Boolean
=
this
!=
null
&&
this
.
isNotEmpty
()
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment