From 633f495e2c206c808e6752dc5723fda2f7b7cc7b Mon Sep 17 00:00:00 2001
From: Adam Brown <adampsbrown@gmail.com>
Date: Wed, 15 Dec 2021 15:53:16 +0000
Subject: [PATCH] extracting the inner carousel fragment classes

---
 .../FtueAuthSplashCarouselFragment.kt         | 50 -------------------
 .../ftueauth/SplashCarouselController.kt      | 31 ++++++++++++
 .../onboarding/ftueauth/SplashCarouselItem.kt | 45 +++++++++++++++++
 .../ftueauth/SplashCarouselState.kt           | 30 +++++++++++
 4 files changed, 106 insertions(+), 50 deletions(-)
 create mode 100644 vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselController.kt
 create mode 100644 vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselItem.kt
 create mode 100644 vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselState.kt

diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt
index fe20167b1e..83f8ca4cdc 100644
--- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashCarouselFragment.kt
@@ -21,21 +21,13 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
-import android.widget.ImageView
-import android.widget.TextView
-import androidx.annotation.DrawableRes
 import androidx.core.view.isVisible
-import com.airbnb.epoxy.EpoxyAttribute
-import com.airbnb.epoxy.EpoxyModelClass
-import com.airbnb.epoxy.TypedEpoxyController
 import com.airbnb.mvrx.withState
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import com.google.android.material.tabs.TabLayoutMediator
 import dagger.hilt.android.AndroidEntryPoint
 import im.vector.app.BuildConfig
 import im.vector.app.R
-import im.vector.app.core.epoxy.VectorEpoxyHolder
-import im.vector.app.core.epoxy.VectorEpoxyModel
 import im.vector.app.core.resources.StringProvider
 import im.vector.app.databinding.FragmentFtueSplashCarouselBinding
 import im.vector.app.features.VectorFeatures
@@ -142,45 +134,3 @@ class FtueAuthSplashCarouselFragment : AbstractFtueAuthFragment<FragmentFtueSpla
         }
     }
 }
-
-data class SplashCarouselState(
-        val items: List<Item>
-) {
-    data class Item(
-            val title: String,
-            val body: String,
-            @DrawableRes val image: Int,
-            @DrawableRes val pageBackground: Int
-    )
-}
-
-class SplashCarouselController @Inject constructor() : TypedEpoxyController<SplashCarouselState>() {
-    override fun buildModels(data: SplashCarouselState) {
-        data.items.forEachIndexed { index, item ->
-            splashCarouselItem {
-                id(index)
-                item(item)
-            }
-        }
-    }
-}
-
-@EpoxyModelClass(layout = im.vector.app.R.layout.item_splash_carousel)
-abstract class SplashCarouselItem : VectorEpoxyModel<SplashCarouselItem.Holder>() {
-
-    @EpoxyAttribute
-    lateinit var item: SplashCarouselState.Item
-
-    override fun bind(holder: Holder) {
-        holder.view.setBackgroundResource(item.pageBackground)
-        holder.image.setImageResource(item.image)
-        holder.title.text = item.title
-        holder.body.text = item.body
-    }
-
-    class Holder : VectorEpoxyHolder() {
-        val image by bind<ImageView>(im.vector.app.R.id.carousel_item_image)
-        val title by bind<TextView>(im.vector.app.R.id.carousel_item_title)
-        val body by bind<TextView>(im.vector.app.R.id.carousel_item_body)
-    }
-}
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselController.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselController.kt
new file mode 100644
index 0000000000..95df0a6eed
--- /dev/null
+++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselController.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.app.features.onboarding.ftueauth
+
+import com.airbnb.epoxy.TypedEpoxyController
+import javax.inject.Inject
+
+class SplashCarouselController @Inject constructor() : TypedEpoxyController<SplashCarouselState>() {
+    override fun buildModels(data: SplashCarouselState) {
+        data.items.forEachIndexed { index, item ->
+            splashCarouselItem {
+                id(index)
+                item(item)
+            }
+        }
+    }
+}
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselItem.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselItem.kt
new file mode 100644
index 0000000000..80d6ca6777
--- /dev/null
+++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselItem.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.app.features.onboarding.ftueauth
+
+import android.widget.ImageView
+import android.widget.TextView
+import com.airbnb.epoxy.EpoxyAttribute
+import com.airbnb.epoxy.EpoxyModelClass
+import im.vector.app.R
+import im.vector.app.core.epoxy.VectorEpoxyHolder
+import im.vector.app.core.epoxy.VectorEpoxyModel
+
+@EpoxyModelClass(layout = R.layout.item_splash_carousel)
+abstract class SplashCarouselItem : VectorEpoxyModel<SplashCarouselItem.Holder>() {
+
+    @EpoxyAttribute
+    lateinit var item: SplashCarouselState.Item
+
+    override fun bind(holder: Holder) {
+        holder.view.setBackgroundResource(item.pageBackground)
+        holder.image.setImageResource(item.image)
+        holder.title.text = item.title
+        holder.body.text = item.body
+    }
+
+    class Holder : VectorEpoxyHolder() {
+        val image by bind<ImageView>(R.id.carousel_item_image)
+        val title by bind<TextView>(R.id.carousel_item_title)
+        val body by bind<TextView>(R.id.carousel_item_body)
+    }
+}
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselState.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselState.kt
new file mode 100644
index 0000000000..c6e8df9642
--- /dev/null
+++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/SplashCarouselState.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.app.features.onboarding.ftueauth
+
+import androidx.annotation.DrawableRes
+
+data class SplashCarouselState(
+        val items: List<Item>
+) {
+    data class Item(
+            val title: String,
+            val body: String,
+            @DrawableRes val image: Int,
+            @DrawableRes val pageBackground: Int
+    )
+}