refactor: Clean up OnboardingScreen code for improved readability and maintainability

This commit is contained in:
k1ngsterr1
2026-01-20 03:06:06 +05:00
parent 6b1c84a7bc
commit 0c4c636823
4 changed files with 1327 additions and 580 deletions

View File

@@ -39,6 +39,7 @@ import com.rosetta.messenger.ui.chats.ChatsListScreen
import com.rosetta.messenger.ui.chats.SearchScreen
import com.rosetta.messenger.ui.components.OptimizedEmojiCache
import com.rosetta.messenger.ui.onboarding.OnboardingScreen
import com.rosetta.messenger.ui.settings.SettingsScreen
import com.rosetta.messenger.ui.splash.SplashScreen
import com.rosetta.messenger.ui.theme.RosettaAndroidTheme
import java.text.SimpleDateFormat
@@ -437,15 +438,18 @@ fun MainScreen(
// Навигация между экранами
var selectedUser by remember { mutableStateOf<SearchUser?>(null) }
var showSearchScreen by remember { mutableStateOf(false) }
var showSettingsScreen by remember { mutableStateOf(false) }
// 🔥 TELEGRAM-STYLE анимация - чистый slide БЕЗ прозрачности
AnimatedContent(
targetState = Triple(selectedUser, showSearchScreen, Unit),
targetState = Triple(selectedUser, showSearchScreen, showSettingsScreen),
transitionSpec = {
val isEnteringChat = targetState.first != null && initialState.first == null
val isExitingChat = targetState.first == null && initialState.first != null
val isEnteringSearch = targetState.second && !initialState.second
val isExitingSearch = !targetState.second && initialState.second
val isEnteringSettings = targetState.third && !initialState.third
val isExitingSettings = !targetState.third && initialState.third
when {
// 🚀 Вход в чат - плавный fade
@@ -478,6 +482,18 @@ fun MainScreen(
fadeOut(animationSpec = tween(150))
}
// ⚙️ Вход в Settings - плавный fade
isEnteringSettings -> {
fadeIn(animationSpec = tween(200)) togetherWith
fadeOut(animationSpec = tween(150))
}
// 🔙 Выход из Settings - плавный fade
isExitingSettings -> {
fadeIn(animationSpec = tween(200)) togetherWith
fadeOut(animationSpec = tween(150))
}
// Default - мгновенный переход
else -> {
EnterTransition.None togetherWith ExitTransition.None
@@ -485,7 +501,7 @@ fun MainScreen(
}
},
label = "screenNavigation"
) { (currentUser, isSearchOpen, _) ->
) { (currentUser, isSearchOpen, isSettingsOpen) ->
when {
currentUser != null -> {
// Экран чата
@@ -525,6 +541,41 @@ fun MainScreen(
}
)
}
isSettingsOpen -> {
// Экран настроек
SettingsScreen(
isDarkTheme = isDarkTheme,
accountName = accountName,
accountPhone = accountPhone,
accountPublicKey = accountPublicKey,
onBack = { showSettingsScreen = false },
onToggleTheme = onToggleTheme,
onProfileClick = {
// TODO: Navigate to profile editor
},
onPrivacySecurityClick = {
// TODO: Navigate to privacy settings
},
onNotificationsClick = {
// TODO: Navigate to notifications settings
},
onDataStorageClick = {
// TODO: Navigate to data storage settings
},
onChatSettingsClick = {
// TODO: Navigate to chat settings
},
onLanguageClick = {
// TODO: Navigate to language selection
},
onHelpClick = {
// TODO: Navigate to help center
},
onAboutClick = {
// TODO: Show about dialog
}
)
}
else -> {
// Список чатов
ChatsListScreen(
@@ -558,9 +609,7 @@ fun MainScreen(
online = 1
)
},
onSettingsClick = {
// TODO: Navigate to settings
},
onSettingsClick = { showSettingsScreen = true },
onInviteFriendsClick = {
// TODO: Share invite link
},