From 5d0c55b6179cc8335ee3ab2cc16322ff7a687c12 Mon Sep 17 00:00:00 2001
From: Adam Brown <adampsbrown@gmail.com>
Date: Thu, 13 Jan 2022 10:05:07 +0000
Subject: [PATCH] extracting usecase enum to its own file

---
 .../app/features/onboarding/FtueUseCase.kt    | 24 +++++++++++++++++++
 .../features/onboarding/OnboardingAction.kt   | 10 +-------
 .../ftueauth/FtueAuthUseCaseFragment.kt       | 12 +++++-----
 3 files changed, 31 insertions(+), 15 deletions(-)
 create mode 100644 vector/src/main/java/im/vector/app/features/onboarding/FtueUseCase.kt

diff --git a/vector/src/main/java/im/vector/app/features/onboarding/FtueUseCase.kt b/vector/src/main/java/im/vector/app/features/onboarding/FtueUseCase.kt
new file mode 100644
index 0000000000..e720b7307c
--- /dev/null
+++ b/vector/src/main/java/im/vector/app/features/onboarding/FtueUseCase.kt
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2022 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
+
+enum class FtueUseCase {
+    FRIENDS_FAMILY,
+    TEAMS,
+    COMMUNITIES,
+    SKIP
+}
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingAction.kt b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingAction.kt
index 9ce84211f1..cfacd7a8d9 100644
--- a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingAction.kt
+++ b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingAction.kt
@@ -31,15 +31,7 @@ sealed class OnboardingAction : VectorViewModelAction {
 
     data class UpdateServerType(val serverType: ServerType) : OnboardingAction()
     data class UpdateHomeServer(val homeServerUrl: String) : OnboardingAction()
-    data class UpdateUseCase(val useCase: UseCase) : OnboardingAction() {
-        enum class UseCase {
-            FRIENDS_FAMILY,
-            TEAMS,
-            COMMUNITIES,
-            SKIP
-        }
-    }
-
+    data class UpdateUseCase(val useCase: FtueUseCase) : OnboardingAction()
     data class UpdateSignMode(val signMode: SignMode) : OnboardingAction()
     data class LoginWithToken(val loginToken: String) : OnboardingAction()
     data class WebLoginSuccess(val credentials: Credentials) : OnboardingAction()
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthUseCaseFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthUseCaseFragment.kt
index 39e8c3d8e0..da909c9352 100644
--- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthUseCaseFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthUseCaseFragment.kt
@@ -27,7 +27,7 @@ import im.vector.app.core.extensions.setTextWithColoredPart
 import im.vector.app.databinding.FragmentFtueAuthUseCaseBinding
 import im.vector.app.features.login.ServerType
 import im.vector.app.features.onboarding.OnboardingAction
-import im.vector.app.features.onboarding.OnboardingAction.UpdateUseCase.UseCase
+import im.vector.app.features.onboarding.FtueUseCase
 import javax.inject.Inject
 
 class FtueAuthUseCaseFragment @Inject constructor() : AbstractFtueAuthFragment<FragmentFtueAuthUseCaseBinding>() {
@@ -42,9 +42,9 @@ class FtueAuthUseCaseFragment @Inject constructor() : AbstractFtueAuthFragment<F
     }
 
     private fun setupViews() {
-        views.useCaseOptionOne.setUseCase(R.string.ftue_auth_use_case_option_one, UseCase.FRIENDS_FAMILY)
-        views.useCaseOptionTwo.setUseCase(R.string.ftue_auth_use_case_option_two, UseCase.TEAMS)
-        views.useCaseOptionThree.setUseCase(R.string.ftue_auth_use_case_option_three, UseCase.COMMUNITIES)
+        views.useCaseOptionOne.setUseCase(R.string.ftue_auth_use_case_option_one, FtueUseCase.FRIENDS_FAMILY)
+        views.useCaseOptionTwo.setUseCase(R.string.ftue_auth_use_case_option_two, FtueUseCase.TEAMS)
+        views.useCaseOptionThree.setUseCase(R.string.ftue_auth_use_case_option_three, FtueUseCase.COMMUNITIES)
 
         val partial = getString(R.string.ftue_auth_use_case_skip_partial)
         views.useCaseSkip.setTextWithColoredPart(
@@ -52,7 +52,7 @@ class FtueAuthUseCaseFragment @Inject constructor() : AbstractFtueAuthFragment<F
                 partial,
                 underline = false,
                 colorAttribute = R.attr.colorAccent,
-                onClick = { viewModel.handle(OnboardingAction.UpdateUseCase(UseCase.SKIP)) }
+                onClick = { viewModel.handle(OnboardingAction.UpdateUseCase(FtueUseCase.SKIP)) }
         )
 
         views.useCaseConnectToServer.setOnClickListener {
@@ -64,7 +64,7 @@ class FtueAuthUseCaseFragment @Inject constructor() : AbstractFtueAuthFragment<F
         // Nothing to do
     }
 
-    private fun TextView.setUseCase(@StringRes label: Int, useCase: UseCase) {
+    private fun TextView.setUseCase(@StringRes label: Int, useCase: FtueUseCase) {
         setText(label)
         debouncedClicks {
             viewModel.handle(OnboardingAction.UpdateUseCase(useCase))