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) : NavEvent() object Logout : NavEvent() } @Singleton class NavigationManager @Inject constructor() { private val _events = MutableSharedFlow(extraBufferCapacity = 1) val events = _events fun navigateToChat(chatId: String) { _events.tryEmit(NavEvent.OpenChat(chatId)) } fun logout() { _events.tryEmit(NavEvent.Logout) } }