diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt index 5ded5d0d1..7554817d7 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingVoiceMessageViewHolder.kt @@ -95,8 +95,7 @@ class IncomingVoiceMessageViewHolder(incomingView: View) : MessageHolders binding.seekbar.max = message.voiceMessageDuration if (message.isPlayingVoiceMessage) { - binding.progressBar.visibility = View.GONE - binding.playPauseBtn.visibility = View.VISIBLE + showPlayButton() binding.playPauseBtn.icon = ContextCompat.getDrawable( context!!, R.drawable.ic_baseline_pause_voice_message_24 @@ -111,8 +110,7 @@ class IncomingVoiceMessageViewHolder(incomingView: View) : MessageHolders } if (message.isDownloadingVoiceMessage) { - binding.playPauseBtn.visibility = View.GONE - binding.progressBar.visibility = View.VISIBLE + showVoiceMessageLoading() } else { binding.progressBar.visibility = View.GONE } @@ -152,26 +150,22 @@ class IncomingVoiceMessageViewHolder(incomingView: View) : MessageHolders try { for (workInfo in workers.get()) { if (workInfo.state == WorkInfo.State.RUNNING || workInfo.state == WorkInfo.State.ENQUEUED) { - binding.progressBar.visibility = View.VISIBLE - binding.playPauseBtn.visibility = View.GONE + showVoiceMessageLoading() WorkManager.getInstance(context!!).getWorkInfoByIdLiveData(workInfo.id) .observeForever { info: WorkInfo? -> if (info != null) { when (info.state) { WorkInfo.State.RUNNING -> { Log.d(TAG, "WorkInfo.State.RUNNING in ViewHolder") - binding.playPauseBtn.visibility = View.GONE - binding.progressBar.visibility = View.VISIBLE + showVoiceMessageLoading() } WorkInfo.State.SUCCEEDED -> { Log.d(TAG, "WorkInfo.State.SUCCEEDED in ViewHolder") - binding.playPauseBtn.visibility = View.VISIBLE - binding.progressBar.visibility = View.GONE + showPlayButton() } WorkInfo.State.FAILED -> { Log.d(TAG, "WorkInfo.State.FAILED in ViewHolder") - binding.playPauseBtn.visibility = View.VISIBLE - binding.progressBar.visibility = View.GONE + showPlayButton() } else -> { } @@ -187,6 +181,16 @@ class IncomingVoiceMessageViewHolder(incomingView: View) : MessageHolders } } + private fun showPlayButton() { + binding.playPauseBtn.visibility = View.VISIBLE + binding.progressBar.visibility = View.GONE + } + + private fun showVoiceMessageLoading() { + binding.playPauseBtn.visibility = View.GONE + binding.progressBar.visibility = View.VISIBLE + } + private fun setAvatarAndAuthorOnMessageItem(message: ChatMessage) { val author: String = message.actorDisplayName if (!TextUtils.isEmpty(author)) { diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt index f6f1077b0..0d652c666 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingVoiceMessageViewHolder.kt @@ -94,8 +94,7 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders binding.seekbar.max = message.voiceMessageDuration if (message.isPlayingVoiceMessage) { - binding.progressBar.visibility = View.GONE - binding.playPauseBtn.visibility = View.VISIBLE + showPlayButton() binding.playPauseBtn.icon = ContextCompat.getDrawable( context!!, R.drawable.ic_baseline_pause_voice_message_24 @@ -110,8 +109,7 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders } if (message.isDownloadingVoiceMessage) { - binding.playPauseBtn.visibility = View.GONE - binding.progressBar.visibility = View.VISIBLE + showVoiceMessageLoading() } else { binding.progressBar.visibility = View.GONE } @@ -172,8 +170,7 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders try { for (workInfo in workers.get()) { if (workInfo.state == WorkInfo.State.RUNNING || workInfo.state == WorkInfo.State.ENQUEUED) { - binding.progressBar.visibility = View.VISIBLE - binding.playPauseBtn.visibility = View.GONE + showVoiceMessageLoading() WorkManager.getInstance(context!!).getWorkInfoByIdLiveData(workInfo.id) .observeForever { info: WorkInfo? -> if (info != null) { @@ -181,18 +178,15 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders when (info.state) { WorkInfo.State.RUNNING -> { Log.d(TAG, "WorkInfo.State.RUNNING in ViewHolder") - binding.playPauseBtn.visibility = View.GONE - binding.progressBar.visibility = View.VISIBLE + showVoiceMessageLoading() } WorkInfo.State.SUCCEEDED -> { Log.d(TAG, "WorkInfo.State.SUCCEEDED in ViewHolder") - binding.playPauseBtn.visibility = View.VISIBLE - binding.progressBar.visibility = View.GONE + showPlayButton() } WorkInfo.State.FAILED -> { Log.d(TAG, "WorkInfo.State.FAILED in ViewHolder") - binding.playPauseBtn.visibility = View.VISIBLE - binding.progressBar.visibility = View.GONE + showPlayButton() } else -> { } @@ -208,6 +202,16 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) : MessageHolders } } + private fun showPlayButton() { + binding.playPauseBtn.visibility = View.VISIBLE + binding.progressBar.visibility = View.GONE + } + + private fun showVoiceMessageLoading() { + binding.playPauseBtn.visibility = View.GONE + binding.progressBar.visibility = View.VISIBLE + } + private fun setParentMessageDataOnMessageItem(message: ChatMessage) { if (!message.isDeleted && message.parentMessage != null) { val parentChatMessage = message.parentMessage