Skip to content

Commit

Permalink
Fixed applying a unified theme to the head view of the operator's items
Browse files Browse the repository at this point in the history
MOB-3031
  • Loading branch information
AndriiHorishniiMOC authored and gugalo committed Feb 9, 2024
1 parent 4d4d8d1 commit fcc080e
Show file tree
Hide file tree
Showing 9 changed files with 91 additions and 102 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import com.glia.widgets.chat.model.OperatorStatusItem
import com.glia.widgets.chat.model.SystemChatItem
import com.glia.widgets.chat.model.VisitorAttachmentItem
import com.glia.widgets.chat.model.VisitorMessageItem
import com.glia.widgets.databinding.ChatAttachmentOperatorFileLayoutBinding
import com.glia.widgets.databinding.ChatAttachmentOperatorImageLayoutBinding
import com.glia.widgets.databinding.ChatAttachmentVisitorFileLayoutBinding
import com.glia.widgets.databinding.ChatAttachmentVisitorImageLayoutBinding
Expand Down Expand Up @@ -125,11 +126,7 @@ internal class ChatAdapter(

OPERATOR_FILE_VIEW_TYPE -> {
OperatorFileAttachmentViewHolder(
inflater.inflate(
R.layout.chat_attachment_operator_file_layout,
parent,
false
),
ChatAttachmentOperatorFileLayoutBinding.inflate(inflater, parent, false),
uiTheme
)
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.glia.widgets.chat.adapter.holder.fileattachment

import android.text.format.Formatter
import android.view.View
import androidx.core.view.AccessibilityDelegateCompat
import androidx.core.view.ViewCompat
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat
import com.glia.widgets.R
import com.glia.widgets.StringKey
import com.glia.widgets.StringKeyPair
import com.glia.widgets.StringProvider
import com.glia.widgets.UiTheme
import com.glia.widgets.chat.adapter.ChatAdapter.OnFileItemClickListener
import com.glia.widgets.chat.model.OperatorAttachmentItem
import com.glia.widgets.databinding.ChatAttachmentOperatorFileLayoutBinding
import com.glia.widgets.di.Dependencies
import com.glia.widgets.view.unifiedui.theme.chat.MessageBalloonTheme

internal class OperatorFileAttachmentViewHolder @JvmOverloads constructor(
private val binding: ChatAttachmentOperatorFileLayoutBinding,
uiTheme: UiTheme,
private val stringProvider: StringProvider = Dependencies.getStringProvider()
) : FileAttachmentViewHolder(binding.root, stringProvider) {
private val operatorTheme: MessageBalloonTheme? by lazy {
Dependencies.getGliaThemeManager().theme?.chatTheme?.operatorMessage
}

init {
setupOperatorStatusView(uiTheme)
}

fun bind(item: OperatorAttachmentItem.File, listener: OnFileItemClickListener?) {
super.setData(item.isFileExists, item.isDownloading, item.attachment, listener)
updateOperatorStatusView(item)
}

private fun setupOperatorStatusView(uiTheme: UiTheme) {
binding.chatHeadView.setTheme(uiTheme)
binding.chatHeadView.setShowRippleAnimation(false)
binding.chatHeadView.applyUserImageTheme(operatorTheme?.userImage)
}

private fun updateOperatorStatusView(item: OperatorAttachmentItem.File) {
binding.chatHeadView.visibility = if (item.showChatHead) View.VISIBLE else View.GONE
if (item.operatorProfileImgUrl != null) {
binding.chatHeadView.showProfileImage(item.operatorProfileImgUrl)
} else {
binding.chatHeadView.showPlaceholder()
}
val name = getAttachmentName(item.attachment)
val size = getAttachmentSize(item.attachment)
val byteSize = Formatter.formatFileSize(itemView.context, size)
itemView.contentDescription = stringProvider.getRemoteString(
R.string.android_chat_operator_file_accessibility,
StringKeyPair(StringKey.NAME, name),
StringKeyPair(StringKey.SIZE, byteSize)
)
ViewCompat.setAccessibilityDelegate(itemView, object : AccessibilityDelegateCompat() {
override fun onInitializeAccessibilityNodeInfo(
host: View,
info: AccessibilityNodeInfoCompat
) {
super.onInitializeAccessibilityNodeInfo(host, info)
val actionLabel =
stringProvider.getRemoteString(if (item.isFileExists) R.string.general_open else R.string.general_download)
val actionClick = AccessibilityActionCompat(
AccessibilityNodeInfoCompat.ACTION_CLICK, actionLabel
)
info.addAction(actionClick)
}
})
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ import com.glia.widgets.filepreview.domain.usecase.GetImageFileFromCacheUseCase
import com.glia.widgets.filepreview.domain.usecase.GetImageFileFromDownloadsUseCase
import com.glia.widgets.filepreview.domain.usecase.GetImageFileFromNetworkUseCase
import com.glia.widgets.helper.rx.Schedulers
import com.glia.widgets.view.OperatorStatusView
import com.glia.widgets.view.unifiedui.theme.UnifiedTheme
import com.glia.widgets.view.unifiedui.theme.chat.MessageBalloonTheme

internal class OperatorImageAttachmentViewHolder(
private val binding: ChatAttachmentOperatorImageLayoutBinding,
Expand All @@ -34,6 +33,9 @@ internal class OperatorImageAttachmentViewHolder(
getImageFileFromNetworkUseCase,
schedulers
) {
private val operatorTheme: MessageBalloonTheme? by lazy {
Dependencies.getGliaThemeManager().theme?.chatTheme?.operatorMessage
}

init {
setupOperatorStatus(uiTheme)
Expand All @@ -42,6 +44,7 @@ internal class OperatorImageAttachmentViewHolder(
private fun setupOperatorStatus(uiTheme: UiTheme) {
binding.chatHeadView.setTheme(uiTheme)
binding.chatHeadView.setShowRippleAnimation(false)
binding.chatHeadView.applyUserImageTheme(operatorTheme?.userImage)
}

fun bind(
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.glia.widgets.chat.adapter.holder

import android.widget.LinearLayout
import com.glia.androidsdk.chat.AttachmentFile
import com.glia.widgets.R
import com.glia.widgets.SnapshotTest
import com.glia.widgets.UiTheme
import com.glia.widgets.chat.adapter.ChatAdapter
import com.glia.widgets.chat.adapter.holder.fileattachment.OperatorFileAttachmentViewHolder
import com.glia.widgets.chat.model.OperatorAttachmentItem
import com.glia.widgets.databinding.ChatAttachmentOperatorFileLayoutBinding
import com.glia.widgets.di.Dependencies
import com.glia.widgets.snapshotutils.SnapshotAttachment
import com.glia.widgets.snapshotutils.SnapshotChatScreen
Expand Down Expand Up @@ -194,11 +194,7 @@ class OperatorFileAttachmentViewHolderSnapshotTest : SnapshotTest(
}

return OperatorFileAttachmentViewHolder(
layoutInflater.inflate(
R.layout.chat_attachment_operator_file_layout,
LinearLayout(context),
false
),
ChatAttachmentOperatorFileLayoutBinding.inflate(layoutInflater),
uiTheme
).also { viewHolder ->
viewHolder.bind(item, object : ChatAdapter.OnFileItemClickListener {
Expand Down

0 comments on commit fcc080e

Please sign in to comment.