From c64c35761e6efff12dde7768f4cbdd1b84ef9873 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Fri, 22 Sep 2023 13:31:16 +0300
Subject: [PATCH] Create tasks adapter

---
 .../test/list/NotificationsTestAdapter.kt     |  3 +-
 .../list/WorkspaceTasksListAdapter.kt         | 40 +++++++++++++++++++
 2 files changed, 41 insertions(+), 2 deletions(-)
 create mode 100644 core/src/main/java/org/futo/circles/core/workspace/list/WorkspaceTasksListAdapter.kt

diff --git a/app/src/main/java/org/futo/circles/feature/notifications/test/list/NotificationsTestAdapter.kt b/app/src/main/java/org/futo/circles/feature/notifications/test/list/NotificationsTestAdapter.kt
index 8fce20c40..a6d940ce9 100644
--- a/app/src/main/java/org/futo/circles/feature/notifications/test/list/NotificationsTestAdapter.kt
+++ b/app/src/main/java/org/futo/circles/feature/notifications/test/list/NotificationsTestAdapter.kt
@@ -6,8 +6,7 @@ import org.futo.circles.model.NotificationTestListItem
 
 class NotificationsTestAdapter(
     private val onFixClicked: (Int) -> Unit,
-) :
-    BaseRvAdapter<NotificationTestListItem, NotificationTestViewHolder>(DefaultIdEntityCallback()) {
+) : BaseRvAdapter<NotificationTestListItem, NotificationTestViewHolder>(DefaultIdEntityCallback()) {
 
     override fun onCreateViewHolder(
         parent: ViewGroup,
diff --git a/core/src/main/java/org/futo/circles/core/workspace/list/WorkspaceTasksListAdapter.kt b/core/src/main/java/org/futo/circles/core/workspace/list/WorkspaceTasksListAdapter.kt
new file mode 100644
index 000000000..bce0cbdb2
--- /dev/null
+++ b/core/src/main/java/org/futo/circles/core/workspace/list/WorkspaceTasksListAdapter.kt
@@ -0,0 +1,40 @@
+package org.futo.circles.core.workspace.list
+
+import android.view.ViewGroup
+import org.futo.circles.core.list.BaseRvAdapter
+import org.futo.circles.core.model.MandatoryWorkspaceTask
+import org.futo.circles.core.model.OptionalWorkspaceTask
+import org.futo.circles.core.model.WorkspaceTask
+
+private enum class WorkspaceTaskViewType { Mandatory, Optional }
+
+class WorkspaceTasksListAdapter(
+    private val onOptionalItemClicked: (OptionalWorkspaceTask) -> Unit
+) : BaseRvAdapter<WorkspaceTask, WorkspaceTaskViewHolder>(DefaultIdEntityCallback()) {
+
+    override fun getItemViewType(position: Int): Int = when (getItem(position)) {
+        is MandatoryWorkspaceTask -> WorkspaceTaskViewType.Mandatory.ordinal
+        is OptionalWorkspaceTask -> WorkspaceTaskViewType.Optional.ordinal
+    }
+
+    override fun onCreateViewHolder(
+        parent: ViewGroup,
+        viewType: Int
+    ) = when (WorkspaceTaskViewType.values()[viewType]) {
+        WorkspaceTaskViewType.Mandatory -> MandatoryWorkspaceTaskViewHolder(parent = parent)
+
+        WorkspaceTaskViewType.Optional -> OptionalWorkspaceTaskViewHolder(
+            parent = parent,
+            onItemClicked = { position ->
+                (getItem(position) as? OptionalWorkspaceTask)?.let {
+                    onOptionalItemClicked.invoke(it)
+                }
+            }
+        )
+    }
+
+    override fun onBindViewHolder(holder: WorkspaceTaskViewHolder, position: Int) {
+        holder.bind(getItem(position))
+    }
+
+}
\ No newline at end of file
-- 
GitLab