From ed2af89add211bc7ca9ec5be6715ea69f262ed06 Mon Sep 17 00:00:00 2001 From: Shobhit Agarwal <ashobhit@google.com> Date: Wed, 28 Feb 2024 21:47:53 +0530 Subject: [PATCH 1/2] Fix key value for time type tasks (#2263) Co-authored-by: Gino Miceli <228050+gino-m@users.noreply.github.com> --- .../ground/persistence/remote/firebase/schema/TaskConverter.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ground/src/main/java/com/google/android/ground/persistence/remote/firebase/schema/TaskConverter.kt b/ground/src/main/java/com/google/android/ground/persistence/remote/firebase/schema/TaskConverter.kt index d484777656..691eee4755 100644 --- a/ground/src/main/java/com/google/android/ground/persistence/remote/firebase/schema/TaskConverter.kt +++ b/ground/src/main/java/com/google/android/ground/persistence/remote/firebase/schema/TaskConverter.kt @@ -55,7 +55,7 @@ internal object TaskConverter { "draw_area" -> Task.Type.DRAW_AREA "number" -> Task.Type.NUMBER "date" -> Task.Type.DATE - "time" -> Task.Type.TIME + "date_time" -> Task.Type.TIME "capture_location" -> Task.Type.CAPTURE_LOCATION else -> Task.Type.UNKNOWN } From 5184ee4b420534a22177897c06e5d2afc000ebca Mon Sep 17 00:00:00 2001 From: Shobhit Agarwal <ashobhit@google.com> Date: Wed, 28 Feb 2024 21:48:24 +0530 Subject: [PATCH 2/2] Display the task only when the task fragment is actually visible to the user (#2262) Co-authored-by: Gino Miceli <228050+gino-m@users.noreply.github.com> --- .../ui/datacollection/tasks/AbstractTaskFragment.kt | 12 +++++++++++- .../tasks/polygon/DrawAreaTaskFragment.kt | 2 ++ .../tasks/polygon/DrawAreaTaskFragmentTest.kt | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ground/src/main/java/com/google/android/ground/ui/datacollection/tasks/AbstractTaskFragment.kt b/ground/src/main/java/com/google/android/ground/ui/datacollection/tasks/AbstractTaskFragment.kt index 171cfee1db..3cde535964 100644 --- a/ground/src/main/java/com/google/android/ground/ui/datacollection/tasks/AbstractTaskFragment.kt +++ b/ground/src/main/java/com/google/android/ground/ui/datacollection/tasks/AbstractTaskFragment.kt @@ -32,7 +32,7 @@ import com.google.android.ground.ui.datacollection.components.ButtonAction import com.google.android.ground.ui.datacollection.components.TaskButton import com.google.android.ground.ui.datacollection.components.TaskButtonFactory import com.google.android.ground.ui.datacollection.components.TaskView -import java.util.* +import java.util.EnumMap import kotlin.properties.Delegates import kotlinx.coroutines.launch import org.jetbrains.annotations.TestOnly @@ -91,6 +91,13 @@ abstract class AbstractTaskFragment<T : AbstractTaskViewModel> : AbstractFragmen } } + override fun setMenuVisibility(menuVisible: Boolean) { + super.setMenuVisibility(menuVisible) + if (menuVisible) { + onTaskVisibleToUser() + } + } + /** Creates the view for common task template with/without header. */ abstract fun onCreateTaskView(inflater: LayoutInflater): TaskView @@ -100,6 +107,9 @@ abstract class AbstractTaskFragment<T : AbstractTaskViewModel> : AbstractFragmen /** Invoked after the task view gets attached to the fragment. */ open fun onTaskViewAttached() {} + /** Invoked when the task fragment is visible to the user. */ + open fun onTaskVisibleToUser() {} + /** Invoked when the fragment is ready to add buttons to the current [TaskView]. */ open fun onCreateActionButtons() { addSkipButton() diff --git a/ground/src/main/java/com/google/android/ground/ui/datacollection/tasks/polygon/DrawAreaTaskFragment.kt b/ground/src/main/java/com/google/android/ground/ui/datacollection/tasks/polygon/DrawAreaTaskFragment.kt index 5b649309ed..c7c48ec257 100644 --- a/ground/src/main/java/com/google/android/ground/ui/datacollection/tasks/polygon/DrawAreaTaskFragment.kt +++ b/ground/src/main/java/com/google/android/ground/ui/datacollection/tasks/polygon/DrawAreaTaskFragment.kt @@ -96,7 +96,9 @@ class DrawAreaTaskFragment : AbstractTaskFragment<DrawAreaTaskViewModel>() { viewLifecycleOwner.lifecycleScope.launch { viewModel.draftArea.collectLatest { onFeatureUpdated(it) } } + } + override fun onTaskVisibleToUser() { if (!viewModel.instructionsDialogShown) { showInstructionsDialog() } diff --git a/ground/src/test/java/com/google/android/ground/ui/datacollection/tasks/polygon/DrawAreaTaskFragmentTest.kt b/ground/src/test/java/com/google/android/ground/ui/datacollection/tasks/polygon/DrawAreaTaskFragmentTest.kt index 00e35211ea..1c666f088c 100644 --- a/ground/src/test/java/com/google/android/ground/ui/datacollection/tasks/polygon/DrawAreaTaskFragmentTest.kt +++ b/ground/src/test/java/com/google/android/ground/ui/datacollection/tasks/polygon/DrawAreaTaskFragmentTest.kt @@ -110,6 +110,7 @@ class DrawAreaTaskFragmentTest : @Test fun testDrawArea_incompleteWhenTaskIsOptional() = runWithTestDispatcher { setupTaskFragment<DrawAreaTaskFragment>(job, task.copy(isRequired = false)) + fragment.onTaskVisibleToUser() // Dismiss the instructions dialog ShadowDialog.getLatestDialog().dismiss() @@ -142,6 +143,7 @@ class DrawAreaTaskFragmentTest : @Test fun testDrawArea() = runWithTestDispatcher { setupTaskFragment<DrawAreaTaskFragment>(job, task.copy(isRequired = false)) + fragment.onTaskVisibleToUser() // Dismiss the instructions dialog ShadowDialog.getLatestDialog().dismiss() @@ -178,6 +180,7 @@ class DrawAreaTaskFragmentTest : @Test fun `Instructions dialog is shown`() = runWithTestDispatcher { setupTaskFragment<DrawAreaTaskFragment>(job, task) + fragment.onTaskVisibleToUser() assertThat(ShadowDialog.getLatestDialog()).isNotNull() }