From 6e55076f7cd33e3f333785ee2eb39c3cb8c6c07c Mon Sep 17 00:00:00 2001
From: ganfra <francoisg@element.io>
Date: Thu, 12 Aug 2021 19:26:21 +0200
Subject: [PATCH] Jitsi conf: animate background color of join button

---
 .../home/room/detail/RoomDetailFragment.kt    | 22 +++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt
index 58f4b8a433..265b8b5cb5 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt
@@ -16,6 +16,7 @@
 
 package im.vector.app.features.home.room.detail
 
+import android.animation.ArgbEvaluator
 import android.annotation.SuppressLint
 import android.app.Activity
 import android.content.Intent
@@ -216,6 +217,10 @@ import java.net.URL
 import java.util.UUID
 import java.util.concurrent.TimeUnit
 import javax.inject.Inject
+import android.animation.ValueAnimator
+
+
+
 
 @Parcelize
 data class RoomDetailArgs(
@@ -867,8 +872,21 @@ class RoomDetailFragment @Inject constructor(
             }
         }
         val joinConfItem = menu.findItem(R.id.join_conference)
-        joinConfItem.actionView.findViewById<MaterialButton>(R.id.join_conference_button).setOnClickListener {
-            roomDetailViewModel.handle(RoomDetailAction.JoinJitsiCall)
+        joinConfItem.actionView.findViewById<MaterialButton>(R.id.join_conference_button).also { joinButton ->
+            joinButton.setOnClickListener { roomDetailViewModel.handle(RoomDetailAction.JoinJitsiCall) }
+            val colorFrom = ContextCompat.getColor(joinButton.context, R.color.palette_element_green)
+            // This is a special color, not defined in the palette
+            val colorTo = Color.parseColor("#0BAC7E")
+            // Animate button color to highlight
+            ValueAnimator.ofObject(ArgbEvaluator(), colorFrom, colorTo).apply {
+                repeatMode = ValueAnimator.REVERSE
+                repeatCount = ValueAnimator.INFINITE
+                duration = 500
+                addUpdateListener { animator ->
+                    val color = animator.animatedValue as Int
+                    joinButton.setBackgroundColor(color)
+                }
+            }.start()
         }
     }