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)