diff --git a/app/src/main/kotlin/org/cru/godtools/ui/dashboard/LocalizationSettingsBox.kt b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/LocalizationSettingsBox.kt new file mode 100644 index 0000000000..c040224208 --- /dev/null +++ b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/LocalizationSettingsBox.kt @@ -0,0 +1,50 @@ +package org.cru.godtools.ui.dashboard + +import androidx.annotation.StringRes +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import org.cru.godtools.R + +@Composable +internal fun LocalizationSettingsBox( + @StringRes title: Int, + @StringRes description: Int, + onClickSettings: () -> Unit, + modifier: Modifier = Modifier, +) { + Surface( + color = MaterialTheme.colorScheme.primaryContainer, + modifier = modifier.fillMaxWidth(), + ) { + Column(modifier = Modifier.padding(16.dp)) { + Text( + text = stringResource(title), + fontWeight = FontWeight.Bold, + style = MaterialTheme.typography.bodyLarge + ) + Text( + text = stringResource(description), + style = MaterialTheme.typography.bodySmall + ) + Button( + onClick = onClickSettings, + modifier = Modifier + .align(Alignment.CenterHorizontally) + .padding(top = 8.dp) + ) { + Text(stringResource(R.string.dashboard_section_localization_box_button)) + } + } + } +} diff --git a/app/src/main/kotlin/org/cru/godtools/ui/dashboard/PinLastItemBottomArrangement.kt b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/PinLastItemBottomArrangement.kt new file mode 100644 index 0000000000..6ced6818e1 --- /dev/null +++ b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/PinLastItemBottomArrangement.kt @@ -0,0 +1,23 @@ +package org.cru.godtools.ui.dashboard + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.unit.Density + +@Composable +internal fun rememberPinLastItemBottomArrangement(items: Int): Arrangement.Vertical = remember(items) { + object : Arrangement.Vertical { + override fun Density.arrange(totalSize: Int, sizes: IntArray, outPositions: IntArray) { + var currentOffset = 0 + sizes.forEachIndexed { index, size -> + if (index == sizes.lastIndex) { + outPositions[index] = maxOf(currentOffset, totalSize - size) + } else { + outPositions[index] = currentOffset + currentOffset += size + } + } + } + } +} diff --git a/app/src/main/kotlin/org/cru/godtools/ui/dashboard/lessons/LessonsLayout.kt b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/lessons/LessonsLayout.kt index 4dd655489e..c760769989 100644 --- a/app/src/main/kotlin/org/cru/godtools/ui/dashboard/lessons/LessonsLayout.kt +++ b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/lessons/LessonsLayout.kt @@ -1,8 +1,11 @@ package org.cru.godtools.ui.dashboard.lessons +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.lazy.LazyColumn @@ -14,22 +17,37 @@ import androidx.compose.material3.SegmentedButtonDefaults import androidx.compose.material3.SingleChoiceSegmentedButtonRow import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.slack.circuit.codegen.annotations.CircuitInject import dagger.hilt.components.SingletonComponent +import org.ccci.gto.android.common.compose.foundation.layout.padding import org.cru.godtools.R import org.cru.godtools.base.ui.circuit.screen.dashboard.page.LessonsScreen +import org.cru.godtools.ui.dashboard.LocalizationSettingsBox import org.cru.godtools.ui.dashboard.lessons.LessonsPresenter.UiEvent import org.cru.godtools.ui.dashboard.lessons.LessonsPresenter.UiState +import org.cru.godtools.ui.dashboard.rememberPinLastItemBottomArrangement import org.cru.godtools.ui.tools.LessonToolCard +internal val MARGIN_LESSONS_LAYOUT_HORIZONTAL = 16.dp + @Composable @CircuitInject(LessonsScreen::class, SingletonComponent::class) internal fun LessonsLayout(state: UiState, modifier: Modifier = Modifier) { - LazyColumn(contentPadding = PaddingValues(start = 16.dp, end = 16.dp, bottom = 16.dp), modifier = modifier) { + val verticalArrangement = if (state.mode == UiState.Mode.PERSONALIZATION) { + rememberPinLastItemBottomArrangement(state.lessons.size) + } else { + Arrangement.Top + } + + LazyColumn( + verticalArrangement = remember { verticalArrangement }, + modifier = modifier.fillMaxHeight() + ) { if (state.isPersonalizationEnabled) { item("mode-toggle", "mode-toggle") { PersonalizationToggle( @@ -42,9 +60,11 @@ internal fun LessonsLayout(state: UiState, modifier: Modifier = Modifier) { } item("header", "header") { - LessonsHeader(state.mode, modifier = Modifier.padding(top = 16.dp)) - HorizontalDivider(modifier = Modifier.padding(vertical = 12.dp)) - LessonFilters(state) + LessonsHeader(state.mode, Modifier.padding(top = 16.dp, horizontal = MARGIN_LESSONS_LAYOUT_HORIZONTAL)) + HorizontalDivider( + modifier = Modifier.padding(vertical = 12.dp, horizontal = MARGIN_LESSONS_LAYOUT_HORIZONTAL) + ) + LessonFilters(state, modifier = Modifier.padding(horizontal = MARGIN_LESSONS_LAYOUT_HORIZONTAL)) } items(state.lessons, { it.toolCode.orEmpty() }, { "lesson" }) { toolState -> @@ -54,9 +74,23 @@ internal fun LessonsLayout(state: UiState, modifier: Modifier = Modifier) { showProgress = true, modifier = Modifier .animateItem() - .padding(top = 16.dp) + .padding(top = 16.dp, horizontal = MARGIN_LESSONS_LAYOUT_HORIZONTAL) ) } + + item("spacer", "spacer") { + Spacer(modifier = Modifier.height(16.dp)) + } + + if (state.mode == UiState.Mode.PERSONALIZATION) { + item("localization-settings-box", "localization-settings-box") { + LocalizationSettingsBox( + title = R.string.dashboard_lessons_section_personalized_localization_title, + description = R.string.dashboard_lessons_section_personalized_localization_text, + onClickSettings = { state.eventSink(UiEvent.OpenLocalizationSettings) } + ) + } + } } } diff --git a/app/src/main/kotlin/org/cru/godtools/ui/dashboard/lessons/LessonsPresenter.kt b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/lessons/LessonsPresenter.kt index 8fdb399832..58924ec3cd 100644 --- a/app/src/main/kotlin/org/cru/godtools/ui/dashboard/lessons/LessonsPresenter.kt +++ b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/lessons/LessonsPresenter.kt @@ -54,6 +54,7 @@ import org.cru.godtools.sync.GodToolsSyncService import org.cru.godtools.ui.dashboard.SyncTaskRegistry.Companion.syncTaskRegistry import org.cru.godtools.ui.dashboard.filters.FilterMenu import org.cru.godtools.ui.dashboard.lessons.LessonsPresenter.UiState +import org.cru.godtools.ui.settings.country.CountrySettingsScreen import org.cru.godtools.ui.tools.ToolCardPresenter import org.cru.godtools.ui.tools.ToolCardPresenter.ToolCardEvent import org.cru.godtools.util.createToolIntent @@ -89,6 +90,7 @@ class LessonsPresenter @AssistedInject internal constructor( internal sealed interface UiEvent : CircuitUiEvent { data class ChangeMode(val mode: UiState.Mode) : UiEvent + data object OpenLocalizationSettings : UiEvent } // endregion UiState / UiEvent @@ -114,6 +116,7 @@ class LessonsPresenter @AssistedInject internal constructor( ) { when (it) { is UiEvent.ChangeMode -> mode = it.mode + is UiEvent.OpenLocalizationSettings -> navigator.goTo(CountrySettingsScreen) } } } diff --git a/app/src/main/kotlin/org/cru/godtools/ui/dashboard/tools/ToolsLayout.kt b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/tools/ToolsLayout.kt index 1fa39facec..45878dd718 100644 --- a/app/src/main/kotlin/org/cru/godtools/ui/dashboard/tools/ToolsLayout.kt +++ b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/tools/ToolsLayout.kt @@ -3,6 +3,7 @@ package org.cru.godtools.ui.dashboard.tools import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentWidth @@ -30,6 +31,8 @@ import org.ccci.gto.android.common.compose.foundation.layout.padding import org.cru.godtools.R import org.cru.godtools.base.ui.circuit.screen.dashboard.page.ToolsScreen import org.cru.godtools.ui.banner.Banners +import org.cru.godtools.ui.dashboard.LocalizationSettingsBox +import org.cru.godtools.ui.dashboard.rememberPinLastItemBottomArrangement import org.cru.godtools.ui.dashboard.tools.ToolsPresenter.UiEvent import org.cru.godtools.ui.dashboard.tools.ToolsPresenter.UiState import org.cru.godtools.ui.tools.SquareToolCard @@ -46,8 +49,17 @@ internal fun ToolsLayout(state: UiState, modifier: Modifier = Modifier) { val columnState = rememberLazyListState() LaunchedEffect(state.banner?.type) { if (state.banner != null) columnState.animateScrollToItem(0) } + val verticalArrangement = if (state.mode == UiState.Mode.PERSONALIZATION) { + rememberPinLastItemBottomArrangement(state.tools.size) + } else { + Arrangement.Top + } - LazyColumn(state = columnState, modifier = modifier) { + LazyColumn( + state = columnState, + verticalArrangement = verticalArrangement, + modifier = modifier.fillMaxHeight() + ) { if (!state.dataLoaded) return@LazyColumn item("banners", "banners") { @@ -121,6 +133,16 @@ internal fun ToolsLayout(state: UiState, modifier: Modifier = Modifier) { .padding(bottom = 16.dp, horizontal = MARGIN_TOOLS_LAYOUT_HORIZONTAL) ) } + + if (state.mode == UiState.Mode.PERSONALIZATION) { + item("localization-settings-box", "localization-settings-box") { + LocalizationSettingsBox( + title = R.string.dashboard_tools_section_personalized_localization_title, + description = R.string.dashboard_tools_section_personalized_localization_text, + onClickSettings = { state.eventSink(UiEvent.OpenLocalizationSettings) } + ) + } + } } } diff --git a/app/src/main/kotlin/org/cru/godtools/ui/dashboard/tools/ToolsPresenter.kt b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/tools/ToolsPresenter.kt index da2eccb9d9..1d698fe95f 100644 --- a/app/src/main/kotlin/org/cru/godtools/ui/dashboard/tools/ToolsPresenter.kt +++ b/app/src/main/kotlin/org/cru/godtools/ui/dashboard/tools/ToolsPresenter.kt @@ -43,6 +43,7 @@ import org.cru.godtools.ui.dashboard.SyncTaskRegistry.Companion.syncTaskRegistry import org.cru.godtools.ui.dashboard.tools.ToolFiltersStateProducer.Filters import org.cru.godtools.ui.dashboard.tools.ToolsPresenter.UiState import org.cru.godtools.ui.dashboard.tools.ToolsPresenter.UiState.Mode +import org.cru.godtools.ui.settings.country.CountrySettingsScreen import org.cru.godtools.ui.tooldetails.ToolDetailsScreen import org.cru.godtools.ui.tools.ToolCardPresenter import org.cru.godtools.ui.tools.ToolCardPresenter.ToolCardEvent @@ -79,6 +80,7 @@ class ToolsPresenter @AssistedInject internal constructor( sealed interface UiEvent : CircuitUiEvent { data class ChangeMode(val mode: Mode) : UiEvent + data object OpenLocalizationSettings : UiEvent } // endregion UiState / UiEvent @@ -120,6 +122,7 @@ class ToolsPresenter @AssistedInject internal constructor( ) { when (it) { is UiEvent.ChangeMode -> mode = it.mode + is UiEvent.OpenLocalizationSettings -> navigator.goTo(CountrySettingsScreen) } } } diff --git a/app/src/main/res/values/strings_dashboard.xml b/app/src/main/res/values/strings_dashboard.xml index 51486d7454..82e4902e8e 100644 --- a/app/src/main/res/values/strings_dashboard.xml +++ b/app/src/main/res/values/strings_dashboard.xml @@ -49,6 +49,8 @@ An online version can be found at https://knowgod.com/ Completed %1$d%% Complete + Displaying localized Lessons list + The lessons shown on this page are based on your Localization setting. You can alter this at any time. @@ -83,6 +85,9 @@ An online version can be found at https://knowgod.com/ All Tools Featured Here are some tools we thought you might like + Displaying localized Tools list + The tools shown in your Personalized Tools page are selected based on your Language and Localization setting. You can alter this by editing your setting. + Change Localization Settings diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NIGHT,NO_ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NIGHT,NO_ACCESSIBILITY].png new file mode 100644 index 0000000000..9cc80b6a77 --- /dev/null +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NIGHT,NO_ACCESSIBILITY].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:223de3c1d5283869ac730cca95788b6a1122921036e5722eb1e32370c6362987 +size 60043 diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,ACCESSIBILITY].png new file mode 100644 index 0000000000..a511a406c4 --- /dev/null +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,ACCESSIBILITY].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50f9c12981aacf04a2e7fb0909121a0ff9d0338a7570bdcab1fd4f16f35c84ca +size 146395 diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png new file mode 100644 index 0000000000..96827beb39 --- /dev/null +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a547c724078ef2096d3e4df4ee724f29bfc31f5259b2b7b78c6d253f0010463 +size 58701 diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NIGHT,NO_ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NIGHT,NO_ACCESSIBILITY].png new file mode 100644 index 0000000000..9c5685063c --- /dev/null +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NIGHT,NO_ACCESSIBILITY].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:586eb4f58f275a668f82efec023468ee3917a494dd3a3aa7bd90f9f696b3f396 +size 44577 diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png new file mode 100644 index 0000000000..8275c7c9ed --- /dev/null +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_LessonsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eb692fd567ca51706f0edaece89c52551cd8e0c15f61e6fe7404779e28ec4d0 +size 43721 diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NIGHT,NO_ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NIGHT,NO_ACCESSIBILITY].png new file mode 100644 index 0000000000..c1c483d12a --- /dev/null +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NIGHT,NO_ACCESSIBILITY].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06fa331a198dc5acf0b458d070e3c047a549670b0210960117a35f12e572ff2f +size 69913 diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,ACCESSIBILITY].png new file mode 100644 index 0000000000..90e4413809 --- /dev/null +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,ACCESSIBILITY].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edd797205e5a38f4bedc083b692724d09da10c346811a7c29ce8c90a63d06ae7 +size 156915 diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png new file mode 100644 index 0000000000..9033e87ddb --- /dev/null +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Nexus_5,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:279c8dca72575095e1063919122111353447063c7f8f16d5a485ea9de31e9453 +size 68679 diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NIGHT,NO_ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NIGHT,NO_ACCESSIBILITY].png new file mode 100644 index 0000000000..b57f142691 --- /dev/null +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NIGHT,NO_ACCESSIBILITY].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e52c076fdbf7202bd61e14029b879dcd806054f14e28c8b4031a0b7d6acb74cf +size 51646 diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png new file mode 100644 index 0000000000..1a2a078167 --- /dev/null +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_Localization_Settings_Box[Pixel_6_Pro,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c27c28af55a1caa04349fd632e200fffbb4c9f0a3fc1763fc9217301e85c5573 +size 50577 diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_No_Tools[Pixel_6_Pro,locale=null,NIGHT,NO_ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_No_Tools[Pixel_6_Pro,locale=null,NIGHT,NO_ACCESSIBILITY].png index 4e81bb320e..9b791c270a 100644 --- a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_No_Tools[Pixel_6_Pro,locale=null,NIGHT,NO_ACCESSIBILITY].png +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_No_Tools[Pixel_6_Pro,locale=null,NIGHT,NO_ACCESSIBILITY].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd0395f220bd21cbfc50a9bfd758c4bae1f359748802942bcf58e939fa361f48 -size 64070 +oid sha256:75327f0afc1d9e0e38eb3601131b9c513f3f2a72660620099eefe89dbdfc3f96 +size 83602 diff --git a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_No_Tools[Pixel_6_Pro,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_No_Tools[Pixel_6_Pro,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png index b4e6a8d05d..df713a50c1 100644 --- a/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_No_Tools[Pixel_6_Pro,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png +++ b/app/src/test/snapshots/images/org.cru.godtools.ui.dashboard_DashboardLayoutPaparazziTest_ToolsLayout()_-_Personalization_-_No_Tools[Pixel_6_Pro,locale=null,NOTNIGHT,NO_ACCESSIBILITY].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9586615ef859302a0e04da4cf4abfe510a7e6e7b616710241a1c23d351d42685 -size 64336 +oid sha256:f91a6b47f6726f443ba0066dfae4f9f219fe2e82956b5f766c984ffabf94708a +size 83134 diff --git a/app/src/testDebug/kotlin/org/cru/godtools/ui/dashboard/DashboardLayoutPaparazziTest.kt b/app/src/testDebug/kotlin/org/cru/godtools/ui/dashboard/DashboardLayoutPaparazziTest.kt index 13739919fd..5befbe7864 100644 --- a/app/src/testDebug/kotlin/org/cru/godtools/ui/dashboard/DashboardLayoutPaparazziTest.kt +++ b/app/src/testDebug/kotlin/org/cru/godtools/ui/dashboard/DashboardLayoutPaparazziTest.kt @@ -194,6 +194,17 @@ class DashboardLayoutPaparazziTest( snapshotDashboardLayout(state.copy(initialPage = ToolsScreen)) } + @Test + fun `ToolsLayout() - Personalization - Localization Settings Box`() { + assumeTrue(locale == null) + toolsState = toolsState.copy( + mode = ToolsPresenter.UiState.Mode.PERSONALIZATION, + spotlightTools = emptyList(), + tools = emptyList(), + ) + snapshotDashboardLayout(state.copy(initialPage = ToolsScreen)) + } + @Test fun `ToolsLayout() - No Personalization`() { assumeTrue(locale == null) @@ -303,6 +314,16 @@ class DashboardLayoutPaparazziTest( snapshotDashboardLayout(state.copy(initialPage = LessonsScreen)) } + @Test + fun `LessonsLayout() - Personalization - Localization Settings Box`() { + assumeTrue(locale == null) + lessonsState = lessonsState.copy( + mode = LessonsPresenter.UiState.Mode.PERSONALIZATION, + lessons = emptyList(), + ) + snapshotDashboardLayout(state.copy(initialPage = LessonsScreen)) + } + @Test fun `LessonsLayout() - Personalization Disabled`() { lessonsState = lessonsState.copy(isPersonalizationEnabled = false)