From dcbf664f382a694b74ae6076a25b7ab8eda9dedf Mon Sep 17 00:00:00 2001 From: Phil Oliver <3497406+poliver@users.noreply.github.com> Date: Sat, 4 Oct 2025 21:15:55 -0400 Subject: [PATCH] Move app intro to `:feature:intro` (#3348) --- app/build.gradle.kts | 1 + app/detekt-baseline.xml | 2 -- .../java/com/geeksville/mesh/MainActivity.kt | 2 +- build.gradle.kts | 1 + feature/intro/build.gradle.kts | 29 +++++++++++++++++++ feature/intro/detekt-baseline.xml | 8 +++++ .../feature}/intro/AppIntroductionScreen.kt | 2 +- .../feature}/intro/CriticalAlertsScreen.kt | 2 +- .../feature}/intro/FeatureUIData.kt | 2 +- .../feature}/intro/IntroBottomBar.kt | 2 +- .../feature}/intro/IntroUiHelpers.kt | 2 +- .../feature}/intro/LocationScreen.kt | 2 +- .../feature}/intro/NotificationsScreen.kt | 2 +- .../feature}/intro/PermissionScreenLayout.kt | 2 +- .../feature}/intro/WelcomeScreen.kt | 2 +- settings.gradle.kts | 1 + 16 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 feature/intro/build.gradle.kts create mode 100644 feature/intro/detekt-baseline.xml rename {app/src/main/java/com/geeksville/mesh/ui => feature/intro/src/main/kotlin/org/meshtastic/feature}/intro/AppIntroductionScreen.kt (99%) rename {app/src/main/java/com/geeksville/mesh/ui => feature/intro/src/main/kotlin/org/meshtastic/feature}/intro/CriticalAlertsScreen.kt (98%) rename {app/src/main/java/com/geeksville/mesh/ui => feature/intro/src/main/kotlin/org/meshtastic/feature}/intro/FeatureUIData.kt (97%) rename {app/src/main/java/com/geeksville/mesh/ui => feature/intro/src/main/kotlin/org/meshtastic/feature}/intro/IntroBottomBar.kt (98%) rename {app/src/main/java/com/geeksville/mesh/ui => feature/intro/src/main/kotlin/org/meshtastic/feature}/intro/IntroUiHelpers.kt (99%) rename {app/src/main/java/com/geeksville/mesh/ui => feature/intro/src/main/kotlin/org/meshtastic/feature}/intro/LocationScreen.kt (98%) rename {app/src/main/java/com/geeksville/mesh/ui => feature/intro/src/main/kotlin/org/meshtastic/feature}/intro/NotificationsScreen.kt (99%) rename {app/src/main/java/com/geeksville/mesh/ui => feature/intro/src/main/kotlin/org/meshtastic/feature}/intro/PermissionScreenLayout.kt (99%) rename {app/src/main/java/com/geeksville/mesh/ui => feature/intro/src/main/kotlin/org/meshtastic/feature}/intro/WelcomeScreen.kt (99%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e5702f712..97587507d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -197,6 +197,7 @@ dependencies { implementation(projects.core.service) implementation(projects.core.strings) implementation(projects.core.ui) + implementation(projects.feature.intro) implementation(projects.feature.map) implementation(projects.feature.node) diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml index 9898c03c4..8ea03a869 100644 --- a/app/detekt-baseline.xml +++ b/app/detekt-baseline.xml @@ -32,7 +32,6 @@ ComposableParamOrder:NodeDetailScreen.kt$NodeActionButton ComposableParamOrder:NodeDetailScreen.kt$NodeDetailList ComposableParamOrder:PaxMetrics.kt$PaxMetricsChart - ComposableParamOrder:PermissionScreenLayout.kt$PermissionScreenLayout ComposableParamOrder:PowerMetrics.kt$PowerMetricsChart ComposableParamOrder:QuickChat.kt$OutlinedTextFieldWithCounter ComposableParamOrder:Share.kt$ShareScreen @@ -281,7 +280,6 @@ ParameterNaming:MessageList.kt$onUnreadChanged ParameterNaming:NodeDetailScreen.kt$onFirmwareSelected ParameterNaming:UsbDevices.kt$onDeviceSelected - ParameterNaming:WelcomeScreen.kt$onGetStarted PreviewPublic:Channel.kt$ModemPresetInfoPreview PreviewPublic:EmptyStateContent.kt$EmptyStateContentPreview PreviewPublic:MapReportingPreference.kt$MapReportingPreview diff --git a/app/src/main/java/com/geeksville/mesh/MainActivity.kt b/app/src/main/java/com/geeksville/mesh/MainActivity.kt index 2e32a4a20..888c35074 100644 --- a/app/src/main/java/com/geeksville/mesh/MainActivity.kt +++ b/app/src/main/java/com/geeksville/mesh/MainActivity.kt @@ -41,12 +41,12 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.geeksville.mesh.model.UIViewModel import com.geeksville.mesh.ui.MainScreen -import com.geeksville.mesh.ui.intro.AppIntroductionScreen import dagger.hilt.android.AndroidEntryPoint import org.meshtastic.core.datastore.UiPreferencesDataSource import org.meshtastic.core.navigation.DEEP_LINK_BASE_URI import org.meshtastic.core.ui.theme.AppTheme import org.meshtastic.core.ui.theme.MODE_DYNAMIC +import org.meshtastic.feature.intro.AppIntroductionScreen import timber.log.Timber import javax.inject.Inject diff --git a/build.gradle.kts b/build.gradle.kts index fcf960472..8a8c59fb4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -75,6 +75,7 @@ dependencies { kover(projects.core.navigation) kover(projects.core.network) kover(projects.core.prefs) + kover(projects.feature.intro) kover(projects.feature.map) kover(projects.feature.node) } \ No newline at end of file diff --git a/feature/intro/build.gradle.kts b/feature/intro/build.gradle.kts new file mode 100644 index 000000000..7a07b1679 --- /dev/null +++ b/feature/intro/build.gradle.kts @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2025 Meshtastic LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +plugins { + alias(libs.plugins.kover) + alias(libs.plugins.meshtastic.android.library) + alias(libs.plugins.meshtastic.android.library.compose) +} + +android { namespace = "org.meshtastic.feature.intro" } + +dependencies { + implementation(projects.core.strings) + implementation(libs.accompanist.permissions) +} diff --git a/feature/intro/detekt-baseline.xml b/feature/intro/detekt-baseline.xml new file mode 100644 index 000000000..5c5d30217 --- /dev/null +++ b/feature/intro/detekt-baseline.xml @@ -0,0 +1,8 @@ + + + + + ComposableParamOrder:PermissionScreenLayout.kt$PermissionScreenLayout + ParameterNaming:WelcomeScreen.kt$onGetStarted + + diff --git a/app/src/main/java/com/geeksville/mesh/ui/intro/AppIntroductionScreen.kt b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/AppIntroductionScreen.kt similarity index 99% rename from app/src/main/java/com/geeksville/mesh/ui/intro/AppIntroductionScreen.kt rename to feature/intro/src/main/kotlin/org/meshtastic/feature/intro/AppIntroductionScreen.kt index 7c05a5d40..ee35c04ac 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/intro/AppIntroductionScreen.kt +++ b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/AppIntroductionScreen.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.intro +package org.meshtastic.feature.intro import android.Manifest import android.content.Intent diff --git a/app/src/main/java/com/geeksville/mesh/ui/intro/CriticalAlertsScreen.kt b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/CriticalAlertsScreen.kt similarity index 98% rename from app/src/main/java/com/geeksville/mesh/ui/intro/CriticalAlertsScreen.kt rename to feature/intro/src/main/kotlin/org/meshtastic/feature/intro/CriticalAlertsScreen.kt index 5537e0188..556c7bfe0 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/intro/CriticalAlertsScreen.kt +++ b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/CriticalAlertsScreen.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.intro +package org.meshtastic.feature.intro import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer diff --git a/app/src/main/java/com/geeksville/mesh/ui/intro/FeatureUIData.kt b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/FeatureUIData.kt similarity index 97% rename from app/src/main/java/com/geeksville/mesh/ui/intro/FeatureUIData.kt rename to feature/intro/src/main/kotlin/org/meshtastic/feature/intro/FeatureUIData.kt index 089be7087..5bb669554 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/intro/FeatureUIData.kt +++ b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/FeatureUIData.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.intro +package org.meshtastic.feature.intro import androidx.annotation.StringRes import androidx.compose.ui.graphics.vector.ImageVector diff --git a/app/src/main/java/com/geeksville/mesh/ui/intro/IntroBottomBar.kt b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/IntroBottomBar.kt similarity index 98% rename from app/src/main/java/com/geeksville/mesh/ui/intro/IntroBottomBar.kt rename to feature/intro/src/main/kotlin/org/meshtastic/feature/intro/IntroBottomBar.kt index 0e25f70a1..ecdb44ae3 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/intro/IntroBottomBar.kt +++ b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/IntroBottomBar.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.intro +package org.meshtastic.feature.intro import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer diff --git a/app/src/main/java/com/geeksville/mesh/ui/intro/IntroUiHelpers.kt b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/IntroUiHelpers.kt similarity index 99% rename from app/src/main/java/com/geeksville/mesh/ui/intro/IntroUiHelpers.kt rename to feature/intro/src/main/kotlin/org/meshtastic/feature/intro/IntroUiHelpers.kt index f5d729748..c9294be25 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/intro/IntroUiHelpers.kt +++ b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/IntroUiHelpers.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.intro +package org.meshtastic.feature.intro import android.content.Context import androidx.annotation.StringRes diff --git a/app/src/main/java/com/geeksville/mesh/ui/intro/LocationScreen.kt b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/LocationScreen.kt similarity index 98% rename from app/src/main/java/com/geeksville/mesh/ui/intro/LocationScreen.kt rename to feature/intro/src/main/kotlin/org/meshtastic/feature/intro/LocationScreen.kt index 46442d80a..3d0682015 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/intro/LocationScreen.kt +++ b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/LocationScreen.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.intro +package org.meshtastic.feature.intro import android.content.Intent import android.net.Uri diff --git a/app/src/main/java/com/geeksville/mesh/ui/intro/NotificationsScreen.kt b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/NotificationsScreen.kt similarity index 99% rename from app/src/main/java/com/geeksville/mesh/ui/intro/NotificationsScreen.kt rename to feature/intro/src/main/kotlin/org/meshtastic/feature/intro/NotificationsScreen.kt index d7a8a0942..aa1f51a5f 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/intro/NotificationsScreen.kt +++ b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/NotificationsScreen.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.intro +package org.meshtastic.feature.intro import android.content.Intent import android.net.Uri diff --git a/app/src/main/java/com/geeksville/mesh/ui/intro/PermissionScreenLayout.kt b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/PermissionScreenLayout.kt similarity index 99% rename from app/src/main/java/com/geeksville/mesh/ui/intro/PermissionScreenLayout.kt rename to feature/intro/src/main/kotlin/org/meshtastic/feature/intro/PermissionScreenLayout.kt index 4ea11d07e..d72fbabc5 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/intro/PermissionScreenLayout.kt +++ b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/PermissionScreenLayout.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.intro +package org.meshtastic.feature.intro import androidx.annotation.StringRes import androidx.compose.foundation.gestures.detectTapGestures diff --git a/app/src/main/java/com/geeksville/mesh/ui/intro/WelcomeScreen.kt b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/WelcomeScreen.kt similarity index 99% rename from app/src/main/java/com/geeksville/mesh/ui/intro/WelcomeScreen.kt rename to feature/intro/src/main/kotlin/org/meshtastic/feature/intro/WelcomeScreen.kt index 4c577f63e..01a7a3db8 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/intro/WelcomeScreen.kt +++ b/feature/intro/src/main/kotlin/org/meshtastic/feature/intro/WelcomeScreen.kt @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.geeksville.mesh.ui.intro +package org.meshtastic.feature.intro import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer diff --git a/settings.gradle.kts b/settings.gradle.kts index 34da3988b..7de9fcdea 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -31,6 +31,7 @@ include( ":core:service", ":core:strings", ":core:ui", + ":feature:intro", ":feature:map", ":feature:node", ":mesh_service_example",