Integration: wire 3 new P2 screens into App.kt nav + HapticsInit bootstrap
Navigation wiring (per follow-ups flagged by Streams G/H/I): - Add TaskTemplatesBrowserRoute (new) + App.kt composable<TaskTemplatesBrowserRoute> - Wire composable<TaskSuggestionsRoute> (declared by Stream H but unwired) - Wire composable<AddTaskWithResidenceRoute> (declared by Stream I but unwired) MainActivity.onCreate now calls HapticsInit.install(applicationContext) so the Vibrator fallback path works on non-View call-sites (flagged by Stream S). Deferred cleanup (tracked, not done here): - Port push-token registration from legacy MyFirebaseMessagingService.kt to new FcmService (Stream N TODO). - Remove legacy WidgetTaskActionReceiver + manifest entry (Stream M flag). - Residence invite accept/decline APILayer methods (Stream O TODO). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -68,6 +68,9 @@ class MainActivity : FragmentActivity(), SingletonImageLoader.Factory {
|
||||
// Initialize BiometricPreference storage
|
||||
BiometricPreference.initialize(BiometricPreferenceManager.getInstance(applicationContext))
|
||||
|
||||
// Initialize cross-platform Haptics backend (P5 Stream S)
|
||||
com.tt.honeyDue.ui.haptics.HapticsInit.install(applicationContext)
|
||||
|
||||
// Initialize DataManager with platform-specific managers
|
||||
// This loads cached lookup data from disk for faster startup
|
||||
DataManager.initialize(
|
||||
|
||||
@@ -31,6 +31,9 @@ import com.tt.honeyDue.ui.screens.VerifyEmailScreen
|
||||
import com.tt.honeyDue.ui.screens.VerifyResetCodeScreen
|
||||
import com.tt.honeyDue.ui.screens.onboarding.OnboardingScreen
|
||||
import com.tt.honeyDue.ui.screens.subscription.FeatureComparisonScreen
|
||||
import com.tt.honeyDue.ui.screens.task.AddTaskWithResidenceScreen
|
||||
import com.tt.honeyDue.ui.screens.task.TaskSuggestionsScreen
|
||||
import com.tt.honeyDue.ui.screens.task.TaskTemplatesBrowserScreen
|
||||
import com.tt.honeyDue.ui.screens.theme.ThemeSelectionScreen
|
||||
import com.tt.honeyDue.viewmodel.OnboardingViewModel
|
||||
import com.tt.honeyDue.viewmodel.PasswordResetViewModel
|
||||
@@ -678,6 +681,35 @@ fun App(
|
||||
)
|
||||
}
|
||||
|
||||
composable<TaskSuggestionsRoute> { backStackEntry ->
|
||||
// P2 Stream H — standalone personalized-task suggestions.
|
||||
val route = backStackEntry.toRoute<TaskSuggestionsRoute>()
|
||||
TaskSuggestionsScreen(
|
||||
residenceId = route.residenceId,
|
||||
onNavigateBack = { navController.popBackStack() },
|
||||
)
|
||||
}
|
||||
|
||||
composable<AddTaskWithResidenceRoute> { backStackEntry ->
|
||||
// P2 Stream I — Android port of iOS AddTaskWithResidenceView.
|
||||
val route = backStackEntry.toRoute<AddTaskWithResidenceRoute>()
|
||||
AddTaskWithResidenceScreen(
|
||||
residenceId = route.residenceId,
|
||||
onNavigateBack = { navController.popBackStack() },
|
||||
onCreated = { navController.popBackStack() },
|
||||
)
|
||||
}
|
||||
|
||||
composable<TaskTemplatesBrowserRoute> { backStackEntry ->
|
||||
// P2 Stream G — full-screen template catalog browse.
|
||||
val route = backStackEntry.toRoute<TaskTemplatesBrowserRoute>()
|
||||
TaskTemplatesBrowserScreen(
|
||||
residenceId = route.residenceId,
|
||||
fromOnboarding = route.fromOnboarding,
|
||||
onNavigateBack = { navController.popBackStack() },
|
||||
)
|
||||
}
|
||||
|
||||
composable<EditTaskRoute> { backStackEntry ->
|
||||
val route = backStackEntry.toRoute<EditTaskRoute>()
|
||||
EditTaskScreen(
|
||||
|
||||
@@ -172,3 +172,13 @@ data class TaskSuggestionsRoute(val residenceId: Int)
|
||||
// AddTaskWithResidenceView). Residence is pre-selected via residenceId.
|
||||
@Serializable
|
||||
data class AddTaskWithResidenceRoute(val residenceId: Int)
|
||||
|
||||
// Task Templates Browser Route (P2 Stream G — full-screen browse/preview/
|
||||
// bulk-apply of the server-driven template catalog). residenceId scopes
|
||||
// which residence tasks get created against; fromOnboarding switches
|
||||
// analytics event names.
|
||||
@Serializable
|
||||
data class TaskTemplatesBrowserRoute(
|
||||
val residenceId: Int,
|
||||
val fromOnboarding: Boolean = false,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user