From 59c0be813c6f0efd200942241445e34c2ce1565e Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Fri, 8 Mar 2024 12:18:51 +0200
Subject: [PATCH] Simplify invites loading

---
 .../room/invites/list/InvitesViewHolder.kt    | 50 +++++++++++++++++--
 .../layout/list_item_connection_invite.xml    | 25 +++-------
 .../res/layout/list_item_invited_circle.xml   | 24 +++------
 .../res/layout/list_item_invited_gallery.xml  | 25 +++-------
 .../res/layout/list_item_invited_group.xml    | 24 +++------
 .../res/layout/list_item_people_request.xml   | 24 +++------
 6 files changed, 80 insertions(+), 92 deletions(-)

diff --git a/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesViewHolder.kt b/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesViewHolder.kt
index 34acd22cc..24b4c012e 100644
--- a/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesViewHolder.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesViewHolder.kt
@@ -49,7 +49,7 @@ class InvitedGroupViewHolder(
         if (data !is RoomInviteListItem) return
 
         with(binding) {
-            lLoading.setIsVisible(data.isLoading)
+            setLoading(data.isLoading)
             ivGroup.loadRoomProfileIcon(
                 data.info.avatarUrl,
                 data.info.title,
@@ -64,6 +64,14 @@ class InvitedGroupViewHolder(
             )
         }
     }
+
+    private fun setLoading(isLoading: Boolean) {
+        with(binding) {
+            vLoading.setIsVisible(isLoading)
+            btnAccept.setIsVisible(!isLoading)
+            btnDecline.setIsVisible(!isLoading)
+        }
+    }
 }
 
 class InvitedCircleViewHolder(
@@ -86,7 +94,7 @@ class InvitedCircleViewHolder(
         if (data !is RoomInviteListItem) return
 
         with(binding) {
-            lLoading.setIsVisible(data.isLoading)
+            setLoading(data.isLoading)
             tvShowProfileImage.setIsVisible(data.shouldBlurIcon)
             ivCircle.loadRoomProfileIcon(
                 data.info.avatarUrl,
@@ -101,6 +109,14 @@ class InvitedCircleViewHolder(
                 )
         }
     }
+
+    private fun setLoading(isLoading: Boolean) {
+        with(binding) {
+            vLoading.setIsVisible(isLoading)
+            btnAccept.setIsVisible(!isLoading)
+            btnDecline.setIsVisible(!isLoading)
+        }
+    }
 }
 
 class InvitedGalleryViewHolder(
@@ -123,7 +139,7 @@ class InvitedGalleryViewHolder(
         if (data !is RoomInviteListItem) return
 
         with(binding) {
-            lLoading.setIsVisible(data.isLoading)
+            setLoading(data.isLoading)
             tvGalleryTitle.text = data.info.title
             ivGallery.loadRoomProfileIcon(
                 data.info.avatarUrl,
@@ -134,6 +150,14 @@ class InvitedGalleryViewHolder(
             tvInviterName.text = context.getString(R.string.invited_by_format, data.inviterName)
         }
     }
+
+    private fun setLoading(isLoading: Boolean) {
+        with(binding) {
+            vLoading.setIsVisible(isLoading)
+            btnAccept.setIsVisible(!isLoading)
+            btnDecline.setIsVisible(!isLoading)
+        }
+    }
 }
 
 class FollowRequestViewHolder(
@@ -153,7 +177,7 @@ class FollowRequestViewHolder(
     override fun bind(data: InviteListItem) {
         if (data !is FollowRequestListItem) return
 
-        binding.lLoading.setIsVisible(data.isLoading)
+        setLoading(data.isLoading)
         bindUser(data.user)
         binding.tvReasonMessage.apply {
             setIsVisible(data.reasonMessage != null)
@@ -167,6 +191,14 @@ class FollowRequestViewHolder(
             ivUserImage.loadUserProfileIcon(user.avatarUrl, user.id)
         }
     }
+
+    private fun setLoading(isLoading: Boolean) {
+        with(binding) {
+            vLoading.setIsVisible(isLoading)
+            btnAccept.setIsVisible(!isLoading)
+            btnDecline.setIsVisible(!isLoading)
+        }
+    }
 }
 
 class ConnectionInviteViewHolder(
@@ -186,7 +218,7 @@ class ConnectionInviteViewHolder(
     override fun bind(data: InviteListItem) {
         if (data !is ConnectionInviteListItem) return
 
-        binding.lLoading.setIsVisible(data.isLoading)
+        setLoading(data.isLoading)
         bindUser(data.user)
     }
 
@@ -196,6 +228,14 @@ class ConnectionInviteViewHolder(
             ivUserImage.loadUserProfileIcon(user.avatarUrl, user.id)
         }
     }
+
+    private fun setLoading(isLoading: Boolean) {
+        with(binding) {
+            vLoading.setIsVisible(isLoading)
+            btnAccept.setIsVisible(!isLoading)
+            btnDecline.setIsVisible(!isLoading)
+        }
+    }
 }
 
 class InviteHeaderViewHolder(
diff --git a/core/src/main/res/layout/list_item_connection_invite.xml b/core/src/main/res/layout/list_item_connection_invite.xml
index 0f99fb355..79b59543b 100644
--- a/core/src/main/res/layout/list_item_connection_invite.xml
+++ b/core/src/main/res/layout/list_item_connection_invite.xml
@@ -78,27 +78,16 @@
         app:layout_constraintStart_toEndOf="@id/btnAccept"
         app:layout_constraintTop_toTopOf="@id/btnAccept" />
 
-    <FrameLayout
-        android:id="@+id/lLoading"
-        android:layout_width="0dp"
-        android:layout_height="0dp"
-        android:background="?android:colorBackground"
-        android:clickable="true"
-        android:focusable="true"
-        android:outlineProvider="none"
-        android:translationZ="100dp"
+
+    <ProgressBar
+        android:id="@+id/vLoading"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
         android:visibility="gone"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toEndOf="@id/ivUserImage"
-        app:layout_constraintTop_toBottomOf="@+id/tvInvitesToConnect">
-
-        <ProgressBar
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-    </FrameLayout>
+        app:layout_constraintTop_toBottomOf="@+id/tvInvitesToConnect" />
 
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/core/src/main/res/layout/list_item_invited_circle.xml b/core/src/main/res/layout/list_item_invited_circle.xml
index a68947551..f3d478ff9 100644
--- a/core/src/main/res/layout/list_item_invited_circle.xml
+++ b/core/src/main/res/layout/list_item_invited_circle.xml
@@ -97,27 +97,17 @@
         app:layout_constraintStart_toEndOf="@id/btnAccept"
         app:layout_constraintTop_toBottomOf="@+id/tvInvitedBy" />
 
-    <FrameLayout
-        android:id="@+id/lLoading"
-        android:layout_width="0dp"
-        android:layout_height="0dp"
-        android:background="?android:colorBackground"
-        android:clickable="true"
-        android:focusable="true"
-        android:outlineProvider="none"
-        android:translationZ="100dp"
+
+    <ProgressBar
+        android:id="@+id/vLoading"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
         android:visibility="gone"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toEndOf="@id/ivCircle"
-        app:layout_constraintTop_toBottomOf="@+id/tvInvitedBy">
+        app:layout_constraintTop_toBottomOf="@+id/tvInvitedBy" />
 
-        <ProgressBar
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-    </FrameLayout>
 
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/core/src/main/res/layout/list_item_invited_gallery.xml b/core/src/main/res/layout/list_item_invited_gallery.xml
index 0e2e5683f..63c327843 100644
--- a/core/src/main/res/layout/list_item_invited_gallery.xml
+++ b/core/src/main/res/layout/list_item_invited_gallery.xml
@@ -90,27 +90,16 @@
         app:layout_constraintStart_toEndOf="@id/btnAccept"
         app:layout_constraintTop_toBottomOf="@+id/tvInviterName" />
 
-    <FrameLayout
-        android:id="@+id/lLoading"
-        android:layout_width="0dp"
-        android:layout_height="0dp"
-        android:background="?android:colorBackground"
-        android:clickable="true"
-        android:focusable="true"
-        android:outlineProvider="none"
-        android:translationZ="100dp"
+
+    <ProgressBar
+        android:id="@+id/vLoading"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
         android:visibility="gone"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toEndOf="@id/ivGallery"
-        app:layout_constraintTop_toBottomOf="@+id/tvInviterName">
-
-        <ProgressBar
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-    </FrameLayout>
+        app:layout_constraintTop_toBottomOf="@+id/tvInviterName" />
 
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/core/src/main/res/layout/list_item_invited_group.xml b/core/src/main/res/layout/list_item_invited_group.xml
index 84e736aba..2ad031dfa 100644
--- a/core/src/main/res/layout/list_item_invited_group.xml
+++ b/core/src/main/res/layout/list_item_invited_group.xml
@@ -101,27 +101,17 @@
         app:layout_constraintStart_toEndOf="@id/btnAccept"
         app:layout_constraintTop_toBottomOf="@+id/tvInviterName" />
 
-    <FrameLayout
-        android:id="@+id/lLoading"
-        android:layout_width="0dp"
-        android:layout_height="0dp"
-        android:background="?android:colorBackground"
-        android:clickable="true"
-        android:focusable="true"
-        android:outlineProvider="none"
-        android:translationZ="100dp"
+
+    <ProgressBar
+        android:id="@+id/vLoading"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
         android:visibility="gone"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toEndOf="@id/ivGroup"
-        app:layout_constraintTop_toBottomOf="@+id/tvInviterName">
+        app:layout_constraintTop_toBottomOf="@+id/tvInviterName" />
 
-        <ProgressBar
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-    </FrameLayout>
 
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/core/src/main/res/layout/list_item_people_request.xml b/core/src/main/res/layout/list_item_people_request.xml
index 3ff510fc2..9c4232bbc 100644
--- a/core/src/main/res/layout/list_item_people_request.xml
+++ b/core/src/main/res/layout/list_item_people_request.xml
@@ -93,27 +93,17 @@
         app:layout_constraintStart_toEndOf="@id/btnAccept"
         app:layout_constraintTop_toTopOf="@id/btnAccept" />
 
-    <FrameLayout
-        android:id="@+id/lLoading"
-        android:layout_width="0dp"
-        android:layout_height="0dp"
-        android:background="?android:colorBackground"
-        android:clickable="true"
-        android:focusable="true"
-        android:outlineProvider="none"
-        android:translationZ="100dp"
+
+    <ProgressBar
+        android:id="@+id/vLoading"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
         android:visibility="gone"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toEndOf="@id/ivUserImage"
-        app:layout_constraintTop_toBottomOf="@+id/tvReasonMessage">
+        app:layout_constraintTop_toBottomOf="@+id/tvReasonMessage" />
 
-        <ProgressBar
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-    </FrameLayout>
 
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
-- 
GitLab