diff --git a/app/build.gradle b/app/build.gradle index e06ae733fd..e11fc9c678 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,7 +56,7 @@ static def getGitHash() { } android { - compileSdk rootProject.androidCompileSdk + compileSdk = libs.versions.androidCompileSdk.get().toInteger() sourceSets { main { proto { @@ -75,8 +75,8 @@ android { } defaultConfig { applicationId "org.groundplatform.android" - minSdkVersion rootProject.androidMinSdk - targetSdkVersion rootProject.androidTargetSdk + minSdkVersion libs.versions.androidMinSdk.get().toInteger() + targetSdkVersion libs.versions.androidTargetSdk.get().toInteger() versionCode getGitCommitCount() versionName "${getGitBranchName()}-${getGitHash()}-debug" @@ -177,6 +177,8 @@ configurations { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation project(':core:ui') + implementation project(':core:domain') implementation libs.androidx.multidex implementation libs.androidx.preference.ktx @@ -261,10 +263,6 @@ dependencies { implementation libs.androidx.navigation.fragment.ktx implementation libs.androidx.navigation.ui.ktx - // Auto-value - compileOnly libs.auto.value.annotations - ksp libs.auto.value - // Logging implementation libs.timber @@ -371,7 +369,7 @@ apply plugin: 'androidx.navigation.safeargs' apply plugin: 'com.google.gms.google-services' kotlin { - jvmToolchain rootProject.jvmToolchainVersion + jvmToolchain libs.versions.jvmToolchainVersion.get().toInteger() } secrets { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index da7a80e4c8..badd3a30b6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,7 +17,8 @@ --> + xmlns:tools="http://schemas.android.com/tools" + package="org.groundplatform.android"> @@ -74,13 +75,15 @@ - - - + + + + + + android:pathPrefix="/android/survey/" + android:scheme="https" /> Unit) { diff --git a/app/src/main/java/org/groundplatform/android/ui/datacollection/DataSubmissionConfirmationScreen.kt b/app/src/main/java/org/groundplatform/android/ui/datacollection/DataSubmissionConfirmationScreen.kt index f4e3701889..59860524d8 100644 --- a/app/src/main/java/org/groundplatform/android/ui/datacollection/DataSubmissionConfirmationScreen.kt +++ b/app/src/main/java/org/groundplatform/android/ui/datacollection/DataSubmissionConfirmationScreen.kt @@ -40,7 +40,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.groundplatform.android.R import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun DataSubmissionConfirmationScreen(onDismissed: () -> Unit) { diff --git a/app/src/main/java/org/groundplatform/android/ui/datacollection/components/InstructionsDialog.kt b/app/src/main/java/org/groundplatform/android/ui/datacollection/components/InstructionsDialog.kt index 34ada2cfa8..1ae0818fd4 100644 --- a/app/src/main/java/org/groundplatform/android/ui/datacollection/components/InstructionsDialog.kt +++ b/app/src/main/java/org/groundplatform/android/ui/datacollection/components/InstructionsDialog.kt @@ -33,7 +33,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import org.groundplatform.android.R import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun InstructionsDialog(iconId: Int, stringId: Int) { diff --git a/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TaskButton.kt b/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TaskButton.kt index 4442545745..2284d1c26b 100644 --- a/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TaskButton.kt +++ b/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TaskButton.kt @@ -33,7 +33,7 @@ import androidx.compose.ui.res.vectorResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun TaskButton( diff --git a/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TaskFooter.kt b/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TaskFooter.kt index 3cef30e6f2..633c5a2f3b 100644 --- a/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TaskFooter.kt +++ b/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TaskFooter.kt @@ -28,7 +28,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport import org.groundplatform.android.ui.datacollection.tasks.location.LocationAccuracyCard -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun TaskFooter( diff --git a/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TextTaskInput.kt b/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TextTaskInput.kt index 2e12b98822..47e4ec8abd 100644 --- a/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TextTaskInput.kt +++ b/app/src/main/java/org/groundplatform/android/ui/datacollection/components/TextTaskInput.kt @@ -33,7 +33,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.groundplatform.android.common.Constants import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun TextTaskInput( diff --git a/app/src/main/java/org/groundplatform/android/ui/datacollection/components/UriImage.kt b/app/src/main/java/org/groundplatform/android/ui/datacollection/components/UriImage.kt index bedd099338..1f5df988a3 100644 --- a/app/src/main/java/org/groundplatform/android/ui/datacollection/components/UriImage.kt +++ b/app/src/main/java/org/groundplatform/android/ui/datacollection/components/UriImage.kt @@ -31,7 +31,7 @@ import coil.request.ImageRequest import coil.size.Scale import org.groundplatform.android.R import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @VisibleForTesting const val MAX_IMAGE_SIZE = 2048 diff --git a/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/date/DateTaskScreen.kt b/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/date/DateTaskScreen.kt index 80ce47d293..f0cb4c808f 100644 --- a/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/date/DateTaskScreen.kt +++ b/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/date/DateTaskScreen.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.platform.testTag import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme const val DATE_TEXT_TEST_TAG: String = "date task input test tag" diff --git a/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/multiplechoice/MultipleChoiceItemView.kt b/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/multiplechoice/MultipleChoiceItemView.kt index 9479b60fc2..ab3371dd57 100644 --- a/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/multiplechoice/MultipleChoiceItemView.kt +++ b/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/multiplechoice/MultipleChoiceItemView.kt @@ -47,7 +47,7 @@ import org.groundplatform.android.common.Constants import org.groundplatform.android.model.task.MultipleChoice import org.groundplatform.android.model.task.Option import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme const val MULTIPLE_CHOICE_ITEM_TEST_TAG = "multiple choice item test tag" const val OTHER_INPUT_TEXT_TEST_TAG = "other input test tag" diff --git a/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/photo/PhotoTaskScreen.kt b/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/photo/PhotoTaskScreen.kt index 263aee3c9d..09dab11bbc 100644 --- a/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/photo/PhotoTaskScreen.kt +++ b/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/photo/PhotoTaskScreen.kt @@ -36,7 +36,7 @@ import androidx.core.net.toUri import org.groundplatform.android.R import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport import org.groundplatform.android.ui.datacollection.components.UriImage -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun PhotoTaskScreen(uri: Uri, onTakePhoto: () -> Unit, modifier: Modifier = Modifier) { diff --git a/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskViewModel.kt b/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskViewModel.kt index 3b515bd251..5216852807 100644 --- a/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskViewModel.kt +++ b/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskViewModel.kt @@ -36,7 +36,6 @@ import kotlinx.coroutines.launch import org.groundplatform.android.R import org.groundplatform.android.data.local.LocalValueStore import org.groundplatform.android.data.uuid.OfflineUuidGenerator -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.LineString import org.groundplatform.android.model.geometry.LinearRing import org.groundplatform.android.model.geometry.Polygon @@ -62,6 +61,7 @@ import org.groundplatform.android.ui.util.isSelfIntersecting import org.groundplatform.android.usecases.user.GetUserSettingsUseCase import org.groundplatform.android.util.distanceTo import org.groundplatform.android.util.penult +import org.groundplatform.domain.model.geometry.Coordinates import org.jetbrains.annotations.VisibleForTesting import timber.log.Timber diff --git a/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/time/TimeTaskScreen.kt b/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/time/TimeTaskScreen.kt index 896a799fc0..b37a767ca4 100644 --- a/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/time/TimeTaskScreen.kt +++ b/app/src/main/java/org/groundplatform/android/ui/datacollection/tasks/time/TimeTaskScreen.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.platform.testTag import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme const val TIME_TEXT_TEST_TAG: String = "time task input test tag" diff --git a/app/src/main/java/org/groundplatform/android/ui/home/DataSharingTermsDialog.kt b/app/src/main/java/org/groundplatform/android/ui/home/DataSharingTermsDialog.kt index bf88d0e6de..b3112d409d 100644 --- a/app/src/main/java/org/groundplatform/android/ui/home/DataSharingTermsDialog.kt +++ b/app/src/main/java/org/groundplatform/android/ui/home/DataSharingTermsDialog.kt @@ -32,7 +32,7 @@ import org.groundplatform.android.R import org.groundplatform.android.proto.Survey import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport import org.groundplatform.android.ui.components.HtmlText -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme import org.intellij.markdown.flavours.commonmark.CommonMarkFlavourDescriptor import org.intellij.markdown.html.HtmlGenerator import org.intellij.markdown.parser.MarkdownParser diff --git a/app/src/main/java/org/groundplatform/android/ui/home/UserDetailsDialog.kt b/app/src/main/java/org/groundplatform/android/ui/home/UserDetailsDialog.kt index 29a5a9769c..bc358ffb11 100644 --- a/app/src/main/java/org/groundplatform/android/ui/home/UserDetailsDialog.kt +++ b/app/src/main/java/org/groundplatform/android/ui/home/UserDetailsDialog.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.tooling.preview.Preview import org.groundplatform.android.R import org.groundplatform.android.model.User import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun UserDetailsDialog(user: User, signOutCallback: () -> Unit, dismissCallback: () -> Unit) { diff --git a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/HomeScreenMapContainerScreen.kt b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/HomeScreenMapContainerScreen.kt index 0551fd33e5..25e934ff5c 100644 --- a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/HomeScreenMapContainerScreen.kt +++ b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/HomeScreenMapContainerScreen.kt @@ -42,7 +42,7 @@ import org.groundplatform.android.ui.home.mapcontainer.jobs.AdHocDataCollectionB import org.groundplatform.android.ui.home.mapcontainer.jobs.JobMapComponent import org.groundplatform.android.ui.home.mapcontainer.jobs.JobMapComponentAction import org.groundplatform.android.ui.home.mapcontainer.jobs.JobMapComponentState -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun HomeScreenMapContainerScreen( diff --git a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/ActionButton.kt b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/ActionButton.kt index ca5dc35137..bb5f951803 100644 --- a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/ActionButton.kt +++ b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/ActionButton.kt @@ -33,8 +33,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import org.groundplatform.android.R import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme -import org.groundplatform.android.ui.theme.sizes +import org.groundplatform.theme.AppTheme +import org.groundplatform.theme.sizes @Composable fun ActionButton( diff --git a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobMapComponent.kt b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobMapComponent.kt index 029dd59a8d..2de90f8290 100644 --- a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobMapComponent.kt +++ b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobMapComponent.kt @@ -43,7 +43,7 @@ import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport import org.groundplatform.android.ui.home.mapcontainer.jobs.JobMapComponentAction.OnAddDataClicked import org.groundplatform.android.ui.home.mapcontainer.jobs.JobMapComponentAction.OnDeleteSiteClicked import org.groundplatform.android.ui.home.mapcontainer.jobs.JobMapComponentAction.OnJobSelected -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun JobMapComponent(state: JobMapComponentState, onAction: (JobMapComponentAction) -> Unit) { diff --git a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobSelectionModal.kt b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobSelectionModal.kt index e117907bc8..90c44cf9e4 100644 --- a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobSelectionModal.kt +++ b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobSelectionModal.kt @@ -43,7 +43,7 @@ import org.groundplatform.android.R import org.groundplatform.android.model.job.Job import org.groundplatform.android.model.job.Style import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun JobSelectionModal(jobs: List, onJobClicked: (job: Job) -> Unit, onDismiss: () -> Unit) { diff --git a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobSelectionRow.kt b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobSelectionRow.kt index 86f3acb40f..66b5b75da2 100644 --- a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobSelectionRow.kt +++ b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/JobSelectionRow.kt @@ -43,7 +43,7 @@ import org.groundplatform.android.model.job.Job import org.groundplatform.android.model.job.Style import org.groundplatform.android.model.job.getDefaultColor import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun JobSelectionRow(job: Job, onClick: () -> Unit) { diff --git a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/LoiJobSheet.kt b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/LoiJobSheet.kt index 8a27329a5e..8bbe764e7c 100644 --- a/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/LoiJobSheet.kt +++ b/app/src/main/java/org/groundplatform/android/ui/home/mapcontainer/jobs/LoiJobSheet.kt @@ -50,7 +50,6 @@ import kotlinx.coroutines.launch import org.groundplatform.android.R import org.groundplatform.android.model.AuditInfo import org.groundplatform.android.model.User -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.job.Job import org.groundplatform.android.model.job.Style @@ -60,7 +59,8 @@ import org.groundplatform.android.model.task.Task import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport import org.groundplatform.android.ui.common.LocationOfInterestHelper import org.groundplatform.android.ui.components.ConfirmationDialog -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.domain.model.geometry.Coordinates +import org.groundplatform.theme.AppTheme @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/app/src/main/java/org/groundplatform/android/ui/map/CameraUpdateRequest.kt b/app/src/main/java/org/groundplatform/android/ui/map/CameraUpdateRequest.kt index a7fa39ba40..99458c4060 100644 --- a/app/src/main/java/org/groundplatform/android/ui/map/CameraUpdateRequest.kt +++ b/app/src/main/java/org/groundplatform/android/ui/map/CameraUpdateRequest.kt @@ -16,8 +16,8 @@ package org.groundplatform.android.ui.map import kotlin.math.max -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.map.Bounds +import org.groundplatform.domain.model.geometry.Coordinates sealed class CameraUpdateRequest diff --git a/app/src/main/java/org/groundplatform/android/ui/map/MapFragment.kt b/app/src/main/java/org/groundplatform/android/ui/map/MapFragment.kt index 9529ea1afb..3b1932b099 100644 --- a/app/src/main/java/org/groundplatform/android/ui/map/MapFragment.kt +++ b/app/src/main/java/org/groundplatform/android/ui/map/MapFragment.kt @@ -18,12 +18,12 @@ package org.groundplatform.android.ui.map import android.annotation.SuppressLint import androidx.annotation.IdRes import kotlinx.coroutines.flow.SharedFlow -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.imagery.TileSource import org.groundplatform.android.model.map.Bounds import org.groundplatform.android.model.map.CameraPosition import org.groundplatform.android.model.map.MapType import org.groundplatform.android.ui.common.AbstractFragment +import org.groundplatform.domain.model.geometry.Coordinates /** Implementation of Fragment which supports displaying a map. */ interface MapFragment { @@ -75,11 +75,15 @@ interface MapFragment { /** Disables map gestures for rotation. */ fun disableRotation() - /** Centers the map viewport around the specified [Coordinates]. */ + /** + * Centers the map viewport around the specified + * [org.groundplatform.domain.model.geometry.Coordinates]. + */ fun moveCamera(coordinates: Coordinates, shouldAnimate: Boolean) /** - * Centers the map viewport around the specified [Coordinates] and updates the map's current zoom + * Centers the map viewport around the specified + * [org.groundplatform.domain.model.geometry.Coordinates] and updates the map's current zoom * level. */ fun moveCamera(coordinates: Coordinates, zoomLevel: Float, shouldAnimate: Boolean) @@ -98,7 +102,10 @@ interface MapFragment { /** Updates an existing [Feature] present on the map. */ fun updateFeature(feature: Feature) - /** Returns the actual distance in pixels between provided [Coordinates]s. */ + /** + * Returns the actual distance in pixels between provided + * [org.groundplatform.domain.model.geometry.Coordinates]s. + */ fun getDistanceInPixels(coordinates1: Coordinates, coordinates2: Coordinates): Double fun addTileOverlay(source: TileSource) diff --git a/app/src/main/java/org/groundplatform/android/ui/map/gms/ConverterExt.kt b/app/src/main/java/org/groundplatform/android/ui/map/gms/ConverterExt.kt index a554e20bfa..333ed679b0 100644 --- a/app/src/main/java/org/groundplatform/android/ui/map/gms/ConverterExt.kt +++ b/app/src/main/java/org/groundplatform/android/ui/map/gms/ConverterExt.kt @@ -18,8 +18,8 @@ package org.groundplatform.android.ui.map.gms import android.location.Location import com.google.android.gms.maps.model.LatLng import com.google.android.gms.maps.model.LatLngBounds -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.map.Bounds +import org.groundplatform.domain.model.geometry.Coordinates fun LatLng.toModelObject(): Coordinates = Coordinates(this.latitude, this.longitude) diff --git a/app/src/main/java/org/groundplatform/android/ui/map/gms/GmsExt.kt b/app/src/main/java/org/groundplatform/android/ui/map/gms/GmsExt.kt index 89e2d33339..9e361fb00e 100644 --- a/app/src/main/java/org/groundplatform/android/ui/map/gms/GmsExt.kt +++ b/app/src/main/java/org/groundplatform/android/ui/map/gms/GmsExt.kt @@ -16,7 +16,6 @@ package org.groundplatform.android.ui.map.gms import com.google.android.gms.maps.model.LatLngBounds -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Geometry import org.groundplatform.android.model.geometry.LineString import org.groundplatform.android.model.geometry.LinearRing @@ -24,6 +23,7 @@ import org.groundplatform.android.model.geometry.MultiPolygon import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.geometry.Polygon import org.groundplatform.android.model.map.Bounds +import org.groundplatform.domain.model.geometry.Coordinates /** Extensions for indirectly using GMS functions in map-provider agnostic codebase. */ object GmsExt { @@ -48,7 +48,10 @@ object GmsExt { return null } - /** Returns the list of [Coordinates] in the geometry or in the outer shell of the geometry. */ + /** + * Returns the list of [org.groundplatform.domain.model.geometry.Coordinates] in the geometry or + * in the outer shell of the geometry. + */ fun Geometry.getShellCoordinates(): List = when (this) { is Point -> listOf(coordinates) diff --git a/app/src/main/java/org/groundplatform/android/ui/map/gms/GoogleMapsFragment.kt b/app/src/main/java/org/groundplatform/android/ui/map/gms/GoogleMapsFragment.kt index 278ad8e0c5..c1881cc5d3 100644 --- a/app/src/main/java/org/groundplatform/android/ui/map/gms/GoogleMapsFragment.kt +++ b/app/src/main/java/org/groundplatform/android/ui/map/gms/GoogleMapsFragment.kt @@ -44,7 +44,6 @@ import kotlin.math.sqrt import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.imagery.LocalTileSource import org.groundplatform.android.model.imagery.RemoteMogTileSource import org.groundplatform.android.model.imagery.TileSource @@ -59,6 +58,7 @@ import org.groundplatform.android.ui.map.gms.mog.MogSourceProvider.DEFAULT_MOG_M import org.groundplatform.android.ui.map.gms.mog.MogTileProvider import org.groundplatform.android.util.invert import org.groundplatform.android.util.systemInsets +import org.groundplatform.domain.model.geometry.Coordinates import timber.log.Timber const val TILE_OVERLAY_Z = 0f diff --git a/app/src/main/java/org/groundplatform/android/ui/map/gms/features/LineStringRenderer.kt b/app/src/main/java/org/groundplatform/android/ui/map/gms/features/LineStringRenderer.kt index 0299ce8c2e..307e226667 100644 --- a/app/src/main/java/org/groundplatform/android/ui/map/gms/features/LineStringRenderer.kt +++ b/app/src/main/java/org/groundplatform/android/ui/map/gms/features/LineStringRenderer.kt @@ -42,7 +42,7 @@ constructor( private val tooltipMarkerRenderer: TooltipMarkerRenderer, ) : MapsItemRenderer { - // These must be done lazily since resources are not available before the app completes + // These must be done lazily since composeResources are not available before the app completes // initialization. private val defaultStrokeWidth by lazy { resources.getDimension(R.dimen.line_geometry_width) } private val circleCap by lazy { diff --git a/app/src/main/java/org/groundplatform/android/ui/map/gms/mog/TileCoordinates.kt b/app/src/main/java/org/groundplatform/android/ui/map/gms/mog/TileCoordinates.kt index 8f15b8f60b..f0cd60bd8f 100644 --- a/app/src/main/java/org/groundplatform/android/ui/map/gms/mog/TileCoordinates.kt +++ b/app/src/main/java/org/groundplatform/android/ui/map/gms/mog/TileCoordinates.kt @@ -18,8 +18,8 @@ package org.groundplatform.android.ui.map.gms.mog import kotlin.math.ln import kotlin.math.tan -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.map.Bounds +import org.groundplatform.domain.model.geometry.Coordinates /** * Uniquely identifies the coordinates of a web mercator tile by its X and Y coordinates and its diff --git a/app/src/main/java/org/groundplatform/android/ui/offlineareas/OfflineAreaListItem.kt b/app/src/main/java/org/groundplatform/android/ui/offlineareas/OfflineAreaListItem.kt index bfdfde0039..fb5d568aa0 100644 --- a/app/src/main/java/org/groundplatform/android/ui/offlineareas/OfflineAreaListItem.kt +++ b/app/src/main/java/org/groundplatform/android/ui/offlineareas/OfflineAreaListItem.kt @@ -35,7 +35,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.groundplatform.android.R import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun OfflineAreaListItem( diff --git a/app/src/main/java/org/groundplatform/android/ui/settings/SettingsActivity.kt b/app/src/main/java/org/groundplatform/android/ui/settings/SettingsActivity.kt index b180d02d4a..cb478c535c 100644 --- a/app/src/main/java/org/groundplatform/android/ui/settings/SettingsActivity.kt +++ b/app/src/main/java/org/groundplatform/android/ui/settings/SettingsActivity.kt @@ -24,7 +24,7 @@ import androidx.core.os.LocaleListCompat import dagger.hilt.android.AndroidEntryPoint import org.groundplatform.android.ui.common.AbstractActivity import org.groundplatform.android.ui.main.MainActivity -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @AndroidEntryPoint class SettingsActivity : AbstractActivity() { diff --git a/app/src/main/java/org/groundplatform/android/ui/settings/SettingsScreen.kt b/app/src/main/java/org/groundplatform/android/ui/settings/SettingsScreen.kt index b0c39af89f..bd881e51f8 100644 --- a/app/src/main/java/org/groundplatform/android/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/org/groundplatform/android/ui/settings/SettingsScreen.kt @@ -41,7 +41,7 @@ import org.groundplatform.android.ui.settings.components.SettingsCategory import org.groundplatform.android.ui.settings.components.SettingsItem import org.groundplatform.android.ui.settings.components.SettingsSelectItem import org.groundplatform.android.ui.settings.components.SettingsSwitchItem -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme /** * Stateful composable for the settings screen. diff --git a/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsItem.kt b/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsItem.kt index f1f635c511..05e91d106f 100644 --- a/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsItem.kt +++ b/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsItem.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.semantics.Role import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme /** * A reusable UI component representing a single row in a settings screen. diff --git a/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsSelectItem.kt b/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsSelectItem.kt index 9cece8ac40..bb67eca6ed 100644 --- a/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsSelectItem.kt +++ b/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsSelectItem.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp import org.groundplatform.android.R import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme /** * A settings item that allows users to select a single value from a list of options. diff --git a/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsSwitchItem.kt b/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsSwitchItem.kt index 9a10b84b00..608f9e8591 100644 --- a/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsSwitchItem.kt +++ b/app/src/main/java/org/groundplatform/android/ui/settings/components/SettingsSwitchItem.kt @@ -31,7 +31,7 @@ import androidx.compose.ui.semantics.Role import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme /** * A reusable settings item component with a title, optional summary, and a switch toggle. diff --git a/app/src/main/java/org/groundplatform/android/ui/signin/SignInFragment.kt b/app/src/main/java/org/groundplatform/android/ui/signin/SignInFragment.kt index 4632e3c6d8..ca264b0074 100644 --- a/app/src/main/java/org/groundplatform/android/ui/signin/SignInFragment.kt +++ b/app/src/main/java/org/groundplatform/android/ui/signin/SignInFragment.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.platform.ViewCompositionStrategy import dagger.hilt.android.AndroidEntryPoint import org.groundplatform.android.ui.common.AbstractFragment import org.groundplatform.android.ui.common.BackPressListener -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @AndroidEntryPoint class SignInFragment : AbstractFragment(), BackPressListener { diff --git a/app/src/main/java/org/groundplatform/android/ui/signin/SignInScreen.kt b/app/src/main/java/org/groundplatform/android/ui/signin/SignInScreen.kt index 02822bb338..1d67042d59 100644 --- a/app/src/main/java/org/groundplatform/android/ui/signin/SignInScreen.kt +++ b/app/src/main/java/org/groundplatform/android/ui/signin/SignInScreen.kt @@ -58,13 +58,12 @@ import com.google.firebase.firestore.FirebaseFirestoreException import com.google.firebase.firestore.FirebaseFirestoreException.Code import org.groundplatform.android.BuildConfig import org.groundplatform.android.R -import org.groundplatform.android.proto.style import org.groundplatform.android.system.auth.SignInState import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport import org.groundplatform.android.ui.components.LoadingDialog import org.groundplatform.android.ui.components.PermissionDeniedDialog -import org.groundplatform.android.ui.theme.AppTheme import org.groundplatform.android.util.isPermissionDeniedException +import org.groundplatform.theme.AppTheme const val BUTTON_TEST_TAG = "google_sign_in_button" diff --git a/app/src/main/java/org/groundplatform/android/ui/startup/StartupFragment.kt b/app/src/main/java/org/groundplatform/android/ui/startup/StartupFragment.kt index a8283b38ae..e4f675e715 100644 --- a/app/src/main/java/org/groundplatform/android/ui/startup/StartupFragment.kt +++ b/app/src/main/java/org/groundplatform/android/ui/startup/StartupFragment.kt @@ -25,7 +25,7 @@ import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject import org.groundplatform.android.ui.common.AbstractFragment import org.groundplatform.android.ui.common.EphemeralPopups -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @AndroidEntryPoint class StartupFragment : AbstractFragment() { diff --git a/app/src/main/java/org/groundplatform/android/ui/surveyselector/SurveySelectorFragment.kt b/app/src/main/java/org/groundplatform/android/ui/surveyselector/SurveySelectorFragment.kt index 68c30cef38..625f638231 100644 --- a/app/src/main/java/org/groundplatform/android/ui/surveyselector/SurveySelectorFragment.kt +++ b/app/src/main/java/org/groundplatform/android/ui/surveyselector/SurveySelectorFragment.kt @@ -24,12 +24,13 @@ import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.navigation.fragment.findNavController import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject +import kotlinx.coroutines.TimeoutCancellationException import org.groundplatform.android.R import org.groundplatform.android.ui.common.AbstractFragment import org.groundplatform.android.ui.common.BackPressListener import org.groundplatform.android.ui.common.EphemeralPopups import org.groundplatform.android.ui.home.HomeScreenFragmentDirections -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme /** User interface implementation of survey selector screen. */ @AndroidEntryPoint @@ -52,7 +53,7 @@ class SurveySelectorFragment : AbstractFragment(), BackPressListener { findNavController().navigate(HomeScreenFragmentDirections.showHomeScreen()) }, onError = { error -> - if (error is kotlinx.coroutines.TimeoutCancellationException) { + if (error is TimeoutCancellationException) { ephemeralPopups.ErrorPopup().show(R.string.survey_load_timeout_error) } else { ephemeralPopups.ErrorPopup().unknownError() diff --git a/app/src/main/java/org/groundplatform/android/ui/surveyselector/components/SurveyEmptyState.kt b/app/src/main/java/org/groundplatform/android/ui/surveyselector/components/SurveyEmptyState.kt index 769cdda007..284646f84e 100644 --- a/app/src/main/java/org/groundplatform/android/ui/surveyselector/components/SurveyEmptyState.kt +++ b/app/src/main/java/org/groundplatform/android/ui/surveyselector/components/SurveyEmptyState.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import org.groundplatform.android.R import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun SurveyEmptyState(onSignOut: () -> Unit) { diff --git a/app/src/main/java/org/groundplatform/android/ui/syncstatus/SyncListItem.kt b/app/src/main/java/org/groundplatform/android/ui/syncstatus/SyncListItem.kt index 7f5856c814..df33835ef6 100644 --- a/app/src/main/java/org/groundplatform/android/ui/syncstatus/SyncListItem.kt +++ b/app/src/main/java/org/groundplatform/android/ui/syncstatus/SyncListItem.kt @@ -42,7 +42,7 @@ import java.util.Date import org.groundplatform.android.R import org.groundplatform.android.model.mutation.Mutation import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme @Composable fun SyncListItem(modifier: Modifier, detail: SyncStatusDetail) { diff --git a/app/src/main/java/org/groundplatform/android/ui/util/PolygonUtil.kt b/app/src/main/java/org/groundplatform/android/ui/util/PolygonUtil.kt index aa41881afe..3e31ca2b04 100644 --- a/app/src/main/java/org/groundplatform/android/ui/util/PolygonUtil.kt +++ b/app/src/main/java/org/groundplatform/android/ui/util/PolygonUtil.kt @@ -20,8 +20,8 @@ import java.util.Locale import kotlin.math.PI import kotlin.math.abs import kotlin.math.cos -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.settings.MeasurementUnits +import org.groundplatform.domain.model.geometry.Coordinates @VisibleForTesting const val SQUARE_METERS_PER_ACRE = 4046.86 @VisibleForTesting const val SQUARE_METERS_PER_HECTARE = 10_000 diff --git a/app/src/main/java/org/groundplatform/android/util/ComposeExt.kt b/app/src/main/java/org/groundplatform/android/util/ComposeExt.kt index 87b30d80b8..0009aa7da8 100644 --- a/app/src/main/java/org/groundplatform/android/util/ComposeExt.kt +++ b/app/src/main/java/org/groundplatform/android/util/ComposeExt.kt @@ -22,7 +22,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.fragment.app.Fragment -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme /** * Renders a composable function within the root view of a Fragment. diff --git a/app/src/main/java/org/groundplatform/android/util/CoordinatesExt.kt b/app/src/main/java/org/groundplatform/android/util/CoordinatesExt.kt index 521f332eb7..c21a207109 100644 --- a/app/src/main/java/org/groundplatform/android/util/CoordinatesExt.kt +++ b/app/src/main/java/org/groundplatform/android/util/CoordinatesExt.kt @@ -18,7 +18,7 @@ package org.groundplatform.android.util import android.location.Location import com.google.android.gms.maps.model.LatLng import kotlin.math.abs -import org.groundplatform.android.model.geometry.Coordinates +import org.groundplatform.domain.model.geometry.Coordinates /** Converts the given coordinates in decimal format to D°M′S″ format. */ fun Coordinates.toDmsFormat(): String = "${convertLatToDms(lat)} ${convertLongToDms(lng)}" diff --git a/app/src/test/java/org/groundplatform/android/FakeData.kt b/app/src/test/java/org/groundplatform/android/FakeData.kt index 9eed704955..2ee14afa5e 100644 --- a/app/src/test/java/org/groundplatform/android/FakeData.kt +++ b/app/src/test/java/org/groundplatform/android/FakeData.kt @@ -20,7 +20,6 @@ import org.groundplatform.android.model.AuditInfo import org.groundplatform.android.model.Survey import org.groundplatform.android.model.TermsOfService import org.groundplatform.android.model.User -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.LinearRing import org.groundplatform.android.model.geometry.MultiPolygon import org.groundplatform.android.model.geometry.Point @@ -42,6 +41,7 @@ import org.groundplatform.android.proto.SurveyKt.dataSharingTerms import org.groundplatform.android.proto.copy import org.groundplatform.android.ui.map.Feature import org.groundplatform.android.ui.map.gms.features.FeatureClusterItem +import org.groundplatform.domain.model.geometry.Coordinates /** * Shared test data constants. Tests are expected to override existing or set missing values when diff --git a/app/src/test/java/org/groundplatform/android/data/local/LocalLocationOfInterestStoreTest.kt b/app/src/test/java/org/groundplatform/android/data/local/LocalLocationOfInterestStoreTest.kt index c0e70dd8ad..880d423c1c 100644 --- a/app/src/test/java/org/groundplatform/android/data/local/LocalLocationOfInterestStoreTest.kt +++ b/app/src/test/java/org/groundplatform/android/data/local/LocalLocationOfInterestStoreTest.kt @@ -36,7 +36,6 @@ import org.groundplatform.android.data.local.stores.LocalSurveyStore import org.groundplatform.android.data.local.stores.LocalUserStore import org.groundplatform.android.model.Survey import org.groundplatform.android.model.User -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.LinearRing import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.geometry.Polygon @@ -49,6 +48,7 @@ import org.groundplatform.android.model.submission.TextTaskData import org.groundplatform.android.model.submission.ValueDelta import org.groundplatform.android.model.task.Task import org.groundplatform.android.ui.map.gms.GmsExt.getShellCoordinates +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner diff --git a/app/src/test/java/org/groundplatform/android/data/local/LocalSubmissionStoreTest.kt b/app/src/test/java/org/groundplatform/android/data/local/LocalSubmissionStoreTest.kt index 8357aa42a3..0a3be45e74 100644 --- a/app/src/test/java/org/groundplatform/android/data/local/LocalSubmissionStoreTest.kt +++ b/app/src/test/java/org/groundplatform/android/data/local/LocalSubmissionStoreTest.kt @@ -33,7 +33,6 @@ import org.groundplatform.android.data.local.stores.LocalSurveyStore import org.groundplatform.android.data.local.stores.LocalUserStore import org.groundplatform.android.model.Survey import org.groundplatform.android.model.User -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.job.Job import org.groundplatform.android.model.job.Style @@ -45,6 +44,7 @@ import org.groundplatform.android.model.submission.SubmissionData import org.groundplatform.android.model.submission.TextTaskData import org.groundplatform.android.model.submission.ValueDelta import org.groundplatform.android.model.task.Task +import org.groundplatform.domain.model.geometry.Coordinates import org.hamcrest.MatcherAssert import org.hamcrest.Matchers import org.junit.Test diff --git a/app/src/test/java/org/groundplatform/android/data/local/room/converter/ValueJsonConverterTest.kt b/app/src/test/java/org/groundplatform/android/data/local/room/converter/ValueJsonConverterTest.kt index c42462492d..99edb44883 100644 --- a/app/src/test/java/org/groundplatform/android/data/local/room/converter/ValueJsonConverterTest.kt +++ b/app/src/test/java/org/groundplatform/android/data/local/room/converter/ValueJsonConverterTest.kt @@ -18,7 +18,6 @@ package org.groundplatform.android.data.local.room.converter import com.google.common.truth.Truth.assertThat import kotlinx.collections.immutable.persistentListOf import org.groundplatform.android.FakeData -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.LineString import org.groundplatform.android.model.geometry.LinearRing import org.groundplatform.android.model.geometry.Point @@ -34,6 +33,7 @@ import org.groundplatform.android.model.submission.TextTaskData import org.groundplatform.android.model.task.MultipleChoice import org.groundplatform.android.model.task.Option import org.groundplatform.android.model.task.Task +import org.groundplatform.domain.model.geometry.Coordinates import org.json.JSONArray import org.junit.Test import org.junit.runner.RunWith diff --git a/app/src/test/java/org/groundplatform/android/data/remote/firebase/protobuf/LoiMutationConverterTest.kt b/app/src/test/java/org/groundplatform/android/data/remote/firebase/protobuf/LoiMutationConverterTest.kt index 09d5bee96a..844014beb8 100644 --- a/app/src/test/java/org/groundplatform/android/data/remote/firebase/protobuf/LoiMutationConverterTest.kt +++ b/app/src/test/java/org/groundplatform/android/data/remote/firebase/protobuf/LoiMutationConverterTest.kt @@ -21,7 +21,6 @@ import java.time.Instant import java.util.Date import org.groundplatform.android.FakeData import org.groundplatform.android.FakeData.LOCATION_OF_INTEREST_NAME -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.LinearRing import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.geometry.Polygon @@ -47,6 +46,7 @@ import org.groundplatform.android.proto.LocationOfInterest.SOURCE_FIELD_NUMBER import org.groundplatform.android.proto.LocationOfInterest.SUBMISSION_COUNT_FIELD_NUMBER import org.groundplatform.android.proto.Point.COORDINATES_FIELD_NUMBER import org.groundplatform.android.proto.Polygon.SHELL_FIELD_NUMBER +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Assert.assertThrows import org.junit.Test diff --git a/app/src/test/java/org/groundplatform/android/data/remote/firebase/protobuf/ModelToProtoExtKtTest.kt b/app/src/test/java/org/groundplatform/android/data/remote/firebase/protobuf/ModelToProtoExtKtTest.kt index 911ace189a..9edb2c8f6e 100644 --- a/app/src/test/java/org/groundplatform/android/data/remote/firebase/protobuf/ModelToProtoExtKtTest.kt +++ b/app/src/test/java/org/groundplatform/android/data/remote/firebase/protobuf/ModelToProtoExtKtTest.kt @@ -20,7 +20,6 @@ import com.google.protobuf.timestamp import java.time.Instant import java.util.Date import org.groundplatform.android.model.User -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.locationofinterest.generateProperties import org.groundplatform.android.model.mutation.LocationOfInterestMutation @@ -32,6 +31,7 @@ import org.groundplatform.android.proto.coordinates import org.groundplatform.android.proto.geometry import org.groundplatform.android.proto.locationOfInterest import org.groundplatform.android.proto.point +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Assert.assertThrows import org.junit.Test diff --git a/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/GeometryConverterTest.kt b/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/GeometryConverterTest.kt index 88005e3ffa..ec3b2773df 100644 --- a/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/GeometryConverterTest.kt +++ b/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/GeometryConverterTest.kt @@ -18,7 +18,6 @@ package org.groundplatform.android.data.remote.firebase.schema import com.google.common.truth.Truth.assertThat import org.groundplatform.android.data.remote.firebase.schema.GeometryConverter.toGeometry -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.LinearRing import org.groundplatform.android.model.geometry.MultiPolygon import org.groundplatform.android.model.geometry.Point @@ -29,6 +28,7 @@ import org.groundplatform.android.proto.linearRing import org.groundplatform.android.proto.multiPolygon import org.groundplatform.android.proto.point import org.groundplatform.android.proto.polygon +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Test typealias Path = Array> diff --git a/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/LoiConverterTest.kt b/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/LoiConverterTest.kt index 8e5c219a86..0e62db42ff 100644 --- a/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/LoiConverterTest.kt +++ b/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/LoiConverterTest.kt @@ -29,7 +29,6 @@ import org.groundplatform.android.data.remote.firebase.protobuf.toFirestoreMap import org.groundplatform.android.data.remote.firebase.schema.LoiConverter.toLoi import org.groundplatform.android.model.AuditInfo import org.groundplatform.android.model.Survey -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.job.Job import org.groundplatform.android.model.job.Style @@ -44,6 +43,7 @@ import org.groundplatform.android.proto.coordinates import org.groundplatform.android.proto.geometry import org.groundplatform.android.proto.locationOfInterest import org.groundplatform.android.proto.point +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock diff --git a/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/SubmissionMutationConverterTest.kt b/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/SubmissionMutationConverterTest.kt index fbea7b26e5..227cd536d7 100644 --- a/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/SubmissionMutationConverterTest.kt +++ b/app/src/test/java/org/groundplatform/android/data/remote/firebase/schema/SubmissionMutationConverterTest.kt @@ -22,7 +22,6 @@ import kotlinx.collections.immutable.persistentListOf import org.groundplatform.android.FakeData import org.groundplatform.android.data.remote.firebase.protobuf.createSubmissionMessage import org.groundplatform.android.data.remote.firebase.protobuf.toFirestoreMap -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.LinearRing import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.geometry.Polygon @@ -74,6 +73,7 @@ import org.groundplatform.android.proto.TaskData.SKIPPED_FIELD_NUMBER import org.groundplatform.android.proto.TaskData.TASK_ID_FIELD_NUMBER import org.groundplatform.android.proto.TaskData.TEXT_RESPONSE_FIELD_NUMBER import org.groundplatform.android.proto.TaskData.TextResponse.TEXT_FIELD_NUMBER +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Assert.assertThrows import org.junit.Test import org.junit.runner.RunWith diff --git a/app/src/test/java/org/groundplatform/android/repository/LocationOfInterestRepositoryTest.kt b/app/src/test/java/org/groundplatform/android/repository/LocationOfInterestRepositoryTest.kt index 0eab6eacaa..1b09626b7b 100644 --- a/app/src/test/java/org/groundplatform/android/repository/LocationOfInterestRepositoryTest.kt +++ b/app/src/test/java/org/groundplatform/android/repository/LocationOfInterestRepositoryTest.kt @@ -29,7 +29,6 @@ import org.groundplatform.android.FakeData import org.groundplatform.android.data.local.stores.LocalLocationOfInterestStore import org.groundplatform.android.data.remote.FakeRemoteDataStore import org.groundplatform.android.data.sync.MutationSyncWorkManager -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.LinearRing import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.geometry.Polygon @@ -39,6 +38,7 @@ import org.groundplatform.android.proto.Survey.DataVisibility import org.groundplatform.android.system.auth.FakeAuthenticationManager import org.groundplatform.android.usecases.survey.ActivateSurveyUseCase import org.groundplatform.android.usecases.survey.SyncSurveyUseCase +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Before import org.junit.Test import org.junit.runner.RunWith diff --git a/app/src/test/java/org/groundplatform/android/system/GeocodingManagerTest.kt b/app/src/test/java/org/groundplatform/android/system/GeocodingManagerTest.kt index 94fd22235e..6b131c0dfe 100644 --- a/app/src/test/java/org/groundplatform/android/system/GeocodingManagerTest.kt +++ b/app/src/test/java/org/groundplatform/android/system/GeocodingManagerTest.kt @@ -24,9 +24,9 @@ import javax.inject.Inject import kotlin.test.assertEquals import org.groundplatform.android.BaseHiltTest import org.groundplatform.android.di.SystemModule -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.map.Bounds import org.groundplatform.android.ui.map.gms.GmsExt.center +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.anyInt diff --git a/app/src/test/java/org/groundplatform/android/ui/datacollection/DataCollectionFragmentTest.kt b/app/src/test/java/org/groundplatform/android/ui/datacollection/DataCollectionFragmentTest.kt index 34f389cd53..ba8a73d90c 100644 --- a/app/src/test/java/org/groundplatform/android/ui/datacollection/DataCollectionFragmentTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/datacollection/DataCollectionFragmentTest.kt @@ -38,7 +38,6 @@ import org.groundplatform.android.R import org.groundplatform.android.data.local.room.converter.SubmissionDeltasConverter import org.groundplatform.android.data.remote.FakeRemoteDataStore import org.groundplatform.android.data.sync.MutationSyncWorkManager -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.map.CameraPosition import org.groundplatform.android.model.mutation.Mutation @@ -60,6 +59,7 @@ import org.groundplatform.android.repository.UserRepository import org.groundplatform.android.testrules.FragmentScenarioRule import org.groundplatform.android.ui.datacollection.tasks.point.DropPinTaskViewModel import org.groundplatform.android.usecases.survey.ActivateSurveyUseCase +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith diff --git a/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/location/CaptureLocationTaskFragmentTest.kt b/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/location/CaptureLocationTaskFragmentTest.kt index 6dbe7dabb2..cea7880348 100644 --- a/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/location/CaptureLocationTaskFragmentTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/location/CaptureLocationTaskFragmentTest.kt @@ -23,7 +23,6 @@ import javax.inject.Inject import kotlinx.coroutines.flow.MutableSharedFlow import org.groundplatform.android.FlakyTest import org.groundplatform.android.R -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.job.Job import org.groundplatform.android.model.submission.CaptureLocationTaskData @@ -36,6 +35,7 @@ import org.groundplatform.android.ui.datacollection.DataCollectionViewModel import org.groundplatform.android.ui.datacollection.components.ButtonAction import org.groundplatform.android.ui.datacollection.components.ButtonActionState import org.groundplatform.android.ui.datacollection.tasks.BaseTaskFragmentTest +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock diff --git a/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/point/DropPinTaskFragmentTest.kt b/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/point/DropPinTaskFragmentTest.kt index a52c64c607..029cc899af 100644 --- a/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/point/DropPinTaskFragmentTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/point/DropPinTaskFragmentTest.kt @@ -19,7 +19,6 @@ import dagger.hilt.android.testing.BindValue import dagger.hilt.android.testing.HiltAndroidTest import javax.inject.Inject import org.groundplatform.android.data.local.LocalValueStore -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.job.Job import org.groundplatform.android.model.job.Style @@ -31,6 +30,7 @@ import org.groundplatform.android.ui.datacollection.DataCollectionViewModel import org.groundplatform.android.ui.datacollection.components.ButtonAction import org.groundplatform.android.ui.datacollection.components.ButtonActionState import org.groundplatform.android.ui.datacollection.tasks.BaseTaskFragmentTest +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Before import org.junit.Test import org.junit.runner.RunWith diff --git a/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/point/DropPinTaskViewModelTest.kt b/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/point/DropPinTaskViewModelTest.kt index b8f92042c9..f97663fd0f 100644 --- a/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/point/DropPinTaskViewModelTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/point/DropPinTaskViewModelTest.kt @@ -28,13 +28,13 @@ import kotlinx.coroutines.test.advanceUntilIdle import org.groundplatform.android.BaseHiltTest import org.groundplatform.android.FakeData.JOB import org.groundplatform.android.FakeData.newTask -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.map.CameraPosition import org.groundplatform.android.model.submission.DropPinTaskData import org.groundplatform.android.model.submission.TaskData import org.groundplatform.android.ui.datacollection.components.ButtonAction import org.groundplatform.android.ui.datacollection.tasks.TaskPositionInterface +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner diff --git a/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskFragmentTest.kt b/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskFragmentTest.kt index 84e5f73fdc..d81a2b73c3 100644 --- a/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskFragmentTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskFragmentTest.kt @@ -19,7 +19,6 @@ import com.google.common.truth.Truth.assertThat import dagger.hilt.android.testing.BindValue import dagger.hilt.android.testing.HiltAndroidTest import javax.inject.Inject -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.LineString import org.groundplatform.android.model.geometry.LinearRing import org.groundplatform.android.model.geometry.Polygon @@ -33,6 +32,7 @@ import org.groundplatform.android.ui.datacollection.DataCollectionViewModel import org.groundplatform.android.ui.datacollection.components.ButtonAction import org.groundplatform.android.ui.datacollection.components.ButtonActionState import org.groundplatform.android.ui.datacollection.tasks.BaseTaskFragmentTest +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock diff --git a/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskViewModelTest.kt b/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskViewModelTest.kt index 4da473000f..9048adc29c 100644 --- a/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskViewModelTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/datacollection/tasks/polygon/DrawAreaTaskViewModelTest.kt @@ -37,7 +37,6 @@ import kotlinx.coroutines.flow.merge import kotlinx.coroutines.test.advanceUntilIdle import org.groundplatform.android.BaseHiltTest import org.groundplatform.android.data.local.LocalValueStore -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.LineString import org.groundplatform.android.model.geometry.LinearRing import org.groundplatform.android.model.geometry.Polygon @@ -53,6 +52,7 @@ import org.groundplatform.android.ui.datacollection.tasks.TaskPositionInterface import org.groundplatform.android.ui.datacollection.tasks.polygon.DrawAreaTaskViewModel.Companion.DISTANCE_THRESHOLD_DP import org.groundplatform.android.ui.map.Feature import org.groundplatform.android.ui.map.gms.GmsExt.getShellCoordinates +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Assert.assertThrows import org.junit.Test import org.junit.runner.RunWith diff --git a/app/src/test/java/org/groundplatform/android/ui/home/mapcontainer/HomeScreenMapContainerViewModelTest.kt b/app/src/test/java/org/groundplatform/android/ui/home/mapcontainer/HomeScreenMapContainerViewModelTest.kt index 7622ed84e9..2d9e744112 100644 --- a/app/src/test/java/org/groundplatform/android/ui/home/mapcontainer/HomeScreenMapContainerViewModelTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/home/mapcontainer/HomeScreenMapContainerViewModelTest.kt @@ -31,7 +31,6 @@ import org.groundplatform.android.FakeData.LOCATION_OF_INTEREST_FEATURE import org.groundplatform.android.FakeData.SURVEY import org.groundplatform.android.FakeData.USER import org.groundplatform.android.data.remote.FakeRemoteDataStore -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.map.Bounds import org.groundplatform.android.model.map.CameraPosition import org.groundplatform.android.repository.LocationOfInterestRepository @@ -41,6 +40,7 @@ import org.groundplatform.android.system.auth.FakeAuthenticationManager import org.groundplatform.android.ui.home.mapcontainer.jobs.AdHocDataCollectionButtonData import org.groundplatform.android.ui.home.mapcontainer.jobs.SelectedLoiSheetData import org.groundplatform.android.usecases.survey.ActivateSurveyUseCase +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Before import org.junit.Test import org.junit.runner.RunWith diff --git a/app/src/test/java/org/groundplatform/android/ui/home/mapcontainer/jobs/LoiJobSheetTest.kt b/app/src/test/java/org/groundplatform/android/ui/home/mapcontainer/jobs/LoiJobSheetTest.kt index 0b24fcbe41..77c9f2c7cb 100644 --- a/app/src/test/java/org/groundplatform/android/ui/home/mapcontainer/jobs/LoiJobSheetTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/home/mapcontainer/jobs/LoiJobSheetTest.kt @@ -25,12 +25,12 @@ import org.groundplatform.android.FakeData.USER import org.groundplatform.android.R import org.groundplatform.android.getString import org.groundplatform.android.model.AuditInfo -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.job.Job import org.groundplatform.android.model.job.Style import org.groundplatform.android.model.locationofinterest.LocationOfInterest import org.groundplatform.android.model.task.Task +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Rule import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner diff --git a/app/src/test/java/org/groundplatform/android/ui/map/gms/mog/MogClientTest.kt b/app/src/test/java/org/groundplatform/android/ui/map/gms/mog/MogClientTest.kt index 6881e54255..eb17f10dba 100644 --- a/app/src/test/java/org/groundplatform/android/ui/map/gms/mog/MogClientTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/map/gms/mog/MogClientTest.kt @@ -23,8 +23,8 @@ import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.Deferred import kotlinx.coroutines.runBlocking import org.groundplatform.android.data.remote.RemoteStorageManager -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.map.Bounds +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Assert.assertNull diff --git a/app/src/test/java/org/groundplatform/android/ui/map/gms/mog/TileCoordinatesTest.kt b/app/src/test/java/org/groundplatform/android/ui/map/gms/mog/TileCoordinatesTest.kt index b75d0b15b0..ddebf14153 100644 --- a/app/src/test/java/org/groundplatform/android/ui/map/gms/mog/TileCoordinatesTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/map/gms/mog/TileCoordinatesTest.kt @@ -16,8 +16,8 @@ package org.groundplatform.android.ui.map.gms.mog import com.google.common.truth.Truth.assertThat -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.map.Bounds +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Test class TileCoordinatesTest { diff --git a/app/src/test/java/org/groundplatform/android/ui/offlineareas/selector/OfflineAreaSelectorViewModelTest.kt b/app/src/test/java/org/groundplatform/android/ui/offlineareas/selector/OfflineAreaSelectorViewModelTest.kt index 0321ddbe02..18e791e5cb 100644 --- a/app/src/test/java/org/groundplatform/android/ui/offlineareas/selector/OfflineAreaSelectorViewModelTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/offlineareas/selector/OfflineAreaSelectorViewModelTest.kt @@ -26,7 +26,6 @@ import kotlinx.coroutines.test.resetMain import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.setMain import org.groundplatform.android.BaseHiltTest -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.map.Bounds import org.groundplatform.android.model.map.CameraPosition import org.groundplatform.android.repository.LocationOfInterestRepository @@ -39,6 +38,7 @@ import org.groundplatform.android.system.PermissionsManager import org.groundplatform.android.system.SettingsManager import org.groundplatform.android.ui.offlineareas.selector.model.BottomTextState import org.groundplatform.android.util.toMbString +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.After import org.junit.Assert.assertEquals import org.junit.Before diff --git a/app/src/test/java/org/groundplatform/android/ui/signin/SignInScreenTest.kt b/app/src/test/java/org/groundplatform/android/ui/signin/SignInScreenTest.kt index 659a6693dd..60912ee252 100644 --- a/app/src/test/java/org/groundplatform/android/ui/signin/SignInScreenTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/signin/SignInScreenTest.kt @@ -30,7 +30,7 @@ import com.google.firebase.firestore.FirebaseFirestoreException.Code import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import org.groundplatform.android.system.auth.SignInState -import org.groundplatform.android.ui.theme.AppTheme +import org.groundplatform.theme.AppTheme import org.junit.Before import org.junit.Rule import org.junit.Test diff --git a/app/src/test/java/org/groundplatform/android/ui/syncstatus/SyncStatusFragmentTest.kt b/app/src/test/java/org/groundplatform/android/ui/syncstatus/SyncStatusFragmentTest.kt index 7e961cac9a..e539bbdf91 100644 --- a/app/src/test/java/org/groundplatform/android/ui/syncstatus/SyncStatusFragmentTest.kt +++ b/app/src/test/java/org/groundplatform/android/ui/syncstatus/SyncStatusFragmentTest.kt @@ -38,10 +38,10 @@ import org.groundplatform.android.data.local.stores.LocalSubmissionStore import org.groundplatform.android.data.local.stores.LocalSurveyStore import org.groundplatform.android.data.local.stores.LocalUserStore import org.groundplatform.android.data.remote.FakeRemoteDataStore -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.repository.SurveyRepository import org.groundplatform.android.testrules.FragmentScenarioRule +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith diff --git a/app/src/test/java/org/groundplatform/android/usecases/submission/SubmitDataUseCaseTest.kt b/app/src/test/java/org/groundplatform/android/usecases/submission/SubmitDataUseCaseTest.kt index b33a459f7b..b9eb6705a6 100644 --- a/app/src/test/java/org/groundplatform/android/usecases/submission/SubmitDataUseCaseTest.kt +++ b/app/src/test/java/org/groundplatform/android/usecases/submission/SubmitDataUseCaseTest.kt @@ -23,7 +23,6 @@ import kotlin.test.assertFailsWith import org.groundplatform.android.BaseHiltTest import org.groundplatform.android.FakeData.newTask import org.groundplatform.android.data.sync.MutationSyncWorkManager -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.geometry.Point import org.groundplatform.android.model.job.Job import org.groundplatform.android.model.submission.CaptureLocationTaskData @@ -32,6 +31,7 @@ import org.groundplatform.android.model.submission.ValueDelta import org.groundplatform.android.model.task.Task import org.groundplatform.android.repository.LocationOfInterestRepository import org.groundplatform.android.repository.SubmissionRepository +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Before import org.junit.Test import org.junit.runner.RunWith diff --git a/app/src/test/java/org/groundplatform/android/usecases/survey/RemoveOfflineSurveyUseCaseTest.kt b/app/src/test/java/org/groundplatform/android/usecases/survey/RemoveOfflineSurveyUseCaseTest.kt index 608aa1e4c3..343f7d6e92 100644 --- a/app/src/test/java/org/groundplatform/android/usecases/survey/RemoveOfflineSurveyUseCaseTest.kt +++ b/app/src/test/java/org/groundplatform/android/usecases/survey/RemoveOfflineSurveyUseCaseTest.kt @@ -25,9 +25,9 @@ import org.groundplatform.android.BaseHiltTest import org.groundplatform.android.FakeData.SURVEY import org.groundplatform.android.data.local.LocalValueStore import org.groundplatform.android.data.local.stores.LocalSurveyStore -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.map.CameraPosition import org.groundplatform.android.repository.SurveyRepository +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner diff --git a/app/src/test/java/org/groundplatform/android/util/CoordinatesExtTest.kt b/app/src/test/java/org/groundplatform/android/util/CoordinatesExtTest.kt index aa26ab5092..32c5d42e40 100644 --- a/app/src/test/java/org/groundplatform/android/util/CoordinatesExtTest.kt +++ b/app/src/test/java/org/groundplatform/android/util/CoordinatesExtTest.kt @@ -19,7 +19,7 @@ package org.groundplatform.android.util import com.google.android.gms.maps.model.LatLng import com.google.common.truth.Truth.assertThat import junit.framework.TestCase.assertEquals -import org.groundplatform.android.model.geometry.Coordinates +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner diff --git a/app/src/test/java/org/groundplatform/android/util/PolygonUtilTest.kt b/app/src/test/java/org/groundplatform/android/util/PolygonUtilTest.kt index a86de7fef3..2a99b9df5e 100644 --- a/app/src/test/java/org/groundplatform/android/util/PolygonUtilTest.kt +++ b/app/src/test/java/org/groundplatform/android/util/PolygonUtilTest.kt @@ -20,7 +20,6 @@ import java.util.Locale import junit.framework.TestCase.assertFalse import kotlin.test.Test import kotlin.test.assertTrue -import org.groundplatform.android.model.geometry.Coordinates import org.groundplatform.android.model.settings.MeasurementUnits import org.groundplatform.android.ui.util.SQUARE_FEET_PER_SQUARE_METER import org.groundplatform.android.ui.util.SQUARE_METERS_PER_ACRE @@ -30,6 +29,7 @@ import org.groundplatform.android.ui.util.getFormattedArea import org.groundplatform.android.ui.util.isClosed import org.groundplatform.android.ui.util.isSelfIntersecting import org.groundplatform.android.ui.util.segmentsIntersect +import org.groundplatform.domain.model.geometry.Coordinates import org.junit.Assert.assertEquals import org.junit.runner.RunWith diff --git a/build.gradle b/build.gradle index 2413694ffd..fcd21c1fcb 100644 --- a/build.gradle +++ b/build.gradle @@ -61,6 +61,10 @@ plugins { alias libs.plugins.hilt.android apply false alias libs.plugins.detekt alias libs.plugins.protobuf apply false + alias libs.plugins.kotlin.multiplatform apply false + alias libs.plugins.android.kotlin.multiplatform.library apply false + alias libs.plugins.android.lint apply false + alias libs.plugins.compose.multiplatform apply false } allprojects { @@ -100,10 +104,3 @@ detekt { tasks.register('checkCode', GradleBuild) { tasks = ['checkstyle', 'lintLocalDebug', 'ktfmtCheck', 'detekt'] } - -ext { - androidCompileSdk = 36 - androidMinSdk = 24 - androidTargetSdk = 36 - jvmToolchainVersion = 17 -} diff --git a/core/domain/.gitignore b/core/domain/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/core/domain/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/domain/build.gradle.kts b/core/domain/build.gradle.kts new file mode 100644 index 0000000000..26521414d8 --- /dev/null +++ b/core/domain/build.gradle.kts @@ -0,0 +1,28 @@ +plugins { + alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.kotlin.serialization) +} + +kotlin { + // We do not add an Android target here because this is a pure domain module. + // Adding an Android target would require the Android Gradle Plugin (AGP) and SDK configuration, + // which would couple the domain layer to platform-specific infrastructure. + // iOS targets are included because Kotlin can compile to iOS without any platform plugin. + jvm() + jvmToolchain(libs.versions.jvmToolchainVersion.get().toInt()) + + iosX64() + iosArm64() + iosSimulatorArm64() + + sourceSets { + commonMain { + dependencies { + implementation(libs.kotlin.stdlib) + implementation(libs.kotlinx.serialization.json) + } + } + + commonTest { dependencies { implementation(libs.kotlin.test) } } + } +} diff --git a/app/src/main/java/org/groundplatform/android/model/geometry/Coordinates.kt b/core/domain/src/commonMain/kotlin/org/groundplatform/domain/model/geometry/Coordinates.kt similarity index 94% rename from app/src/main/java/org/groundplatform/android/model/geometry/Coordinates.kt rename to core/domain/src/commonMain/kotlin/org/groundplatform/domain/model/geometry/Coordinates.kt index 68f3af8830..389be341d3 100644 --- a/app/src/main/java/org/groundplatform/android/model/geometry/Coordinates.kt +++ b/core/domain/src/commonMain/kotlin/org/groundplatform/domain/model/geometry/Coordinates.kt @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.groundplatform.android.model.geometry +package org.groundplatform.domain.model.geometry import kotlinx.serialization.Serializable diff --git a/core/ui/.gitignore b/core/ui/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/core/ui/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts new file mode 100644 index 0000000000..1a6ceb1a0d --- /dev/null +++ b/core/ui/build.gradle.kts @@ -0,0 +1,51 @@ +import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework + +plugins { + alias(libs.plugins.kotlin.multiplatform) + alias(libs.plugins.android.kotlin.multiplatform.library) + alias(libs.plugins.android.lint) + alias(libs.plugins.compose.multiplatform) + alias(libs.plugins.compose.compiler) +} + +kotlin { + jvmToolchain(libs.versions.jvmToolchainVersion.get().toInt()) + androidLibrary { + namespace = "org.groundplatform.core.ui" + compileSdk = libs.versions.androidCompileSdk.get().toInt() + minSdk = libs.versions.androidMinSdk.get().toInt() + } + + val xcfName = "GroundUI" + val xcf = XCFramework(xcfName) + + listOf(iosX64(), iosArm64(), iosSimulatorArm64()).forEach { + it.binaries.framework { + baseName = xcfName + xcf.add(this) + } + } + + sourceSets { + commonMain { + dependencies { + implementation(libs.compose.runtime) + implementation(libs.compose.foundation) + implementation(libs.compose.material3) + implementation(libs.compose.ui) + implementation(libs.compose.ui.tooling.preview) + implementation(libs.compose.components.resources) + implementation(libs.androidx.lifecycle.runtime.compose) + implementation(libs.qrose) + } + } + + commonTest { dependencies { implementation(libs.kotlin.test) } } + + androidMain { dependencies {} } + + iosMain { dependencies {} } + } +} + +dependencies { androidRuntimeClasspath(libs.compose.ui.tooling) } diff --git a/core/ui/src/commonMain/composeResources/font/manrope_bold.ttf b/core/ui/src/commonMain/composeResources/font/manrope_bold.ttf new file mode 100644 index 0000000000..98c1c3d5b6 Binary files /dev/null and b/core/ui/src/commonMain/composeResources/font/manrope_bold.ttf differ diff --git a/core/ui/src/commonMain/composeResources/font/manrope_medium.ttf b/core/ui/src/commonMain/composeResources/font/manrope_medium.ttf new file mode 100644 index 0000000000..5eda9ec96e Binary files /dev/null and b/core/ui/src/commonMain/composeResources/font/manrope_medium.ttf differ diff --git a/core/ui/src/commonMain/composeResources/font/urbanist_bold.ttf b/core/ui/src/commonMain/composeResources/font/urbanist_bold.ttf new file mode 100644 index 0000000000..330e84f954 Binary files /dev/null and b/core/ui/src/commonMain/composeResources/font/urbanist_bold.ttf differ diff --git a/core/ui/src/commonMain/composeResources/font/urbanist_medium.ttf b/core/ui/src/commonMain/composeResources/font/urbanist_medium.ttf new file mode 100644 index 0000000000..e9a6dbb06b Binary files /dev/null and b/core/ui/src/commonMain/composeResources/font/urbanist_medium.ttf differ diff --git a/app/src/main/java/org/groundplatform/android/ui/theme/Color.kt b/core/ui/src/commonMain/kotlin/org/groundplatform/theme/Color.kt similarity index 98% rename from app/src/main/java/org/groundplatform/android/ui/theme/Color.kt rename to core/ui/src/commonMain/kotlin/org/groundplatform/theme/Color.kt index a6020cbf32..db63890f34 100644 --- a/app/src/main/java/org/groundplatform/android/ui/theme/Color.kt +++ b/core/ui/src/commonMain/kotlin/org/groundplatform/theme/Color.kt @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.groundplatform.android.ui.theme +package org.groundplatform.theme import androidx.compose.ui.graphics.Color diff --git a/app/src/main/java/org/groundplatform/android/ui/theme/Size.kt b/core/ui/src/commonMain/kotlin/org/groundplatform/theme/Size.kt similarity index 96% rename from app/src/main/java/org/groundplatform/android/ui/theme/Size.kt rename to core/ui/src/commonMain/kotlin/org/groundplatform/theme/Size.kt index 8b6706b0fa..ec6b0918cc 100644 --- a/app/src/main/java/org/groundplatform/android/ui/theme/Size.kt +++ b/core/ui/src/commonMain/kotlin/org/groundplatform/theme/Size.kt @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.groundplatform.android.ui.theme +package org.groundplatform.theme import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable diff --git a/app/src/main/java/org/groundplatform/android/ui/theme/Theme.kt b/core/ui/src/commonMain/kotlin/org/groundplatform/theme/Theme.kt similarity index 98% rename from app/src/main/java/org/groundplatform/android/ui/theme/Theme.kt rename to core/ui/src/commonMain/kotlin/org/groundplatform/theme/Theme.kt index ae106e70cb..61deb9225b 100644 --- a/app/src/main/java/org/groundplatform/android/ui/theme/Theme.kt +++ b/core/ui/src/commonMain/kotlin/org/groundplatform/theme/Theme.kt @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.groundplatform.android.ui.theme +package org.groundplatform.theme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.darkColorScheme @@ -93,6 +93,6 @@ private val DarkColors = @Composable fun AppTheme(content: @Composable () -> Unit) { CompositionLocalProvider(LocalSizes provides Size()) { - MaterialTheme(colorScheme = LightColors, content = content, typography = AppTypography) + MaterialTheme(colorScheme = LightColors, content = content, typography = appTypography()) } } diff --git a/app/src/main/java/org/groundplatform/android/ui/theme/Typography.kt b/core/ui/src/commonMain/kotlin/org/groundplatform/theme/Typography.kt similarity index 65% rename from app/src/main/java/org/groundplatform/android/ui/theme/Typography.kt rename to core/ui/src/commonMain/kotlin/org/groundplatform/theme/Typography.kt index 32caefa1a8..562f5d071c 100644 --- a/app/src/main/java/org/groundplatform/android/ui/theme/Typography.kt +++ b/core/ui/src/commonMain/kotlin/org/groundplatform/theme/Typography.kt @@ -13,132 +13,140 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.groundplatform.android.ui.theme +package org.groundplatform.theme import androidx.compose.material3.Typography +import androidx.compose.runtime.Composable import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.sp -import org.groundplatform.android.R +import ground_android.core.ui.generated.resources.Res +import ground_android.core.ui.generated.resources.manrope_bold +import ground_android.core.ui.generated.resources.manrope_medium +import ground_android.core.ui.generated.resources.urbanist_bold +import ground_android.core.ui.generated.resources.urbanist_medium +import org.jetbrains.compose.resources.Font -val ManropeFontFamily = +@Composable +private fun manropeFontFamily() = FontFamily( - Font(resId = R.font.manrope_medium, weight = FontWeight.Medium, style = FontStyle.Normal), - Font(resId = R.font.manrope_bold, weight = FontWeight.Bold, style = FontStyle.Normal), + Font(resource = Res.font.manrope_medium, weight = FontWeight.Medium, style = FontStyle.Normal), + Font(resource = Res.font.manrope_bold, weight = FontWeight.Bold, style = FontStyle.Normal), ) -val UrbanistFontFamily = +@Composable +private fun urbanistFontFamily() = FontFamily( - Font(resId = R.font.urbanist_medium, weight = FontWeight.Medium, style = FontStyle.Normal), - Font(resId = R.font.urbanist_bold, weight = FontWeight.Bold, style = FontStyle.Normal), + Font(resource = Res.font.urbanist_medium, weight = FontWeight.Medium, style = FontStyle.Normal), + Font(resource = Res.font.urbanist_bold, weight = FontWeight.Bold, style = FontStyle.Normal), ) -val AppTypography = +@Composable +fun appTypography() = Typography( displayLarge = TextStyle( - fontFamily = UrbanistFontFamily, + fontFamily = urbanistFontFamily(), fontWeight = FontWeight.Medium, fontSize = 57.sp, lineHeight = 64.sp, ), displayMedium = TextStyle( - fontFamily = UrbanistFontFamily, + fontFamily = urbanistFontFamily(), fontWeight = FontWeight.Medium, fontSize = 45.sp, lineHeight = 52.sp, ), displaySmall = TextStyle( - fontFamily = UrbanistFontFamily, + fontFamily = urbanistFontFamily(), fontWeight = FontWeight.Medium, fontSize = 36.sp, lineHeight = 44.sp, ), headlineLarge = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.Medium, fontSize = 32.sp, lineHeight = 40.sp, ), headlineMedium = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.Medium, fontSize = 28.sp, lineHeight = 36.sp, ), headlineSmall = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.Medium, fontSize = 24.sp, lineHeight = 32.sp, ), titleLarge = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.Medium, fontSize = 22.sp, lineHeight = 28.sp, ), titleMedium = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.Bold, fontSize = 16.sp, lineHeight = 24.sp, ), titleSmall = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.Bold, fontSize = 14.sp, lineHeight = 20.sp, ), labelLarge = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.SemiBold, fontSize = 14.sp, lineHeight = 20.sp, ), labelMedium = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.SemiBold, fontSize = 12.sp, lineHeight = 16.sp, ), labelSmall = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.SemiBold, fontSize = 11.sp, lineHeight = 16.sp, ), bodyLarge = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.Medium, fontSize = 16.sp, lineHeight = 24.sp, ), bodyMedium = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.Medium, fontSize = 14.sp, lineHeight = 20.sp, ), bodySmall = TextStyle( - fontFamily = ManropeFontFamily, + fontFamily = manropeFontFamily(), fontWeight = FontWeight.Medium, fontSize = 12.sp, lineHeight = 16.sp, diff --git a/core/ui/src/commonMain/kotlin/org/groundplatform/ui/components/GroundQrCode.kt b/core/ui/src/commonMain/kotlin/org/groundplatform/ui/components/GroundQrCode.kt new file mode 100644 index 0000000000..f79268a8da --- /dev/null +++ b/core/ui/src/commonMain/kotlin/org/groundplatform/ui/components/GroundQrCode.kt @@ -0,0 +1,61 @@ +/* + * Copyright 2026 Google LLC + * + * 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 + * + * https://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 org.groundplatform.ui.components + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import io.github.alexzhirkevich.qrose.rememberQrCodePainter + +/** + * Displays a QR code generated from the given [content] string. + * + * The composable is intentionally generic, it accepts any string payload, making it reusable for + * GeoJSON, URLs, or any other data that fits within QR code capacity limits. + */ +@Composable +fun GroundQrCode( + modifier: Modifier = Modifier, + content: String, + contentDescription: String, + centerLogoPainter: Painter?, +) { + val qrcodePainter = rememberQrCodePainter(data = content) { logo { painter = centerLogoPainter } } + + Box(modifier) { Image(painter = qrcodePainter, contentDescription = contentDescription) } +} + +@Preview +@Composable +private fun GroundQrCodePreview() { + MaterialTheme { + Surface { + GroundQrCode( + modifier = Modifier.padding(16.dp), + content = "https://www.google.com", + contentDescription = "Google", + centerLogoPainter = null, + ) + } + } +} diff --git a/e2eTest/build.gradle b/e2eTest/build.gradle index f76fbe1d9f..91d0e27424 100644 --- a/e2eTest/build.gradle +++ b/e2eTest/build.gradle @@ -21,11 +21,11 @@ plugins { android { targetProjectPath ':app' namespace = 'org.groundplatform.android.e2etest' - compileSdk rootProject.androidCompileSdk + compileSdk = libs.versions.androidCompileSdk.get().toInteger() defaultConfig { - minSdkVersion rootProject.androidMinSdk - targetSdkVersion rootProject.androidTargetSdk + minSdkVersion libs.versions.androidMinSdk.get().toInteger() + targetSdkVersion libs.versions.androidTargetSdk.get().toInteger() testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunnerArguments clearPackageData: 'true' } @@ -80,5 +80,5 @@ dependencies { } kotlin { - jvmToolchain rootProject.jvmToolchainVersion + jvmToolchain libs.versions.jvmToolchainVersion.get().toInteger() } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4f3c08dead..88405a049a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,11 +13,15 @@ # limitations under the License. [versions] +androidCompileSdk = "36" +androidMinSdk = "24" +androidTargetSdk = "36" androidMapsUtilsVersion = "4.1.0" +androidXLifecycleVersion = "2.9.6" appcompatVersion = "1.7.1" -autoValueVersion = "1.11.1" coilComposeVersion = "2.7.0" composeBom = "2026.02.00" +composeMultiplatformVersion = "1.10.1" constraintlayoutVersion = "2.2.1" coreKtxVersion = "1.17.0" coreTesting = "2.2.0" @@ -35,6 +39,7 @@ groundPlatformVersion = "bc2596d" gsonVersion = "2.13.2" hiltJetpackVersion = "1.3.0" hiltVersion = "2.59.2" +jvmToolchainVersion = "17" jsonVersion = "20251224" junitKtx = "1.3.0" junitVersion = "4.13.2" @@ -46,6 +51,7 @@ ktfmtVersion = "0.25.0" lifecycleVersion = "2.10.0" markdownVersion = "0.7.3" materialVersion = "1.13.0" +material3Version = "1.9.0" mockitoBom = "5.22.0" mockitoInlineVersion = "5.2.0" mockitoKotlinVersion = "6.2.3" @@ -60,6 +66,7 @@ playServicesOssLicensesVersion = "17.4.0" preferenceKtx = "1.2.1" protobufKotlinLiteVersion = "4.26.1" protobufVersion = "0.9.6" +qroseVersion = "1.1.2" robolectricVersion = "4.16.1" roomVersion = "2.8.4" secretsGradlePluginVersion = "2.0.1" @@ -112,8 +119,6 @@ androidx-ui-tooling-preview-android = { module = "androidx.compose.ui:ui-tooling androidx-uiautomator = { module = "androidx.test.uiautomator:uiautomator", version.ref = "uiautomatorVersion" } androidx-work-testing = { module = "androidx.work:work-testing", version.ref = "workVersion" } androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "workVersion" } -auto-value = { module = "com.google.auto.value:auto-value", version.ref = "autoValueVersion" } -auto-value-annotations = { module = "com.google.auto.value:auto-value-annotations", version.ref = "autoValueVersion" } coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coilComposeVersion" } core-testing = { module = "android.arch.core:core-testing", version.ref = "coreTestingVersion" } firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebaseBomVersion" } @@ -149,7 +154,7 @@ kotlinx-coroutines-bom = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-bo kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test" } kotlinx-serialization-bom = { module = "org.jetbrains.kotlinx:kotlinx-serialization-bom", version.ref = "kotlinxBom" } -kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json" } +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxBom" } kotlinx-serialization-protobuf = { module = "org.jetbrains.kotlinx:kotlinx-serialization-protobuf" } markdown = { module = "org.jetbrains:markdown", version.ref = "markdownVersion" } material = { module = "com.google.android.material:material", version.ref = "materialVersion" } @@ -171,9 +176,20 @@ testing = { module = "com.jraska.livedata:testing", version.ref = "testingVersio timber = { module = "com.jakewharton.timber:timber", version.ref = "timberVersion" } truth = { module = "com.google.truth:truth", version.ref = "truthVersion" } turbine = { module = "app.cash.turbine:turbine", version.ref = "turbineVersion" } +#Multiplatform +androidx-lifecycle-runtime-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidXLifecycleVersion" } +compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "composeMultiplatformVersion" } +compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "composeMultiplatformVersion" } +compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "material3Version" } +compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "composeMultiplatformVersion" } +compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "composeMultiplatformVersion" } +compose-ui-tooling = { module = "org.jetbrains.compose.ui:ui-tooling", version.ref = "composeMultiplatformVersion" } +compose-ui-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "composeMultiplatformVersion" } +qrose = { module = "io.github.alexzhirkevich:qrose", version.ref = "qroseVersion" } [plugins] compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlinVersion" } +compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "composeMultiplatformVersion" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlinVersion" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinVersion" } ksp = { id = "com.google.devtools.ksp", version.ref = "kspVersion" } @@ -182,3 +198,6 @@ hilt-android = { id = "com.google.dagger.hilt.android", version.ref = "hiltVersi detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detektVersion" } protobuf = { id = "com.google.protobuf", version.ref = "protobufVersion" } room = { id = "androidx.room", version.ref = "roomVersion" } +kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlinVersion" } +android-kotlin-multiplatform-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "gradleVersion" } +android-lint = { id = "com.android.lint", version.ref = "gradleVersion" } diff --git a/settings.gradle b/settings.gradle index 608ca8879c..25c57d436a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -27,3 +27,5 @@ plugins { } include ':app', ':e2eTest' +include ':core:domain' +include ':core:ui'