package core.utils import javax.inject.Inject import javax.inject.Singleton import kotlinx.coroutines.flow.MutableSharedFlow sealed class NavEvent { data class OpenChat(val chatId: String, val chatName: String = "Chat") : NavEvent() object Logout : NavEvent() } @Singleton class NavigationManager @Inject constructor() { private val _events = MutableSharedFlow(extraBufferCapacity = 1) val events = _events fun navigateToChat(chatId: String, chatName: String = "Chat") { _events.tryEmit(NavEvent.OpenChat(chatId, chatName)) } fun logout() { _events.tryEmit(NavEvent.Logout) } }