Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import kotlin.time.Clock
import kotlinx.serialization.json.JsonObject
import org.groundplatform.android.ui.common.ExcludeFromJacocoGeneratedReport
import org.groundplatform.domain.model.job.Job
Expand Down Expand Up @@ -100,14 +99,7 @@ private fun DataCollectionContentCompletePreview() {
uiState =
DataCollectionUiState.TaskSubmitted(
loiReport =
LoiReport(
surveyName = "Test Survey",
userName = "John Doe",
dateMillis = Clock.System.now().toEpochMilliseconds(),
loiName = "Point A",
geoJson = JsonObject(mapOf()),
submissions = emptyList()
)
LoiReport(loiName = "Point A", geoJson = JsonObject(mapOf()), submissionDetails = null)
),
onCloseClicked = {},
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,13 @@ import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import ground_android.core.ui.generated.resources.Res
import ground_android.core.ui.generated.resources.scan_this_qr_to_download_geojson
import org.jetbrains.compose.resources.stringResource as multiplatformStringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import ground_android.core.ui.generated.resources.Res
import ground_android.core.ui.generated.resources.scan_this_qr_to_download_geojson
import java.util.Date
import kotlin.time.Clock
import kotlinx.serialization.json.JsonArray
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.JsonPrimitive
Expand All @@ -63,6 +61,7 @@ import org.groundplatform.domain.model.locationofinterest.LoiReport
import org.groundplatform.ui.components.loireport.SubmissionPdfItem
import org.groundplatform.ui.components.qrcode.GroundQrCode
import org.groundplatform.ui.theme.AppTheme
import org.jetbrains.compose.resources.stringResource as multiplatformStringResource

@Composable
fun DataSubmissionConfirmationScreen(
Expand Down Expand Up @@ -164,30 +163,29 @@ private fun ShareableContent(modifier: Modifier = Modifier, loiReport: LoiReport
)
}

loiReport.submissions?.let {
SubmissionPdfItem(
modifier = Modifier.fillMaxWidth().padding(top = 16.dp),
title = loiReport.surveyName,
loiName = loiReport.loiName,
userName = loiReport.userName,
date = DateFormat.getDateFormat(context).format(Date(loiReport.dateMillis)),
onItemClick = {
/* To be implemented in a follow-up on https://github.com/google/ground-android/issues/3715 */
},
onShareClick = {
/* To be implemented in a follow-up on https://github.com/google/ground-android/issues/3715 */
},
)
loiReport.submissionDetails?.let {
if (!it.submissions.isNullOrEmpty()) {
SubmissionPdfItem(
modifier = Modifier.fillMaxWidth().padding(top = 16.dp),
title = it.surveyName,
loiName = loiReport.loiName,
userName = it.userName,
date = DateFormat.getDateFormat(context).format(Date(it.dateMillis)),
onItemClick = {
/* To be implemented in a follow-up on https://github.com/google/ground-android/issues/3715 */
},
onShareClick = {
/* To be implemented in a follow-up on https://github.com/google/ground-android/issues/3715 */
},
)
}
}
}
}
}

private val testLoiReport =
LoiReport(
surveyName = "Test Survey",
userName = "John Doe",
dateMillis = Clock.System.now().toEpochMilliseconds(),
loiName = "Test LOI",
geoJson =
JsonObject(
Expand All @@ -203,7 +201,7 @@ private val testLoiReport =
),
)
),
submissions = emptyList(),
submissionDetails = null,
)

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,14 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import ground_android.core.ui.generated.resources.Res
import ground_android.core.ui.generated.resources.scan_this_qr_to_download_geojson
import org.jetbrains.compose.resources.stringResource as multiplatformStringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import ground_android.core.ui.generated.resources.Res
import ground_android.core.ui.generated.resources.scan_this_qr_to_download_geojson
import java.util.Date
import kotlin.time.Clock
import kotlinx.serialization.json.JsonArray
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.JsonPrimitive
Expand All @@ -56,6 +54,7 @@ import org.groundplatform.domain.model.locationofinterest.LoiReport
import org.groundplatform.ui.components.loireport.SubmissionPdfItem
import org.groundplatform.ui.components.qrcode.GroundQrCode
import org.groundplatform.ui.theme.AppTheme
import org.jetbrains.compose.resources.stringResource as multiplatformStringResource

@OptIn(ExperimentalMaterial3Api::class)
@Composable
Expand Down Expand Up @@ -95,20 +94,22 @@ fun ShareLocationModal(loiReport: LoiReport, onDismiss: () -> Unit) {
)
}

loiReport.submissions?.let {
SubmissionPdfItem(
modifier = Modifier.fillMaxWidth(),
title = loiReport.surveyName,
loiName = loiReport.loiName,
userName = loiReport.userName,
date = DateFormat.getDateFormat(context).format(Date(loiReport.dateMillis)),
onItemClick = {
/* To be implemented in a follow-up on https://github.com/google/ground-android/issues/3715 */
},
onShareClick = {
/* To be implemented in a follow-up on https://github.com/google/ground-android/issues/3715 */
},
)
loiReport.submissionDetails?.let {
if (!it.submissions.isNullOrEmpty()) {
SubmissionPdfItem(
modifier = Modifier.fillMaxWidth(),
title = it.surveyName,
loiName = loiReport.loiName,
userName = it.userName,
date = DateFormat.getDateFormat(context).format(Date(it.dateMillis)),
onItemClick = {
/* To be implemented in a follow-up on https://github.com/google/ground-android/issues/3715 */
},
onShareClick = {
/* To be implemented in a follow-up on https://github.com/google/ground-android/issues/3715 */
},
)
}
}

TextButton(
Expand All @@ -128,9 +129,6 @@ private fun ShareLocationModalPreview() {
val testLoiReport =
LoiReport(
loiName = "Test LOI",
surveyName = "Test Survey",
userName = "John Doe",
dateMillis = Clock.System.now().toEpochMilliseconds(),
geoJson =
JsonObject(
mapOf(
Expand All @@ -145,7 +143,7 @@ private fun ShareLocationModalPreview() {
),
)
),
submissions = emptyList(),
submissionDetails = null,
)

AppTheme {
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/res/xml/file_paths.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,7 @@
<external-files-path
name="photos"
path="Pictures" />
<cache-path
name="reports"
path="reports/" />
</paths>
12 changes: 8 additions & 4 deletions app/src/test/java/org/groundplatform/android/FakeData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -111,10 +111,7 @@ object FakeData {

val LOCATION_OF_INTEREST_LOI_REPORT =
LoiReport(
surveyName = SURVEY.title,
loiName = "Unnamed point",
userName = USER.displayName,
dateMillis = LOCATION_OF_INTEREST.lastModified.clientTimestamp,
geoJson =
JsonObject(
mapOf(
Expand All @@ -132,7 +129,14 @@ object FakeData {
),
)
),
submissions = null,
submissionDetails =
LoiReport.SubmissionDetails(
surveyName = SURVEY.title,
userName = USER.displayName,
userEmail = USER.email,
dateMillis = LOCATION_OF_INTEREST.lastModified.clientTimestamp,
submissions = null,
),
)
val LOCATION_OF_INTEREST_FEATURE =
Feature(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import kotlinx.serialization.json.JsonPrimitive
import org.groundplatform.android.R
import org.groundplatform.android.getString
import org.groundplatform.domain.model.locationofinterest.LoiReport
import org.groundplatform.testing.FakeDataGenerator
import org.groundplatform.ui.components.loireport.TEST_TAG_PDF_ITEM
import org.groundplatform.ui.components.qrcode.TEST_TAG_GROUND_QR_CODE
import org.junit.Assert.assertTrue
Expand Down Expand Up @@ -104,7 +105,7 @@ class DataSubmissionConfirmationScreenTest {
fun `Shows the PDF item when submissions is not null`() {
composeTestRule.setContent {
DataSubmissionConfirmationScreen(
loiReport = LOI_REPORT.copy(submissions = emptyList()),
loiReport = LOI_REPORT.copy(submissionDetails = FakeDataGenerator.newSubmissionDetails()),
onDismissed = {},
)
}
Expand All @@ -116,7 +117,7 @@ class DataSubmissionConfirmationScreenTest {
fun `Does not show the PDF item when submissions is null`() {
composeTestRule.setContent {
DataSubmissionConfirmationScreen(
loiReport = LOI_REPORT.copy(submissions = null),
loiReport = LOI_REPORT.copy(submissionDetails = null),
onDismissed = {},
)
}
Expand All @@ -140,10 +141,7 @@ class DataSubmissionConfirmationScreenTest {
private companion object {
private val LOI_REPORT =
LoiReport(
surveyName = "Test Survey",
loiName = "Test LOI",
userName = "John Doe",
dateMillis = 987654321L,
geoJson =
JsonObject(
mapOf(
Expand All @@ -158,7 +156,7 @@ class DataSubmissionConfirmationScreenTest {
),
)
),
submissions = emptyList(),
submissionDetails = null,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,7 @@ class LoiJobSheetTest {

private fun getLoiReport(name: String): LoiReport =
LoiReport(
surveyName = "Test Survey",
loiName = name,
userName = "John Doe",
dateMillis = 987654321L,
geoJson =
JsonObject(
mapOf(
Expand All @@ -143,7 +140,7 @@ class LoiJobSheetTest {
),
)
),
submissions = null,
submissionDetails = null,
)

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import kotlinx.serialization.json.JsonPrimitive
import org.groundplatform.android.R
import org.groundplatform.android.getString
import org.groundplatform.domain.model.locationofinterest.LoiReport
import org.groundplatform.testing.FakeDataGenerator
import org.groundplatform.ui.components.loireport.TEST_TAG_PDF_ITEM
import org.groundplatform.ui.components.qrcode.TEST_TAG_GROUND_QR_CODE
import org.groundplatform.ui.theme.AppTheme
Expand Down Expand Up @@ -61,7 +62,10 @@ class ShareLocationModalTest {
fun `Shows the PDF item when submissions is not null`() {
composeTestRule.setContent {
AppTheme {
ShareLocationModal(loiReport = LOI_REPORT.copy(submissions = emptyList()), onDismiss = {})
ShareLocationModal(
loiReport = LOI_REPORT.copy(submissionDetails = FakeDataGenerator.newSubmissionDetails()),
onDismiss = {},
)
}
}

Expand All @@ -72,7 +76,7 @@ class ShareLocationModalTest {
fun `Does not show the PDF item when submissions is null`() {
composeTestRule.setContent {
AppTheme {
ShareLocationModal(loiReport = LOI_REPORT.copy(submissions = null), onDismiss = {})
ShareLocationModal(loiReport = LOI_REPORT.copy(submissionDetails = null), onDismiss = {})
}
}

Expand All @@ -96,10 +100,7 @@ class ShareLocationModalTest {
const val LOI_NAME = "Test Loi"
val LOI_REPORT =
LoiReport(
surveyName = "Test Survey",
loiName = LOI_NAME,
userName = "John Doe",
dateMillis = 987654321L,
geoJson =
JsonObject(
mapOf(
Expand All @@ -114,7 +115,7 @@ class ShareLocationModalTest {
),
)
),
submissions = null,
submissionDetails = null,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,15 @@ import org.groundplatform.domain.model.submission.Submission

/** Represents the data collected for a specific LOI which can be downloaded and shared. */
data class LoiReport(
val surveyName: String,
val loiName: String,
val userName: String,
val dateMillis: Long,
val geoJson: JsonObject,
val submissions: List<Submission>?,
)
val submissionDetails: SubmissionDetails?,
) {
data class SubmissionDetails(
val surveyName: String,
val userName: String,
val userEmail: String,
val dateMillis: Long,
val submissions: List<Submission>?,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,19 @@ class GetLoiReportUseCase(
// https://github.com/google/ground-android/issues/3715
return loi?.let {
LoiReport(
surveyName = surveyName,
loiName = loiName,
userName = user.displayName,
dateMillis = it.lastModified.clientTimestamp,
geoJson =
it.geometry.toGeoJson(
it.properties.filter { property -> property.key == LOI_NAME_PROPERTY }
),
submissions = submissions,
submissionDetails =
LoiReport.SubmissionDetails(
surveyName = surveyName,
userName = user.displayName,
userEmail = user.email,
dateMillis = loi.lastModified.clientTimestamp,
submissions = submissions,
),
)
}
}
Expand Down
Loading
Loading