Приветствую, у меня возник вопрос при создании логики авто-логирования пользователя в приложении с помощью запроса на авторизацию в Firebase auth. Не получается скомпоновать логику запроса в бд и вызов composable графа, поскольку вызов из firebase - асинхронная операция и вызов графа срабатывает до инициализации startDestination
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
AppTheme {
val context = LocalContext.current
val auth: FirebaseAuth = Firebase.auth
// Сохраненные ранее данные для входа
val email = UserSharedPreferences.getEmail(context) ?: " "
val password = UserSharedPreferences.getPassword(context) ?: " "
// Граф перехода в зависимости от результата запроса
var startDestination: String? = null
// Запрос к Firebase auth
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener { task ->
startDestination = if (task.isSuccessful) {
UserSharedPreferences.saveCredentials(
context = context,
email = email,
password = password
)
Graph.HOME // Главное меню
} else {
Graph.AUTHENTICATION // Окно авторизации
}
}
// Вызов Composable граф
RootNavGraph(
navHostController = rememberNavController(),
startDestination = startDestination ?: Graph.AUTHENTICATION
)
}
}
}
Сам вызов графа писать в запрос к firebase auth нельзя т.к. отсутствует composable контекст, и на корутины код тоже жалуется. Может возникала у кого-то подобная ситуация? Был бы очень благодарен хоть за какую-то помощь